def _pack_query_melee_ranking_response(self, proxy, data, melee, melee_matcher, users, 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) res.arena_info.own.ranking_index = melee_matcher.rank #榜单信息 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 melee ranking succeed", req, res, timer.count_ms()) logger.notice(log) return response
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_melee_response(self, proxy, data, melee, melee_matcher, mails, last_battle_win, 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 last_battle_win: # #对手信息 # rivals_id = melee.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_melee_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_melee_succeed, req, res, timer) return defer
def _pack_refresh_arena_response(self, proxy, data, arena, arena_matcher, 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) #对手信息 rivals_id = arena.generate_arena_rivals_id() for rival_id in rivals_id: rival = data.rival_list.get(rival_id, True) pack.pack_arena_player(rival, res.arena_info.rivals.add()) #系统选定的对战对手 choose_rival_id = arena.get_choose_rival_id() choose_rival = data.rival_list.get(choose_rival_id, True) res.arena_info.choosed_user_id = choose_rival.rival_id resource = data.resource.get(True) pack.pack_resource_info(resource, res.resource) defer = DataBase().commit(data) defer.addCallback(self._refresh_arena_succeed, req, res, timer) return defer
def _query_melee_ranking_failed(self, err, req, timer): logger.fatal("Query melee ranking failed[reason=%s]" % err) res = arena_pb2.QueryArenaInfoRes() res.status = -1 response = res.SerializeToString() logger.notice("Query melee ranking failed[user_id=%d][req=%s][res=%s][consume=%d]" % (timer.id, req, res, timer.count_ms())) return response
def _get_melee_win_num_reward_failed(self, err, req, timer): logger.fatal("Get melee win num reward failed[reason=%s]" % err) res = arena_pb2.QueryArenaInfoRes() res.status = -1 response = res.SerializeToString() logger.notice("Get melee win num reward failed" "[user_id=%d][req=%s][res=%s][consume=%d]" % (timer.id, req, res, timer.count_ms())) return response
def _push_record(self, data, user, melee, ranking, record, timer): """向客户端推送对战记录,如果用户不在线,则推送失败 """ res = arena_pb2.QueryArenaInfoRes() res.status = 0 pack.pack_melee_info(user, melee, res.arena_info, timer.now, ranking) #对战记录 pack.pack_arena_record(record, res.arena_info.records.add()) response = res.SerializeToString() return GlobalObject().root.callChild("portal", "push_melee_record", data.id, response)
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