change brightness of unusable cards

This commit is contained in:
Alberto Xamin 2020-12-27 14:42:23 +01:00
parent 8261112b52
commit ed14d34f4b
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
9 changed files with 42 additions and 15 deletions

View File

@ -339,6 +339,7 @@ class Mancato(Card):
def play_card(self, player, against, _with=None):
import bang.characters as chars
if against != None and player.character.check(player.game, chars.CalamityJanet):
import bang.expansions.fistful_of_cards.card_events as ce
if player.has_played_bang and (not any([isinstance(c, Volcanic) for c in player.equipment]) or player.game.check_event(ce.Lazo)):
return False
import bang.expansions.high_noon.card_events as ceh

View File

@ -979,6 +979,7 @@ class Player:
self.play_turn(can_play_vendetta=False)
return
self.is_my_turn = False
self.has_played_bang = False
for i in range(len(self.equipment)):
if self.equipment[i].usable_next_turn and not self.equipment[i].can_be_used_now:
self.equipment[i].can_be_used_now = True

View File

@ -36,6 +36,7 @@ export default {
data: () => ({
isConnected: false,
c: false,
showUpdateUI: false,
}),
computed: {
},

View File

@ -134,6 +134,9 @@ export default {
bottom: 20pt;
left: 3pt;
}
.cant-play {
filter: brightness(0.5);
}
@media (prefers-color-scheme: dark) {
:root, #app {
background-color: #181a1b;

View File

@ -2,7 +2,7 @@
<div class="chat">
<h3>{{$t("chat.chat")}}</h3>
<div id="chatbox">
<p style="margin:1pt;" class="chat-message" v-for="msg in messages" v-bind:key="msg" :style="`color:${msg.color}`">{{msg.text}}</p>
<p style="margin:1pt;" class="chat-message" v-for="(msg, i) in messages" v-bind:key="`${i}-c`" :style="`color:${msg.color}`">{{msg.text}}</p>
<p class="end">.</p>
</div>
<form @submit="sendChatMessage" id="msg-form">

View File

@ -2,7 +2,7 @@
<div id="overlay" class="center-stuff">
<h1>{{text}}</h1>
<div>
<Card v-for="c in cards" v-bind:key="c" :card="c" @click.native="select(c)" @pointerenter.native="showDesc(c)" @pointerleave.native="desc=''"/>
<Card v-for="(c, i) in cards" v-bind:key="i" :card="c" @click.native="select(c)" @pointerenter.native="showDesc(c)" @pointerleave.native="desc=''"/>
</div>
<p v-if="hintText">{{hintText}}</p>
<div style="margin-top:6pt;" class="button center-stuff" v-if="showCancelBtn" @click="cancel"><span>{{realCancelText}}</span></div>

View File

@ -5,7 +5,7 @@
<div v-if="eventCard" style="position:relative">
<div class="card fistful-of-cards" style="position:relative; bottom:-3pt;right:-3pt;"/>
<div class="card fistful-of-cards" style="position:absolute; bottom:-1.5pt;right:-1.5pt;"/>
<card :card="eventCard" :key="eventCard" :class="eventClasses" @click.native="event"/>
<card :card="eventCard" :key="eventCard.name" :class="eventClasses" @click.native="event"/>
</div>
<div style="position:relative">
<div class="card back" style="position:absolute; bottom:-3pt;right:-3pt;"/>
@ -15,12 +15,14 @@
<div style="position:relative;">
<card v-if="previousScrap" :card="previousScrap" style="top: 1.5pt;right: -1.5pt;"/>
<card v-else :card="card" class="back" style="opacity:0"/>
<card v-if="lastScrap" :card="lastScrap" :key="lastScrap" class="last-scrap" @click.native="action('scrap')"
<card v-if="lastScrap" :card="lastScrap" :key="lastScrap.name+lastScrap.number" class="last-scrap" @click.native="action('scrap')"
@pointerenter.native="desc=($i18n.locale=='it'?lastScrap.desc:lastScrap.desc_eng)" @pointerleave.native="desc=''" />
</div>
</div>
<transition name="list">
<p v-if="eventCard" class="center-stuff"><i>{{($i18n.locale=='it'?eventCard.desc:eventCard.desc_eng)}}</i></p>
</transition>
<transition name="list">
<p v-if="desc" class="center-stuff"><i>{{desc}}</i></p>
</transition>
</div>

View File

@ -17,11 +17,11 @@
<!-- <div style="position: relative;width:260pt;height:400pt;"> -->
<div v-for="p in playersTable" v-bind:key="p.card.name" style="position:relative;">
<transition-group v-if="p.max_lives && !p.is_ghost" name="list" tag="div" class="tiny-health">
<span v-for="(n, i) in p.lives" v-bind:key="n" :alt="i"></span>
<span v-for="(n, i) in (p.max_lives-p.lives)" v-bind:key="n" :alt="i">💀</span>
<span v-for="(n, i) in p.lives" v-bind:key="i" :alt="i"></span>
<span v-for="(n, i) in (p.max_lives-p.lives)" v-bind:key="`${i}-sk`" :alt="i">💀</span>
</transition-group>
<div v-else-if="p.is_ghost" class="tiny-health">
<span :alt="i">👻</span>
<span>👻</span>
</div>
<Card :card="p.card" :class="{is_my_turn:p.is_my_turn}"/>
<Card v-if="p.character" :card="p.character" class="character tiny-character" @click.native="selectedInfo = [p.character]"/>
@ -32,7 +32,7 @@
<Card v-for="card in p.equipment" v-bind:key="card.name+card.number" :card="card" @click.native="selectedInfo = p.equipment"/>
</div>
<div v-if="p.is_bot" style="position:absolute;top:32%;left:50%;right:50%" class="tiny-health">
<span :alt="i">🤖</span>
<span>🤖</span>
</div>
</div>
<!-- :style="p.style"/> -->

View File

@ -8,13 +8,13 @@
<Card v-if="character" :card="character" style="margin-left: -30pt;margin-right: 0pt;"
@pointerenter.native="desc=($i18n.locale=='it'?character.desc:character.desc_eng)" @pointerleave.native="desc=''"/>
<transition-group name="list" tag="div" style="display: flex;flex-direction:column; justify-content: space-evenly; margin-left: 12pt;margin-right:-10pt;">
<span v-for="(n, i) in lives" v-bind:key="n" :alt="i"></span>
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="n" :alt="i">💀</span>
<span v-for="(n, i) in lives" v-bind:key="i" :alt="i"></span>
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="`${i}-sk`" :alt="i">💀</span>
</transition-group>
<transition-group v-if="lives > 0 || is_ghost" name="list" tag="div" style="margin: 0 0 0 10pt; display:flex;">
<Card v-for="card in equipment" v-bind:key="card.name+card.number" :card="card"
@pointerenter.native="desc=($i18n.locale=='it'?card.desc:card.desc_eng)" @pointerleave.native="desc=''"
@click.native="play_card(card, true)" />
@click.native="play_card(card, true)" :class="{'cant-play':(eventCard && eventCard.name == 'Lazo')}"/>
</transition-group>
</div>
<transition name="list">
@ -27,9 +27,10 @@
<div v-if="lives > 0 || is_ghost" style="position:relative">
<span id="hand_text">{{$t('hand')}}</span>
<transition-group name="list" tag="div" class="hand">
<Card v-for="card in hand" v-bind:key="card.name+card.number" :card="card"
<Card v-for="(card, i) in handComputed" v-bind:key="i+card.name+card.number" :card="card"
@click.native="play_card(card, false)"
@pointerenter.native="hint=($i18n.locale=='it'?card.desc:card.desc_eng)" @pointerleave.native="hint=''"/>
@pointerenter.native="hint=($i18n.locale=='it'?card.desc:card.desc_eng)" @pointerleave.native="hint=''"
:class="{'cant-play':card.cantBePlayed}"/>
</transition-group>
</div>
<transition name="list">
@ -109,6 +110,7 @@ export default {
mancato_needed: 0,
is_ghost: false,
name: '',
eventCard: false,
}),
sockets: {
role(role) {
@ -163,7 +165,10 @@ export default {
setTimeout(function(){
this.notifycard = null
}.bind(this), 4000)
}
},
event_card(card) {
this.eventCard = card
},
},
computed:{
respondText() {
@ -237,6 +242,20 @@ export default {
cc.push(x)
})
return cc
},
handComputed() {
return this.hand.map(x=> {
let cantBePlayed = false
let calamity_special = (x.name === 'Mancato!' && this.character.name === 'Calamity Janet')
let cant_play_bang = (this.has_played_bang && this.equipment.filter(x => x.name == 'Volcanic').length == 0)
if ((x.name == 'Bang!' || (calamity_special && x.name=='Mancato!')) && (cant_play_bang || (this.eventCard && this.eventCard.name == "Sermone"))) cantBePlayed = true;
else if (this.eventCard && this.eventCard.name == "Il Giudice" && (x.is_equipment || !x.can_be_used_now)) cantBePlayed = true;
else if (this.eventCard && this.eventCard.name == "Il Reverendo" && (x.name == "Birra")) cantBePlayed = true;
return {
...x,
cantBePlayed: cantBePlayed
}
})
}
},
methods: {
@ -331,7 +350,7 @@ export default {
this.card_with = null
},
really_play_card(card, against) {
let res = this.hand.indexOf(card)
let res = this.handComputed.indexOf(card)
if (res === -1) {
res = this.equipment.indexOf(card)
if (res !== -1) res += this.hand.length