Beispiel #1
0
 def StartEventTick(self):
     self.StopEventTick()
     if util.IsRobot(self.m_nEventOptPlayer) is True:
         self.m_nEventTick = tick_mgr.RegisterOnceTick(
             4 * 1000, self.NextTurn)
     elif self.IsTuoGuan(self.m_nEventOptPlayer) is True:
         self.m_nEventTick = tick_mgr.RegisterOnceTick(
             1 * 1000, self.NextTurn)
     else:
         self.m_nEventTick = tick_mgr.RegisterOnceTick(
             int(self.GetEventExpireTime() * 1000), self.NextTurn)
Beispiel #2
0
    def TouchEventMoPai(self, mjMgr, listData):
        nPos, nCard = listData
        roomObj = mjMgr.GetRoomObj()
        nOptMember = roomObj.GetMemberIDByPos(nPos)

        nCardType = check_hu_mgr.GetCardType(nCard)
        if nCardType == ECardType.eHuaPai:
            return

        # 摸到这张牌是不是能胡牌
        listCard = mjMgr.GetPosCardList(nPos)
        assert ((len(listCard) - 2) % 3 == 0)

        listJinPai = mjMgr.GetJinPaiList()

        import time
        nTimeCheckPre = time.clock()
        bCanHu = check_hu_mgr.testHu(0, listCard, listJinPai)
        nTimeENd = time.clock()
        framework.LOGINFO(
            "FFSCENE_PYTHON",
            "GasMj.CheckHU {0} ".format(nTimeENd - nTimeCheckPre))
        if bCanHu is True:
            evObj = MjEventObj(EMjEvent.ev_hu_normal, nOptMember, str(nCard))
            mjMgr.AddEventNotic2Poll(nPos, evObj)
            mjMgr.SetCurEventOptMember(nOptMember)

            # 单游
            if check_hu_mgr.CheckDanYou(listCard, listJinPai) is True:
                evObj = MjEventObj(EMjEvent.ev_dan_you, nOptMember, str(nCard))
                mjMgr.AddEventNotic2Poll(nPos, evObj)

            if mjMgr.IsTuoGuan(nOptMember) is True:
                tick_mgr.RegisterOnceTick(1000, mjMgr.RequestHu, [nOptMember])

            framework.LOGINFO(
                "FFSCENE_PYTHON", "GasMj.CanHu {0}, {1} ".format(
                    json.dumps(listJinPai), json.dumps(mjMgr.DumpPos(nPos))))

        if listCard.count(nCard) == 4:
            evObj = MjEventObj(EMjEvent.ev_gang_all, nOptMember, str(nCard))
            mjMgr.AddEventNotic2Poll(nPos, evObj)
            mjMgr.SetCurEventOptMember(nOptMember)
            if mjMgr.IsTuoGuan(nOptMember):
                tick_mgr.RegisterOnceTick(1000, mjMgr.RequestGang,
                                          [nOptMember, nOptMember, nCard])

            framework.LOGINFO(
                "FFSCENE_PYTHON",
                "GasMj.GangAll {0}, {1} ".format(json.dumps(listCard), nCard))

        return True
Beispiel #3
0
    def StartQiPaiTick(self, nPos):
        self.StopQiPaiTick(nPos)

        nMember = self.m_roomObj.GetMemberIDByPos(nPos)
        if util.IsRobot(nMember) is True:
            nTick = tick_mgr.RegisterOnceTick(int(4 * 1000), self.AutoQiPai,
                                              nPos)
        elif self.IsTuoGuan(nMember) is True:
            nTick = tick_mgr.RegisterOnceTick(int(1 * 1000), self.AutoQiPai,
                                              nPos)
        else:
            nTick = tick_mgr.RegisterOnceTick(
                int(self.GetQiPaiExpireSecond() * 1000), self.AutoQiPai, nPos)

        self.m_dictOptTick[nPos] = nTick
Beispiel #4
0
 def AddResidualPlayer(self, nPlayerGID):
     assert nPlayerGID not in self.m_dictRsidualPlayer
     nTickID = tick_mgr.RegisterOnceTick(RESIDUAL_TIME,
                                         self.OnResdualTimeOut, nPlayerGID)
     self.m_dictRsidualPlayer[nPlayerGID] = nTickID
     Player = entity_mgr.GetEntity(nPlayerGID)
     Player.SetResidual(True)
     ffext.LOGINFO("FFSCENE_PYTHON",
                   "AddResidualPlayer {0}".format(nPlayerGID))
