コード例 #1
0
ファイル: melee_process.py プロジェクト: hw233/test-2
    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
コード例 #2
0
ファイル: arena_process.py プロジェクト: hw233/test-2
    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
コード例 #3
0
ファイル: melee_process.py プロジェクト: hw233/test-2
    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
コード例 #4
0
ファイル: arena_process.py プロジェクト: hw233/test-2
    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