def hold_vote(self): parent_game = wwss.game.Game(self.g_id) parent_game.change_state("voting") callback_handle = IOLoop.current().call_later(8, Event.vote_result, parent_game.g_id, self.e_id) self.voting_callback_reference = callback_handler.add_callback(self.e_id, callback_handle) self.save()
def hold_vote(self): parent_game = wwss.game.Game(self.g_id) parent_game.change_state("voting") callback_handle = IOLoop.current().call_later(8, Event.vote_result, parent_game.g_id, self.e_id) self.voting_callback_reference = callback_handler.add_callback( self.e_id, callback_handle) self.save()
def remove_player(self, leaving_p_id=None, leaving_player=None): try: if leaving_p_id: leaving_player = self.get_groups([leaving_p_id], expected_count=1) log_handler.log( log_type = "WARNING", log_code = "Game", log_message = "If iterating through and deleting players, you must shallow copy it first!", log_detail = 10, context_id = self.g_id ) else: leaving_p_id = leaving_player.p_id leaving_player = self.get_groups([leaving_p_id], expected_count=1) except AssertionError: log_handler.log( log_type = "ERROR", log_code = "Game", log_message = "Couldn't find exactly one player with p_id "+leaving_p_id+" in this game", log_detail = 3, context_id = self.g_id ) return for ingame_player in self.get_players(): if leaving_player != ingame_player: leaving_player.lose_info(None, info_player=ingame_player, lose_all=True) ingame_player.lose_info(None, info_player=leaving_player, lose_all=True) while leaving_p_id in self.players: self.players.remove(leaving_p_id) leaving_player.leave_game() log_handler.log( log_type = "INFO", log_code = "Game", log_message = "Player ("+leaving_p_id+") has beem removed from this game", log_detail = 5, context_id = self.g_id ) log_handler.log( log_type = "INFO", log_code = "Player", log_message = "This player has left the game ("+self.g_id+")", log_detail = 4, context_id = leaving_p_id ) # if there are no players left, initiate countdown for redis cleanup, unless there's already a callback for its deletion if len(self.players) == 0 and not hasattr(self, 'redis_cleanup_callback_reference') or (hasattr(self, 'redis_cleanup_callback_reference') and not self.redis_cleanup_callback_reference): callback_handle = IOLoop.current().call_later(10, self.redis_cleanup) # self works here because the data the cleanup needs should not change self.redis_cleanup_callback_reference = callback_handler.add_callback(self.g_id, callback_handle) log_handler.log( log_type = "INFO", log_code = "Redis", log_message = "Initiating game deletion in 10 seconds", log_detail = 5, context_id = self.g_id ) self.save()