Beispiel #5
0
    def CheckEnterRoom(self, nGID):
        t = random.randint(10, 70)
        t = int((t / 10.0) * 1000)
        tick_mgr.RegisterOnceTick(t, self.CheckEnterRoom, nGID)

        robotEntity = entity_mgr.GetEntity(nGID)
        assert robotEntity is not None
        if robotEntity.GetRoomID() is not None:
            return
        self.Try2EnterRoom(nGID)
Beispiel #6
0
    def DispathWorkRet(self):
        tick_mgr.RegisterOnceTick(self.m_nTick2CheckWorkQueue,
                                  self.DispathWorkRet)
        nQueueRandom = 0  # random.randint(0, self.m_nQueueNum - 1)
        queueRet = self.m_dictChannel2QueueRet[0]
        c = 0
        while queueRet.empty() is False:
            szScene, szSerial = self.m_dictChannel2QueueRet[nQueueRandom].get()
            ffext.call_service(szScene, rpc_def.OnDbAsynCallReturn,
                               json.dumps(szSerial))

            self.m_nProcessedJobNum += 1
            c += 1
            if c > 50:
                break
            print("dbs self.m_nProcessedJobNum ", self.m_nProcessedJobNum,
                  self.m_dictChannel2QueueRet[nQueueRandom].qsize())
Beispiel #7
0
    def __init__(self):
        import conf as conf
        nRobotNum = conf.dict_cfg["gas"]["robot_num"]
        self.m_nRobotStartID = (int(ff.service_name[-1:]) + 1) * 100

        self.m_dictRobotGID = {}
        import gas.gas_scene.gas_scene_mgr as gas_scene_mgr
        for i in xrange(1, nRobotNum + 1):
            import json
            dict = {"ip": "127.0.0.1", "gate": "gate@0"}
            gas_scene_mgr._gasSceneMgr.Gcc2GasSessionConn(
                self.m_nRobotStartID, json.dumps(dict))
            self.m_dictRobotGID[self.m_nRobotStartID] = False
            self.m_nRobotStartID += 1

        ffext.LOGINFO("FFSCENE_PYTHON",
                      "RobotMgr.CreateRobot {0} done.".format(nRobotNum))

        for nGID in self.m_dictRobotGID.keys():
            tick_mgr.RegisterOnceTick(5 * 1000, self.CheckEnterRoom, nGID)
Beispiel #8
0
import rpc.rpc_def as rpc_def
import rpc.scene_def as scene_def
import gcc.gcc_scene.gcc_scene_mgr as gcc_scene_mgr
import gcc.gcc_room_mgr.gcc_room_mgr as gcc_room_mgr
import service_ex.service_base as service_base


#
@ffext.reg_service(rpc_def.OnAllServiceStartUp)
def OnAllServiceStartUp(dictSerial):
    import id_manager.room_id_mgr as room_id_mgr
    room_id_mgr.init()

    import robot.gm_opt_config as gm_opt_config
    gm_opt_config.LoadAllConfig()


@ffext.reg_service(rpc_def.Peer)
def Peer(dictSerial):
    ffext.call_service(scene_def.GATE_MASTER, rpc_def.RspPeer,
                       {"service": ff.service_name})


def A():
    ffext.call_service(scene_def.GATE_MASTER, rpc_def.OnServiceConn,
                       {"service": ff.service_name})


