コード例 #1
0
ファイル: lobby.py プロジェクト: rskwan/lobbypy-heroku
 def on_join(self, lobby_id):
     """Join lobby"""
     lobby = Lobby.query.get(lobby_id)
     if g.player:
         # Leave or delete old lobbies
         lobby_deletes = leave_or_delete_all_lobbies(g.player)
         lobby.join(g.player)
         db.session.commit()
         # Broadcast update to the joined lobby and lobby listing
         self.broadcast_event('/lobby/', 'update',
                 make_lobby_item_dict(lobby))
         self.broadcast_event('/lobby/%d' % lobby_id, 'update',
                 make_lobby_dict(lobby))
         # Send leave or deletes
         [self.broadcast_leave_or_delete(*l_d) for l_d in lobby_deletes]
         # Update ACL
         self.add_acl_method('on_set_team')
         self.del_acl_method('on_create_lobby')
         self.del_acl_method('on_join')
         if lobby.owner == g.player:
             self.add_acl_method('on_kick')
             self.add_acl_method('on_set_lobby_name')
             self.add_acl_method('on_set_team_name')
     self.add_acl_method('on_leave')
     # Set lobby id and start listening on redis
     self.lobby_id = lobby_id
     self.subscribe('/lobby/%d' % lobby_id)
     current_app.logger.info('Player %s joined Lobby %d', (g.player.id if
         g.player else 'Anonymous', lobby_id))
     return True, make_lobby_dict(lobby)
コード例 #2
0
ファイル: lobby.py プロジェクト: marslabtron/lobbypy-heroku
 def on_join(self, lobby_id):
     """Join lobby"""
     lobby_id = int(lobby_id)
     lobby = Lobby.query.get(lobby_id)
     if g.player:
         # Leave or delete old lobbies
         lobby_deletes = leave_or_delete_all_lobbies(g.player)
         lobby.join(g.player)
         db.session.commit()
         # Broadcast update to the joined lobby and lobby listing
         self.broadcast_event('/lobby/', 'update',
                 make_lobby_item_dict(lobby))
         self.broadcast_event('/lobby/%d' % lobby_id, 'update',
                 make_lobby_dict(lobby))
         # Send leave or deletes
         [self.broadcast_leave_or_delete(*l_d) for l_d in lobby_deletes]
         # Update ACL
         self.add_acl_method('on_set_team')
         self.del_acl_method('on_create_lobby')
         self.del_acl_method('on_join')
         if lobby.owner == g.player:
             self.add_acl_method('on_kick')
             self.add_acl_method('on_set_lobby_name')
             self.add_acl_method('on_set_team_name')
     self.add_acl_method('on_leave')
     # Set lobby id and start listening on redis
     self.lobby_id = lobby_id
     self.subscribe('/lobby/%d' % lobby_id)
     current_app.logger.info('Player %s joined Lobby %d', (g.player.id if
         g.player else 'Anonymous', lobby_id))
     return True, make_lobby_dict(lobby)
コード例 #3
0
ファイル: lobby.py プロジェクト: marslabtron/lobbypy-heroku
 def on_create_lobby(self, name, server_address, rcon_password, game_map,
         game_type):
     """Create and join lobby"""
     assert g.player
     assert not self.lobby_id
     # Check server
     if current_app.config.get('RCON_CHECK_SERVER', True):
         try:
             sr = connect_rcon(server_address, rcon_password)
             sq = connect_query(server_address)
         except RconException:
             return False, 'bad_rcon_pass'
         except Exception:
             return False, 'server_error'
         else:
             if not check_map(sr):
                 return False, 'map_dne'
             # TODO: ask if you want to kick players
             if not check_players(sq):
                 return False, 'players'
             sr.close()
             sq.close()
     # Leave or delete old lobbies
     lobby_deletes = leave_or_delete_all_lobbies(g.player)
     # TODO: pull/generate password from list
     if game_type == 'highlander':
         lobby = HighlanderLobby(name, g.player, server_address, game_map, 'password')
     elif game_type == 'sixes':
         lobby = SixesLobby(name, g.player, server_address, game_map, 'password')
     else:
         return False, 'bad_game_type'
     lobby.join(g.player)
     db.session.add(lobby)
     db.session.commit()
     # Send event to redis
     self.broadcast_event('/lobby/', 'create', make_lobby_item_dict(lobby))
     # Send leave or deletes
     [self.broadcast_leave_or_delete(*l_d) for l_d in lobby_deletes]
     # Update ACL
     self.add_acl_method('on_set_team')
     self.add_acl_method('on_leave')
     self.del_acl_method('on_create_lobby')
     self.del_acl_method('on_join')
     self.add_acl_method('on_kick')
     self.add_acl_method('on_set_lobby_name')
     self.add_acl_method('on_set_team_name')
     # Set lobby id and start listening on redis
     self.lobby_id = lobby.id
     self.subscribe('/lobby/%d' % lobby.id)
     current_app.logger.info('Player: %d created Lobby %d' % (g.player.id,
         lobby.id))
     return True, lobby.id
コード例 #4
0
 def _callFUT(self, player):
     from lobbypy.controllers import leave_or_delete_all_lobbies
     return leave_or_delete_all_lobbies(player)