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): def play_card(self, player, against, _with=None):
import bang.characters as chars import bang.characters as chars
if against != None and player.character.check(player.game, chars.CalamityJanet): 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)): 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 return False
import bang.expansions.high_noon.card_events as ceh import bang.expansions.high_noon.card_events as ceh

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@
<div class="chat"> <div class="chat">
<h3>{{$t("chat.chat")}}</h3> <h3>{{$t("chat.chat")}}</h3>
<div id="chatbox"> <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> <p class="end">.</p>
</div> </div>
<form @submit="sendChatMessage" id="msg-form"> <form @submit="sendChatMessage" id="msg-form">

View File

@ -2,7 +2,7 @@
<div id="overlay" class="center-stuff"> <div id="overlay" class="center-stuff">
<h1>{{text}}</h1> <h1>{{text}}</h1>
<div> <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> </div>
<p v-if="hintText">{{hintText}}</p> <p v-if="hintText">{{hintText}}</p>
<div style="margin-top:6pt;" class="button center-stuff" v-if="showCancelBtn" @click="cancel"><span>{{realCancelText}}</span></div> <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 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:relative; bottom:-3pt;right:-3pt;"/>
<div class="card fistful-of-cards" style="position:absolute; bottom:-1.5pt;right:-1.5pt;"/> <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>
<div style="position:relative"> <div style="position:relative">
<div class="card back" style="position:absolute; bottom:-3pt;right:-3pt;"/> <div class="card back" style="position:absolute; bottom:-3pt;right:-3pt;"/>
@ -15,12 +15,14 @@
<div style="position:relative;"> <div style="position:relative;">
<card v-if="previousScrap" :card="previousScrap" style="top: 1.5pt;right: -1.5pt;"/> <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-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=''" /> @pointerenter.native="desc=($i18n.locale=='it'?lastScrap.desc:lastScrap.desc_eng)" @pointerleave.native="desc=''" />
</div> </div>
</div> </div>
<transition name="list"> <transition name="list">
<p v-if="eventCard" class="center-stuff"><i>{{($i18n.locale=='it'?eventCard.desc:eventCard.desc_eng)}}</i></p> <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> <p v-if="desc" class="center-stuff"><i>{{desc}}</i></p>
</transition> </transition>
</div> </div>

View File

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

View File

@ -8,13 +8,13 @@
<Card v-if="character" :card="character" style="margin-left: -30pt;margin-right: 0pt;" <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=''"/> @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;"> <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 lives" v-bind:key="i" :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 (max_lives-lives)" v-bind:key="`${i}-sk`" :alt="i">💀</span>
</transition-group> </transition-group>
<transition-group v-if="lives > 0 || is_ghost" name="list" tag="div" style="margin: 0 0 0 10pt; display:flex;"> <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" <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=''" @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> </transition-group>
</div> </div>
<transition name="list"> <transition name="list">
@ -27,9 +27,10 @@
<div v-if="lives > 0 || is_ghost" style="position:relative"> <div v-if="lives > 0 || is_ghost" style="position:relative">
<span id="hand_text">{{$t('hand')}}</span> <span id="hand_text">{{$t('hand')}}</span>
<transition-group name="list" tag="div" class="hand"> <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)" @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> </transition-group>
</div> </div>
<transition name="list"> <transition name="list">
@ -109,6 +110,7 @@ export default {
mancato_needed: 0, mancato_needed: 0,
is_ghost: false, is_ghost: false,
name: '', name: '',
eventCard: false,
}), }),
sockets: { sockets: {
role(role) { role(role) {
@ -163,7 +165,10 @@ export default {
setTimeout(function(){ setTimeout(function(){
this.notifycard = null this.notifycard = null
}.bind(this), 4000) }.bind(this), 4000)
} },
event_card(card) {
this.eventCard = card
},
}, },
computed:{ computed:{
respondText() { respondText() {
@ -237,6 +242,20 @@ export default {
cc.push(x) cc.push(x)
}) })
return cc 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: { methods: {
@ -331,7 +350,7 @@ export default {
this.card_with = null this.card_with = null
}, },
really_play_card(card, against) { really_play_card(card, against) {
let res = this.hand.indexOf(card) let res = this.handComputed.indexOf(card)
if (res === -1) { if (res === -1) {
res = this.equipment.indexOf(card) res = this.equipment.indexOf(card)
if (res !== -1) res += this.hand.length if (res !== -1) res += this.hand.length