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
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