import util.tick_mgr as tick_mgr
tick_mgr.RegisterOnceTick(100, A)
Beispiel #9
0
    def TouchEventQiPai(self, mjMgr, listData):
        nPos, nCard, nCardPos = listData
        roomObj = mjMgr.GetRoomObj()
        listMember = roomObj.GetMemberList()
        nOptMember = roomObj.GetMemberIDByPos(nPos)

        evObj = MjEventObj(EMjEvent.ev_be_qi_pai, nOptMember,
                           "{0},{1}".format(nCard, nCardPos + 1))
        for nMember in listMember:
            nMemberPos = roomObj.GetMemberPos(nMember)
            mjMgr.AddEventNotic2Poll(nMemberPos, evObj)
            # framework.send_msg_session(nMember, rpc_def.Gas2GacOnTouchGameEvent, szRspSerial)

        listCardOwner = mjMgr.GetCardListByPos(nPos)
        nTotal = len(listCardOwner)
        assert ((nTotal - 1) % 3 == 0), nTotal

        listJinPai = mjMgr.GetJinPaiList()

        bNextTurn = True
        for nMember in listMember:
            if nMember == nOptMember:
                continue

            nMemberPos = mjMgr.GetRoomObj().GetMemberPos(nMember)
            listCard = mjMgr.GetCardListByPos(nMemberPos)
            listCardEx = mjMgr.GetCardListEx(nMemberPos)

            # check gang, owenr have 3
            if check_hu_mgr.testGang(nCard, listCard, listJinPai) is True:
                evObj = MjEventObj(EMjEvent.ev_gang_other, nOptMember,
                                   str(nCard))
                mjMgr.AddEventNotic2Poll(nMemberPos, evObj)
                mjMgr.SetCurEventOptMember(nMember)
                if mjMgr.IsTuoGuan(nMember):
                    tick_mgr.RegisterOnceTick(1000, mjMgr.RequestGang,
                                              [nMember, nOptMember, nCard])

                framework.LOGINFO(
                    "FFSCENE_PYTHON",
                    "GasMj.Gang {0}, {1} ".format(json.dumps(listCard), nCard))
                bNextTurn = False
                continue

            # check gang with peng
            if check_hu_mgr.testGang(nCard, listCardEx, listJinPai) is True:
                evObj = MjEventObj(EMjEvent.ev_gang_with_peng, nOptMember,
                                   str(nCard))
                mjMgr.AddEventNotic2Poll(nMemberPos, evObj)
                mjMgr.SetCurEventOptMember(nMember)
                if mjMgr.IsTuoGuan(nMember):
                    tick_mgr.RegisterOnceTick(1000, mjMgr.RequestGang,
                                              [nMember, nOptMember, nCard])

                framework.LOGINFO(
                    "FFSCENE_PYTHON",
                    "GasMj.Gang {0}, {1} ".format(json.dumps(listCard), nCard))
                bNextTurn = False
                continue

            # check peng
            if check_hu_mgr.testPeng(nCard, listCard, listJinPai) is True:
                evObj = MjEventObj(EMjEvent.ev_peng, nOptMember, str(nCard))
                mjMgr.AddEventNotic2Poll(nMemberPos, evObj)
                mjMgr.SetCurEventOptMember(nMember)
                if mjMgr.IsTuoGuan(nMember):
                    tick_mgr.RegisterOnceTick(1000, mjMgr.RequestPeng,
                                              [nMember, nOptMember, nCard])

                framework.LOGINFO(
                    "FFSCENE_PYTHON",
                    "GasMj.Peng {0}, {1} ".format(json.dumps(listCard), nCard))
                bNextTurn = False
                continue

        return bNextTurn
Beispiel #10
0
    def NoticeAll(self):
        for szService in self.m_dictAllService.iterkeys():
            ffext.call_service(szService, rpc_def.OnAllServiceStartUp, {})

        tick_mgr.RegisterOnceTick(5000, self.Peer)
Beispiel #11
0
 def CheckServiceDisConn(self):
     tick_mgr.RegisterOnceTick(5000, self.Peer)
     for szService, nUpdTime in self.m_dictAllService.iteritems():
         nGap = time.time() - nUpdTime
         if nGap > 2 * self.m_nPeerGap:
             self.OnServiceDisConn(szService)
Beispiel #12
0
 def Peer(self):
     tick_mgr.RegisterOnceTick(self.m_nPeerGap * 1000,  self.Peer)
     for szService in self.m_dictAllService.iterkeys():
         ffext.call_service(szService, rpc_def.Peer, {})
Beispiel #13
0
 def StartOnceTick(self):
     self.StopOnceTick()
     self.m_nTick2Persistent = tick_mgr.RegisterOnceTick(
         g_nPersistentGap, self.OnTimerPersistent)
Beispiel #14
0
def ServiceCheckTick():
    tick_mgr.RegisterOnceTick(10000, ServiceCheckTick)
    ffext.call_service(g_szServiceMgr, 0, "test aaa")
Beispiel #15
0
 def DoConnPring(self):
     tick_mgr.RegisterOnceTick(60 * 60 * 1000, self.DoConnPring)
     import dbs_common as dbs_common
     dbs_common.Ping(self.m_nConn)