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