sid ketchum

This commit is contained in:
Alberto Xamin 2020-11-23 21:13:37 +01:00
parent 4ba53b2589
commit abff5e0500
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
4 changed files with 22 additions and 6 deletions

View File

@ -1,4 +1,5 @@
import json
from typing import List
import eventlet
import socketio
@ -10,7 +11,7 @@ app = socketio.WSGIApp(sio, static_files={
'/': {'content_type': 'text/html', 'filename': 'index.html'}
})
games = []
games: List[Game] = []
def advertise_lobbies():
sio.emit('lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players)} for g in games if not g.started])
@ -39,6 +40,8 @@ def disconnect(sid):
@sio.event
def create_room(sid, room_name):
while len([g for g in games if g.name == room_name]):
room_name += '_1'
sio.leave_room(sid, 'lobby')
sio.enter_room(sid, room_name)
g = Game(room_name, sio)
@ -53,6 +56,8 @@ def join_room(sid, room_name):
sio.leave_room(sid, 'lobby')
sio.enter_room(sid, room_name)
i = [g.name for g in games].index(room_name)
while len([p for p in games[i].players if p.name == sio.get_session(sid).name]):
sio.get_session(sid).name += '_1'
games[i].add_player(sio.get_session(sid))
advertise_lobbies()

View File

@ -87,6 +87,10 @@ class Player:
def notify_self(self):
if self.lives <= 0 and self.max_lives > 0:
print('dying, attacker', self.attacker)
if isinstance(self.character, characters.SidKetchum) and len(self.hand) > 1:
self.lives += 1
self.game.deck.scrap(self.hand.pop(randrange(0, len(self.hand))))
self.game.deck.scrap(self.hand.pop(randrange(0, len(self.hand))))
self.game.player_death(self)
if isinstance(self.character, characters.CalamityJanet):
self.expected_response = [cards.Mancato(0,0).name, cards.Bang(0,0).name]
@ -109,7 +113,8 @@ class Player:
def play_turn(self):
if self.lives == 0:
self.end_turn(forced=True)
return self.end_turn(forced=True)
self.scrapped_cards = 0
self.sio.emit('chat_message', room=self.game.name, data=f'È il turno di {self.name}.')
print(f'I {self.name} was notified that it is my turn')
self.was_shot = False
@ -463,6 +468,10 @@ class Player:
def scrap(self, card_index):
if self.is_my_turn or isinstance(self.character, characters.SidKetchum):
self.scrapped_cards += 1
if isinstance(self.character, characters.SidKetchum) and self.scrapped_cards == 2:
self.scrapped_cards = 0
self.lives = min(self.lives+1, self.max_lives)
self.game.deck.scrap(self.hand.pop(card_index))
self.notify_self()

View File

@ -26,7 +26,7 @@
<input type="submit" />
</form>
</div>
<Lobby :username="username" v-else/>
<Lobby v-show="isInLobby" :username="username" />
</div>
</div>
<div v-else class="center-stuff">
@ -83,6 +83,9 @@ export default {
},
lobbies(data) {
this.openLobbies = data;
},
room() {
this.isInLobby = true;
}
},
methods: {
@ -102,13 +105,11 @@ export default {
createLobby(e) {
if (this.lobbyName.trim().length > 0) {
this.$socket.emit('create_room', this.lobbyName)
this.isInLobby = true;
}
e.preventDefault();
},
joinLobby(lobby) {
this.$socket.emit('join_room', lobby.name)
this.isInLobby = true;
},
init() {
location.reload();

View File

@ -161,6 +161,7 @@ export default {
methods: {
end_turn(){
console.log('ending turn')
this.cancelEndingTurn()
this.$socket.emit('end_turn')
},
scrap(c) {
@ -251,7 +252,7 @@ export default {
}
.hand>.card:hover {
margin-right:35pt;
margin-top:-0.5pt;
transform: translateY(-15px);
}
.equipment-slot {
display:flex;