join games that you disconnected and spectate
This commit is contained in:
parent
e48236727c
commit
8157727972
@ -58,6 +58,25 @@ def get_me(sid, room):
|
|||||||
de_games = [g for g in games if g.name == room['name']]
|
de_games = [g for g in games if g.name == room['name']]
|
||||||
if len(de_games) == 1 and not de_games[0].started:
|
if len(de_games) == 1 and not de_games[0].started:
|
||||||
join_room(sid, room)
|
join_room(sid, room)
|
||||||
|
elif len(de_games) == 1 and de_games[0].started:
|
||||||
|
print('room exists')
|
||||||
|
if room['username'] != None and any([p.name == room['username'] for p in de_games[0].players if p.is_bot]):
|
||||||
|
print('getting inside the bot')
|
||||||
|
bot = [p for p in de_games[0].players if p.is_bot][0]
|
||||||
|
bot.sid = sid
|
||||||
|
bot.is_bot = False
|
||||||
|
sio.enter_room(sid, de_games[0].name)
|
||||||
|
sio.save_session(sid, bot)
|
||||||
|
de_games[0].notify_room(sid)
|
||||||
|
eventlet.sleep(0.1)
|
||||||
|
de_games[0].notify_all()
|
||||||
|
sio.emit('role', room=sid, data=json.dumps(bot.role, default=lambda o: o.__dict__))
|
||||||
|
bot.notify_self()
|
||||||
|
else: #spectate
|
||||||
|
de_games[0].dead_players.append(sio.get_session(sid))
|
||||||
|
sio.get_session(sid).game = de_games[0]
|
||||||
|
sio.enter_room(sid, de_games[0].name)
|
||||||
|
de_games[0].notify_room(sid)
|
||||||
else:
|
else:
|
||||||
create_room(sid, room['name'])
|
create_room(sid, room['name'])
|
||||||
if sio.get_session(sid).game == None:
|
if sio.get_session(sid).game == None:
|
||||||
@ -69,7 +88,8 @@ def get_me(sid, room):
|
|||||||
else:
|
else:
|
||||||
sio.get_session(sid).name = room['username']
|
sio.get_session(sid).name = room['username']
|
||||||
sio.emit('me', data=sio.get_session(sid).name, room=sid)
|
sio.emit('me', data=sio.get_session(sid).name, room=sid)
|
||||||
sio.get_session(sid).game.notify_room()
|
if not sio.get_session(sid).game.started:
|
||||||
|
sio.get_session(sid).game.notify_room()
|
||||||
|
|
||||||
@sio.event
|
@sio.event
|
||||||
def disconnect(sid):
|
def disconnect(sid):
|
||||||
|
@ -27,9 +27,9 @@ class Game:
|
|||||||
self.is_competitive = False
|
self.is_competitive = False
|
||||||
self.disconnect_bot = True
|
self.disconnect_bot = True
|
||||||
|
|
||||||
def notify_room(self):
|
def notify_room(self, sid=None):
|
||||||
if len([p for p in self.players if p.character == None]) != 0:
|
if len([p for p in self.players if p.character == None]) != 0 or sid:
|
||||||
self.sio.emit('room', room=self.name, data={
|
self.sio.emit('room', room=self.name if not sid else sid, data={
|
||||||
'name': self.name,
|
'name': self.name,
|
||||||
'started': self.started,
|
'started': self.started,
|
||||||
'players': [{'name':p.name, 'ready': p.character != None} for p in self.players],
|
'players': [{'name':p.name, 'ready': p.character != None} for p in self.players],
|
||||||
|
Loading…
Reference in New Issue
Block a user