Esempio n. 1
0
    def _calc_drum_result(self, union_response, data, item, cost_gold, req,
                          timer):
        union_res = internal_union_pb2.InternalDrumForUnionBattleRes()
        union_res.ParseFromString(union_response)

        if union_res.status != 0:
            raise Exception("Query union battle res error")

        res = union_battle_pb2.QueryUnionBattleRes()
        res.status = 0
        res.ret = union_res.ret

        if union_res.ret == union_pb2.UNION_OK:
            score = union_res.individual_battle_score_add
            union_battle_business.drum(data, item, cost_gold, score, timer.now)
            if req.HasField("item"):
                compare.check_item(data, req.item)

        if union_res.HasField("battle"):
            defer = UnionBattlePatcher().patch(res.battle, union_res.battle,
                                               data, timer.now)
            defer.addCallback(self._calc_drum_post, data, req, res, timer)
            return defer

        return self._calc_drum_post(None, data, req, res, timer)
Esempio n. 2
0
 def _query_failed(self, err, req, timer):
     logger.fatal("Query union battle failed[reason=%s]" % err)
     res = union_battle_pb2.QueryUnionBattleRes()
     res.status = -1
     response = res.SerializeToString()
     logger.notice("Query union battle failed"
                   "[user_id=%d][req=%s][res=%s][consume=%d]" %
                   (timer.id, req, res, timer.count_ms()))
     return response
Esempio n. 3
0
    def _calc_query_result(self, union_response, data, req, timer):
        union_res = internal_union_pb2.InternalQueryUnionBattleRes()
        union_res.ParseFromString(union_response)

        if union_res.status != 0:
            raise Exception("Query union battle res error")

        res = union_battle_pb2.QueryUnionBattleRes()
        res.status = 0
        res.ret = union_res.ret
        if union_res.HasField("battle"):
            defer = UnionBattlePatcher().patch(res.battle, union_res.battle,
                                               data, timer.now)
            defer.addCallback(self._calc_query_post, data, req, res, timer)
            return defer

        return self._calc_query_post(None, data, req, res, timer)
Esempio n. 4
0
    def _calc_query(self, data, req, timer):
        union = data.union.get(True)
        if not union.is_belong_to_target_union(req.union_id):
            res = union_battle_pb2.QueryUnionBattleRes()
            res.status = 0
            res.ret = union_pb2.UNION_NOT_MATCHED

            defer = DataBase().commit(data)
            defer.addCallback(self._query_succeed, req, res, timer)
            return defer

        union_req = internal_union_pb2.InternalQueryUnionBattleReq()
        union_req.user_id = data.id
        defer = GlobalObject().remote['gunion'].callRemote(
            "query_battle", req.union_id, union_req.SerializeToString())
        defer.addCallback(self._calc_query_result, data, req, timer)
        return defer