toggle espansione

This commit is contained in:
Alberto Xamin 2020-11-26 16:58:27 +01:00
parent 24f7a68024
commit 7ba1b0c7b9
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
3 changed files with 37 additions and 4 deletions

View File

@ -69,6 +69,11 @@ def private(sid):
g.set_private() g.set_private()
advertise_lobbies() advertise_lobbies()
@sio.event
def toggle_expansion(sid, expansion_name):
g = sio.get_session(sid).game
g.toggle_expansion(expansion_name)
@sio.event @sio.event
def join_room(sid, room): def join_room(sid, room):
room_name = room['name'] room_name = room['name']

View File

@ -22,13 +22,31 @@ class Game:
self.password = '' self.password = ''
self.expansions = [] self.expansions = []
def notify_room(self):
self.sio.emit('room', room=self.name, data={
'name': self.name,
'started': self.started,
'players': [{'name':p.name, 'ready': False} for p in self.players],
'password': self.password,
'expansions': self.expansions,
})
def toggle_expansion(self, expansion_name):
if not self.started:
print('toggling', expansion_name)
if expansion_name in self.expansions:
self.expansions.remove(expansion_name)
else:
self.expansions.append(expansion_name)
self.notify_room()
def add_player(self, player: players.Player): def add_player(self, player: players.Player):
if player in self.players or len(self.players) >= 7: if player in self.players or len(self.players) >= 7:
return return
player.join_game(self) player.join_game(self)
self.players.append(player) self.players.append(player)
print(f'Added player {player.name} to game') print(f'Added player {player.name} to game')
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [{'name':p.name, 'ready': False} for p in self.players], 'password': self.password}) self.notify_room()
self.sio.emit('chat_message', room=self.name, data=f'{player.name} è entrato nella lobby.') self.sio.emit('chat_message', room=self.name, data=f'{player.name} è entrato nella lobby.')
def set_private(self): def set_private(self):
@ -37,11 +55,11 @@ class Game:
print(self.name, 'is now private pwd', self.password) print(self.name, 'is now private pwd', self.password)
else: else:
self.password = '' self.password = ''
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [{'name':p.name, 'ready': False} for p in self.players], 'password': self.password}) self.notify_room()
def notify_character_selection(self): def notify_character_selection(self):
self.readyCount += 1 self.readyCount += 1
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [{'name':p.name, 'ready': p.character!=None} for p in self.players], 'password': self.password}) self.notify_room()
if self.readyCount == len(self.players): if self.readyCount == len(self.players):
self.distribute_roles() self.distribute_roles()
@ -214,7 +232,7 @@ class Game:
if self.started and index <= self.turn: if self.started and index <= self.turn:
self.turn -= 1 self.turn -= 1
self.players.pop(index) self.players.pop(index)
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [p.name for p in self.players]}) self.notify_room()
self.sio.emit('chat_message', room=self.name, data=f'{player.name} è morto.') self.sio.emit('chat_message', room=self.name, data=f'{player.name} è morto.')
if self.started: if self.started:
self.sio.emit('chat_message', room=self.name, data=f'{player.name} era {player.role.name}!') self.sio.emit('chat_message', room=self.name, data=f'{player.name} era {player.role.name}!')

View File

@ -27,6 +27,10 @@
<!-- :style="p.style"/> --> <!-- :style="p.style"/> -->
<!-- </div> --> <!-- </div> -->
</div> </div>
<div v-if="!started">
<h3>Espansioni</h3>
<PrettyCheck @click.native="toggleExpansions('dodge_city')" :disabled="!isRoomOwner" v-model="useDodgeCity" class="p-switch p-fill" style="margin-top:5px; margin-bottom:3px;">Dodge City</PrettyCheck>
</div>
<div v-if="started"> <div v-if="started">
<deck :endTurnAction="()=>{wantsToEndTurn = true}"/> <deck :endTurnAction="()=>{wantsToEndTurn = true}"/>
<player :isEndingTurn="wantsToEndTurn" :cancelEndingTurn="()=>{wantsToEndTurn = false}" :chooseCardFromPlayer="choose"/> <player :isEndingTurn="wantsToEndTurn" :cancelEndingTurn="()=>{wantsToEndTurn = false}" :chooseCardFromPlayer="choose"/>
@ -78,12 +82,14 @@ export default {
selectedInfo: null, selectedInfo: null,
privateRoom: false, privateRoom: false,
password: '', password: '',
useDodgeCity: false,
}), }),
sockets: { sockets: {
room(data) { room(data) {
this.lobbyName = data.name this.lobbyName = data.name
this.started = data.started this.started = data.started
this.password = data.password this.password = data.password
this.useDodgeCity = data.expansions.indexOf('dodge_city') !== -1
this.players = data.players.map(x => { this.players = data.players.map(x => {
return { return {
name: x.name, name: x.name,
@ -141,6 +147,10 @@ export default {
} }
}, },
methods: { methods: {
toggleExpansions(name) {
if (!this.isRoomOwner) return;
this.$socket.emit('toggle_expansion', name)
},
getActionEmoji(p) { getActionEmoji(p) {
if (p.is_my_turn === undefined || p.pending_action === undefined) return ''; if (p.is_my_turn === undefined || p.pending_action === undefined) return '';
if (p.pending_action != 4) { if (p.pending_action != 4) {