def _pack_query_melee_response(self, proxy, data, melee, melee_matcher, mails, req, timer): """构造返回 args: mails : list(MailInfo) Returns: res[protobuf]: 向客户端的返回的响应 """ res = arena_pb2.QueryArenaInfoRes() res.status = 0 pack.pack_melee_info(data.user.get(True), melee, res.arena_info, timer.now, melee_matcher.rank) if melee.is_arena_active(timer.now): #胜场奖励 if melee.is_able_to_get_win_num_reward(): pack.pack_arena_reward_info(melee, res.arena_info.win_num_reward) #对手信息 rivals_id = melee.generate_arena_rivals_id() for rival_id in rivals_id: rival = data.rival_list.get(rival_id, True) pack.pack_melee_player(rival, res.arena_info.rivals.add()) #对战记录 record_list = data.melee_record_list.get_all(True) for record in record_list: pack.pack_arena_record(record, res.arena_info.records.add()) for mail in mails: pack.pack_mail_info(mail, res.mails.add(), timer.now) defer = DataBase().commit(data) defer.addCallback(self._query_melee_succeed, req, res, timer) return defer
def _pack_update_arena_response(self, proxy, data, arena, arena_matcher, mails, last_battle_win, req, timer): """构造返回 args: Returns: res[protobuf]: 向客户端的返回的响应 """ res = arena_pb2.QueryArenaInfoRes() res.status = 0 pack.pack_arena_info(data.user.get(True), arena, res.arena_info, timer.now, arena_matcher.rank) if arena.is_arena_active(timer.now): #胜场奖励 if arena.is_able_to_get_win_num_reward(): pack.pack_arena_reward_info(arena, res.arena_info.win_num_reward) #if last_battle_win: # #对手信息 # rivals_id = arena.generate_arena_rivals_id() # for rival_id in rivals_id: # rival = data.rival_list.get(rival_id, True) # if rival is not None: # pack.pack_arena_player(rival, res.arena_info.rivals.add()) for mail in mails: pack.pack_mail_info(mail, res.mails.add(), timer.now) defer = DataBase().commit(data) defer.addCallback(self._update_arena_succeed, req, res, timer) return defer
def _pack_get_melee_win_num_reward_response(self, proxy, data, melee, melee_matcher, req, timer): """构造返回 args: Returns: res[protobuf]: 向客户端的返回的响应 """ res = arena_pb2.QueryArenaInfoRes() res.status = 0 pack.pack_melee_info(data.user.get(True), melee, res.arena_info, timer.now, melee_matcher.rank) #胜场奖励 if melee.is_able_to_get_win_num_reward(): pack.pack_arena_reward_info(melee, res.arena_info.win_num_reward) resource = data.resource.get(True) pack.pack_resource_info(resource, res.resource) defer = DataBase().commit(data) defer.addCallback(self._get_melee_win_num_reward_succeed, req, res, timer) return defer
def _pack_query_arena_ranking_response(self, proxy, data, arena, arena_matcher, users, req, timer): """构造返回 args: Returns: res[protobuf]: 向客户端的返回的响应 """ res = arena_pb2.QueryArenaInfoRes() res.status = 0 pack.pack_arena_info(data.user.get(True), arena, res.arena_info, timer.now, arena_matcher.rank) res.arena_info.own.ranking_index = arena_matcher.rank if arena.is_arena_active(timer.now): #胜场奖励 if arena.is_able_to_get_win_num_reward(): pack.pack_arena_reward_info(arena, res.arena_info.win_num_reward) #榜单信息 for user in users: message = res.arena_info.player_rankings.add() message.user_id = user[0] message.name = user[1] message.level = user[2] message.icon_id = user[3] message.title_level = user[4] message.score = user[5] message.ranking_index = user[6] response = res.SerializeToString() log = log_formater.output(data, "Query arena ranking succeed", req, res, timer.count_ms()) logger.notice(log) return response