distribute roles before available characters
This commit is contained in:
parent
5f91829907
commit
5907379db8
@ -64,7 +64,13 @@ class Game:
|
||||
self.readyCount += 1
|
||||
self.notify_room()
|
||||
if self.readyCount == len(self.players):
|
||||
self.distribute_roles()
|
||||
for i in range(len(self.players)):
|
||||
self.sio.emit('chat_message', room=self.name, data=f'{self.players[i].name} ha come personaggio {self.players[i].character.name}, la sua abilità speciale è: {self.players[i].character.desc}')
|
||||
self.players[i].prepare()
|
||||
for k in range(self.players[i].max_lives):
|
||||
self.players[i].hand.append(self.deck.draw())
|
||||
self.players[i].notify_self()
|
||||
self.players[self.turn].play_turn()
|
||||
|
||||
def choose_characters(self):
|
||||
char_cards = random.sample(characters.all_characters(), len(self.players)*2)
|
||||
@ -81,6 +87,7 @@ class Game:
|
||||
self.started = True
|
||||
self.deck = Deck(self)
|
||||
self.initial_players = len(self.players)
|
||||
self.distribute_roles()
|
||||
self.choose_characters()
|
||||
|
||||
def distribute_roles(self):
|
||||
@ -96,17 +103,12 @@ class Game:
|
||||
available_roles = available_roles[:len(self.players)]
|
||||
random.shuffle(available_roles)
|
||||
for i in range(len(self.players)):
|
||||
self.sio.emit('chat_message', room=self.name, data=f'{self.players[i].name} ha come personaggio {self.players[i].character.name}, la sua abilità speciale è: {self.players[i].character.desc}')
|
||||
self.players[i].set_role(available_roles[i])
|
||||
if isinstance(available_roles[i], roles.Sheriff) or (len(available_roles) == 3 and isinstance(available_roles[i], roles.Vice)):
|
||||
if isinstance(available_roles[i], roles.Sheriff):
|
||||
self.sio.emit('chat_message', room=self.name, data=f'{self.players[i].name} È lo sceriffo')
|
||||
self.turn = i
|
||||
self.players[i].prepare()
|
||||
for k in range(self.players[i].max_lives):
|
||||
self.players[i].hand.append(self.deck.draw())
|
||||
self.players[i].notify_self()
|
||||
self.play_turn()
|
||||
|
||||
def attack_others(self, attacker: players.Player):
|
||||
attacker.pending_action = players.PendingAction.WAIT
|
||||
|
@ -39,7 +39,6 @@
|
||||
<chat/>
|
||||
<Chooser v-if="selectedInfo" :text="$t('details')" :cards="selectedInfo" :cancelText="$t('ok')" :cancel="()=>{selectedInfo = null}" :select="()=>{selectedInfo = null}"/>
|
||||
<transition name="bounce">
|
||||
<Chooser v-if="showChooser" :text="$t('choose_character')" :cards="availableCharacters" :select="setCharacter"/>
|
||||
<Chooser v-if="hasToChoose" :text="`${$t('choose_card')}${target_p?$t('choose_card_from') + target_p:''}`" :cards="chooseCards" :select="chooseCard"/>
|
||||
</transition>
|
||||
</div>
|
||||
@ -74,7 +73,6 @@ export default {
|
||||
players: [],
|
||||
messages: [],
|
||||
distances: {},
|
||||
availableCharacters: [],
|
||||
self: {},
|
||||
hasToChoose: false,
|
||||
target_p: '',
|
||||
@ -99,9 +97,6 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
characters(data) {
|
||||
this.availableCharacters = JSON.parse(data)
|
||||
},
|
||||
start() {
|
||||
this.started = true;
|
||||
},
|
||||
@ -130,9 +125,6 @@ export default {
|
||||
}
|
||||
return null;
|
||||
},
|
||||
showChooser() {
|
||||
return this.availableCharacters.length > 0;
|
||||
},
|
||||
playersTable() {
|
||||
console.log('update players')
|
||||
return this.players.map((x,i) => {
|
||||
@ -174,10 +166,6 @@ export default {
|
||||
this.started = true;
|
||||
this.$socket.emit('start_game')
|
||||
},
|
||||
setCharacter(char) {
|
||||
this.availableCharacters = []
|
||||
this.$socket.emit('set_character', char.name)
|
||||
},
|
||||
choose(player_name) {
|
||||
console.log('choose from' + player_name)
|
||||
this.target_p = player_name
|
||||
|
@ -33,6 +33,7 @@
|
||||
<Chooser v-if="show_role" :text="$t('you_are')" :cards="[my_role]" :hintText="my_role.goal" :select="() => {show_role=false}" :cancel="() => {show_role=false}" :cancelText="$t('ok')" />
|
||||
<Chooser v-if="notifycard" :key="notifycard.card" :text="`${notifycard.player} ${$t('did_pick_as')}:`" :cards="[notifycard.card]" :hintText="$t('if_card_red')" class="turn-notify-4s"/>
|
||||
<Chooser v-if="!show_role && is_my_turn && pending_action < 2" :text="$t('play_your_turn')" :key="is_my_turn" class="turn-notify" />
|
||||
<Chooser v-if="!show_role && availableCharacters.length > 0" :text="$t('choose_character')" :cards="availableCharacters" :select="setCharacter"/>
|
||||
<Chooser v-if="hasToPickResponse" :text="`${$t('pick_a_card')} ${attacker?($t('to_defend_from')+' '+attacker):''}`" :key="hasToPickResponse" class="turn-notify" />
|
||||
<Chooser v-if="!card_against && card_with" :text="`${$t('choose_scarp_card_to')} ${card_with.name.toUpperCase()}`" :cards="hand.filter(x => x !== card_with)" :select="selectWith" :cancel="()=>{card_with = null}"/>
|
||||
<Chooser v-if="showScrapScreen" :text="`${$t('discard')} ${hand.length}/${lives}`" :cards="hand" :select="scrap" :cancel="cancelEndingTurn"/>
|
||||
@ -60,6 +61,7 @@ export default {
|
||||
data: () => ({
|
||||
my_role: null,
|
||||
character: null,
|
||||
availableCharacters: [],
|
||||
equipment: [],
|
||||
hand: [],
|
||||
lives: 0,
|
||||
@ -93,6 +95,9 @@ export default {
|
||||
this.my_role.is_back = true
|
||||
this.show_role = true
|
||||
},
|
||||
characters(data) {
|
||||
this.availableCharacters = JSON.parse(data)
|
||||
},
|
||||
self(self) {
|
||||
self = JSON.parse(self)
|
||||
this.name = self.name
|
||||
@ -190,6 +195,10 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
setCharacter(char) {
|
||||
this.availableCharacters = []
|
||||
this.$socket.emit('set_character', char.name)
|
||||
},
|
||||
sidScrap(c) {
|
||||
this.sidScrapForHealth.push(this.hand.indexOf(c))
|
||||
if (this.sidScrapForHealth.length == 2) {
|
||||
|
Loading…
Reference in New Issue
Block a user