def join(room_id, name): room = rooms[room_id] join_room(room.id) player = room.new_player(name) sid_map[request.sid] = (room.id, player.id) current_app.logger.debug('(%s, %s) joined %s', player.id, player.name, player.id) emit('lobby-joined', (player.id, ut.serialize_player(room.players, ['id', 'name']))) emit('lobby-update', ut.serialize_player(room.players, ['id', 'name']), room=room.id)
def game_loop(game_room, current_app): app.logger.debug("%s's game loop started", game_room.id) with current_app.app_context(): while game_room.state != GameRoom.State.Finished: socketio.emit('game-update', ut.serialize_player(game_room.players, ['id','posx','posy']), room=game_room.id) app.logger.debug('update sent to %s', game_room.id) socketio.sleep(1) # 0 app.logger.debug("%s's game loop ended", game_room.id)
def on_disconnect(): room = rooms[sid_map[request.sid][0]] p_id = sid_map[request.sid][1] room.remove_player(p_id) leave_room(room.id) current_app.logger.info('Player %s left room %s', room.players[p_id].name, room.id) emit('lobby-update', ut.serialize_player(room.players, ['id', 'name']), room=room.id)
def game_loop(game_room): app.logger.debug("%s's game loop started", game_room.id) while game_room.state == GameRoom.State.Playing: socketio.emit( 'game-update', ut.serialize_player(game_room.players, ['id', 'posx', 'posy', 'velx', 'vely']), room=game_room.id) #app.logger.debug('update sent to %s', game_room.id) socketio.sleep(0.05) # 0 app.logger.debug("%s's game loop ended", game_room.id)
def start(): room_id, player_id = sid_map[request.sid] room = rooms[room_id] player = room.players[player_id] if player == room.owner and room.state == GameRoom.State.Lobby: room.spawn_players() emit('game-started', ut.serialize_player(room.players, ['id', 'posx', 'posy']), room=room_id) current_app.logger.debug('Starting server game loop for %s', room.id) socketio.start_background_task(game_loop, room, current_app._get_current_object()) else: current_app.logger.info( 'Attempt to start game %s by non-owner or a game not in Lobby state', room.id)