This commit is contained in:
Alberto Xamin 2020-11-28 15:04:22 +01:00
parent 0a50379447
commit c69e599554
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
3 changed files with 37 additions and 8 deletions

View File

@ -178,6 +178,21 @@ class Sombrero(Cappello):
self.name = 'Sombrero'
self.icon = '👒'
class Pugnale(Pugno):
def __init__(self, suit, number):
super().__init__(suit, number)
self.name = 'Pugnale'
self.icon = '🗡'
self.usable_next_turn = True
self.can_be_used_now = False
def play_card(self, player, against, _with=None):
if self.can_be_used_now:
return super().play_card(player, against=against)
else:
player.equipment.append(self)
return True
def get_starting_deck() -> List[Card]:
return [
#TODO: aggiungere anche le carte normalmente presenti https://bang.dvgiochi.com/cardslist.php?id=3
@ -212,5 +227,5 @@ def get_starting_deck() -> List[Card]:
PlaccaDiFerro(Suit.DIAMONDS, 'A'),
PlaccaDiFerro(Suit.SPADES, 'Q'),
Sombrero(Suit.CLUBS, 7),
Pugnale(Suit.HEARTS, 8),
]

View File

@ -249,22 +249,27 @@ class Player:
return s
def play_card(self, hand_index: int, against=None, _with=None):
if not (0 <= hand_index < len(self.hand)):
if not (0 <= hand_index < len(self.hand) + len(self.equipment)):
print('illegal')
return
card: cs.Card = self.hand.pop(hand_index)
card: cs.Card = self.hand.pop(hand_index) if hand_index < len(self.hand) else self.equipment.pop(hand_index-len(self.hand))
withCard: cs.Card = None
if _with != None:
withCard = self.hand.pop(_with) if hand_index > _with else self.hand.pop(_with - 1)
print(self.name, 'is playing ', card, ' against:', against, ' with:', _with)
did_play_card = card.play_card(self, against, withCard)
if not card.is_equipment:
if not card.is_equipment and not card.usable_next_turn:
if did_play_card:
self.game.deck.scrap(card)
else:
self.hand.insert(hand_index, card)
if withCard:
self.hand.insert(_with, withCard)
elif card.usable_next_turn and card.can_be_used_now:
if did_play_card:
self.game.deck.scrap(card)
else:
self.equipment.insert(hand_index-len(self.hand), card)
self.notify_self()
def choose(self, card_index):

View File

@ -12,7 +12,9 @@
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="n" :alt="i">💀</span>
</transition-group>
<transition-group v-if="lives > 0" 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=card.desc" @pointerleave.native="desc=''" />
<Card v-for="card in equipment" v-bind:key="card.name+card.number" :card="card"
@pointerenter.native="desc=card.desc" @pointerleave.native="desc=''"
@click.native="play_card(card, true)" />
</transition-group>
</div>
<transition name="list">
@ -22,7 +24,7 @@
<span>{{$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"
@click.native="play_card(card)"
@click.native="play_card(card, false)"
@pointerenter.native="hint=card.desc" @pointerleave.native="hint=''"/>
</transition-group>
</div>
@ -223,7 +225,9 @@ export default {
scrap(c) {
this.$socket.emit('scrap', this.hand.indexOf(c))
},
play_card(card) {
play_card(card, from_equipment) {
if (from_equipment && (!card.usable_next_turn || !card.can_be_used_now)) return;
else if (card.usable_next_turn && !card.can_be_used_now) return this.really_play_card(card, null);
let calamity_special = (card.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 (this.pending_action == 2) {
@ -276,8 +280,13 @@ export default {
this.card_with = null
},
really_play_card(card, against) {
let res = this.hand.indexOf(card)
if (res === -1) {
res = this.equipment.indexOf(card)
if (res !== -1) res += this.hand.length
}
let card_data = {
index: this.hand.indexOf(card),
index: res,
against: against,
with: this.hand.indexOf(this.card_with) > -1 ? this.hand.indexOf(this.card_with):null,
}