示例#1
0
 def unit_onUnitFlagsChanged(self, prevFlags, nextFlags):
     _, unit = self.getUnit(safe=False)
     isReady = unit.arePlayersReady(ignored=[settings.CREATOR_SLOT_INDEX])
     flags = unit_items.UnitFlags(nextFlags, prevFlags, isReady)
     isInQueue = flags.isInQueue()
     if isInQueue:
         matchmakerNextTick = self.__doClockworkLogic(returnMatchmakerNextTick=True)
         if matchmakerNextTick is not None:
             unit.setModalTimestamp(matchmakerNextTick)
     if flags.isInQueueChanged() and self.isCommander() and not isInQueue:
         self.requestSlotVehicleFilters()
     regularBattleEnd = flags.isArenaFinishedChanged() and flags.isArenaFinished() and flags.isExternalLocked()
     wgshBattleEnd = flags.isExternalLockedStateChanged() and not flags.isExternalLocked()
     if regularBattleEnd or wgshBattleEnd:
         LOG_DEBUG('force wgsh request on end of battle (r,x):', regularBattleEnd, wgshBattleEnd)
         self.__strongholdSettings.forceCleanData()
         self.requestUpdateStronghold()
         self.requestSlotVehicleFilters()
     if flags.isExternalLegionariesMatchingChanged():
         self.__onExternalLegionariesMatchingToggle(flags.isInExternalLegionariesMatching())
     super(StrongholdEntity, self).unit_onUnitFlagsChanged(prevFlags, nextFlags)
     self.__doClockworkLogic(invokeListeners=True, forceUpdateBuildings=True)
     if not self.hasLockedState():
         self.resetCoolDown(settings.REQUEST_TYPE.BATTLE_QUEUE)
         self.resetCoolDown(settings.REQUEST_TYPE.DECLINE_SEARCH)
         self.resetCoolDown(settings.REQUEST_TYPE.AUTO_SEARCH)
     if isInQueue:
         self._invokeListeners('onCommanderIsReady', True)
     elif prevFlags != nextFlags and nextFlags == 0:
         self._invokeListeners('onCommanderIsReady', False)
     if self.canShowStrongholdsBattleQueue():
         g_eventDispatcher.showStrongholdsBattleQueue()
     return
 def unit_onUnitFlagsChanged(self, prevFlags, nextFlags):
     _, unit = self.getUnit()
     isReady = unit.arePlayersReady(ignored=[settings.CREATOR_SLOT_INDEX])
     flags = unit_items.UnitFlags(nextFlags, prevFlags, isReady)
     isInQueue = flags.isInQueue()
     if isInQueue:
         matchmakerNextTick = self.__doClockworkLogic(
             self.CWL_RETURN_MATCHMAKER_NEXT_TICK)
         if matchmakerNextTick is not None:
             unit.setModalTimestamp(matchmakerNextTick)
     regularBattleEnd = flags.isArenaFinishedChanged(
     ) and flags.isArenaFinished() and flags.isExternalLocked()
     wgshBattleEnd = flags.isExternalLockedStateChanged(
     ) and not flags.isExternalLocked()
     if regularBattleEnd or wgshBattleEnd:
         LOG_DEBUG('force wgsh request on end of battle (r,x):',
                   regularBattleEnd, wgshBattleEnd)
         self.__strongholdSettings.forceCleanData()
         self.requestUpdateStronghold()
     super(StrongholdEntity,
           self).unit_onUnitFlagsChanged(prevFlags, nextFlags)
     self.__doClockworkLogic(self.CWL_INVOKE_LISTENERS
                             | self.CWL_FORCE_UPDATE_BUILDINGS)
     if not self.hasLockedState():
         self.resetCoolDown(settings.REQUEST_TYPE.BATTLE_QUEUE)
         self.resetCoolDown(settings.REQUEST_TYPE.DECLINE_SEARCH)
         self.resetCoolDown(settings.REQUEST_TYPE.AUTO_SEARCH)
     if isInQueue:
         self._invokeListeners('onCommanderIsReady', True)
     elif prevFlags != nextFlags and nextFlags == 0:
         self._invokeListeners('onCommanderIsReady', False)
     if isLeaguesEnabled() and self.hasLockedState():
         g_eventDispatcher.showStrongholdsBattleQueue()
     return
示例#3
0
 def init(self, ctx=None):
     self.__playersMatchingStartedAt = None
     self.__slotVehicleFilters = []
     self.storage.release()
     ret = super(StrongholdEntity, self).init(ctx)
     rev = self._getUnitRevision()
     if rev > 1:
         self.requestUpdateStronghold()
         self.requestSlotVehicleFilters()
     unitMgr = prb_getters.getClientUnitMgr()
     if unitMgr:
         unitMgr.onUnitResponseReceived += self.onUnitResponseReceived
         unitMgr.onUnitNotifyReceived += self.onUnitNotifyReceived
     self.__strongholdSettings.init()
     self.__strongholdUpdateEventsMapping = {'header': self.__onUpdateHeader,
      'timer': self.__onUpdateTimer,
      'state': self.__onUpdateState,
      'reserve': self.__onUpdateReserve}
     playerInfo = self.getPlayerInfo()
     self.__isInSlot = playerInfo.isInSlot
     if self.canShowStrongholdsBattleQueue():
         g_eventDispatcher.showStrongholdsBattleQueue()
     else:
         g_eventDispatcher.loadStrongholds()
     return ret
 def __initState(self):
     if self.prbEntity.hasLockedState():
         if self.isPlayerInSlot(
         ) and not self.prbEntity.canShowMaintenance():
             if isLeaguesEnabled():
                 g_eventDispatcher.showStrongholdsBattleQueue()
                 self.destroy()
             else:
                 self.__changeAutoSearchState()
     else:
         self.__clearState()
     self.__registerOnMatchmakingTimerChangedListener()
 def init(self, ctx=None):
     self.storage.release()
     ret = super(StrongholdEntity, self).init(ctx)
     _, unit = self.getUnit()
     if unit._extras.get('rev', 0) > 1:
         self.requestUpdateStronghold()
     unitMgr = prb_getters.getClientUnitMgr()
     if unitMgr:
         unitMgr.onUnitResponseReceived += self.onUnitResponseReceived
         unitMgr.onUnitNotifyReceived += self.onUnitNotifyReceived
     self.__strongholdSettings.init()
     self.__strongholdUpdateEventsMapping = {
         'header': self.__onUpdateHeader,
         'timer': self.__onUpdateTimer,
         'state': self.__onUpdateState,
         'reserve': self.__onUpdateReserve
     }
     playerInfo = self.getPlayerInfo()
     self.__isInSlot = playerInfo.isInSlot
     if isLeaguesEnabled() and self.hasLockedState():
         g_eventDispatcher.showStrongholdsBattleQueue()
     else:
         g_eventDispatcher.loadStrongholds()
     return ret