def __init__(self, account = None):
     self.__account = account
     self.__eManager = Event.EventManager()
     self.onSortieChanged = Event.Event(self.__eManager)
     self.onSortieRemoved = Event.Event(self.__eManager)
     self.onSortieUnitReceived = Event.Event(self.__eManager)
     self.onFortBattleChanged = Event.Event(self.__eManager)
     self.onFortBattleRemoved = Event.Event(self.__eManager)
     self.onFortBattleUnitReceived = Event.Event(self.__eManager)
     self.onResponseReceived = Event.Event(self.__eManager)
     self.onBuildingChanged = Event.Event(self.__eManager)
     self.onTransport = Event.Event(self.__eManager)
     self.onDirectionOpened = Event.Event(self.__eManager)
     self.onDirectionClosed = Event.Event(self.__eManager)
     self.onDirectionLockChanged = Event.Event(self.__eManager)
     self.onStateChanged = Event.Event(self.__eManager)
     self.onOrderChanged = Event.Event(self.__eManager)
     self.onDossierChanged = Event.Event(self.__eManager)
     self.onPlayerAttached = Event.Event(self.__eManager)
     self.onSettingCooldown = Event.Event(self.__eManager)
     self.onPeripheryChanged = Event.Event(self.__eManager)
     self.onDefenceHourChanged = Event.Event(self.__eManager)
     self.onDefenceHourActivated = Event.Event(self.__eManager)
     self.onOffDayChanged = Event.Event(self.__eManager)
     self.onVacationChanged = Event.Event(self.__eManager)
     self.onEnemyClanCardReceived = Event.Event(self.__eManager)
     self.onFavoritesChanged = Event.Event(self.__eManager)
     self.onDefenceHourShutdown = Event.Event(self.__eManager)
     self.onShutdownDowngrade = Event.Event(self.__eManager)
     self.onEmergencyRestore = Event.Event(self.__eManager)
     self.onEnemyStateChanged = Event.Event(self.__eManager)
     self.onConsumablesChanged = Event.Event(self.__eManager)
     self.__battlesMapping = {}
     FortifiedRegionBase.__init__(self)
 def _setBuildingResource(self, buildingTypeID, resCount):
     reason = BUILDING_UPDATE_REASON.UPDATED
     previousState = self.getBuilding(buildingTypeID)
     FortifiedRegionBase._setBuildingResource(self, buildingTypeID, resCount)
     newState = self.getBuilding(buildingTypeID)
     if previousState.level == 0 and newState.level > 0:
         reason = BUILDING_UPDATE_REASON.COMPLETED
     self.onBuildingChanged(buildingTypeID, reason)
 def _contribute(self, accDBID, buildingTypeID, resCount, dateStamp):
     reason = BUILDING_UPDATE_REASON.UPDATED
     previousState = self.getBuilding(buildingTypeID)
     FortifiedRegionBase._contribute(self, accDBID, buildingTypeID, resCount, dateStamp)
     newState = self.getBuilding(buildingTypeID)
     if previousState.level == 0 and newState.level > 0:
         reason = BUILDING_UPDATE_REASON.COMPLETED
     self.onBuildingChanged(buildingTypeID, reason)
 def _delBuilding(self, buildingTypeID):
     building = self.getBuilding(buildingTypeID)
     ressignPlayer = BigWorld.player().databaseID in self.getBuilding(buildingTypeID).attachedPlayers
     FortifiedRegionBase._delBuilding(self, buildingTypeID)
     self.onBuildingChanged(buildingTypeID, BUILDING_UPDATE_REASON.DELETED, {'dir': building.direction,
      'pos': building.position})
     if ressignPlayer:
         self.onPlayerAttached(FORT_BUILDING_TYPE.MILITARY_BASE)
 def _updateOrders(self, orderTypeID, buildingTypeID, newLevel, newCount, resLeft):
     oldCount, oldLevel = self.orders.get(orderTypeID, (0, newLevel))
     FortifiedRegionBase._updateOrders(self, orderTypeID, buildingTypeID, newLevel, newCount, resLeft)
     if newCount > oldCount and newLevel == oldLevel:
         self.onOrderChanged(orderTypeID, ORDER_UPDATE_REASON.ADDED)
     elif newCount < oldCount and newLevel == oldLevel:
         self.onOrderChanged(orderTypeID, ORDER_UPDATE_REASON.DELETED)
     else:
         self.onOrderChanged(orderTypeID, ORDER_UPDATE_REASON.UPDATED)
 def _transport(self, fromBuildTypeID, toBuildTypeID, resCount, timeCooldown):
     reason = BUILDING_UPDATE_REASON.UPDATED
     previousState = self.getBuilding(toBuildTypeID)
     FortifiedRegionBase._transport(self, fromBuildTypeID, toBuildTypeID, resCount, timeCooldown)
     newState = self.getBuilding(toBuildTypeID)
     self.onBuildingChanged(fromBuildTypeID, BUILDING_UPDATE_REASON.UPDATED)
     if previousState.level == 0 and newState.level > 0:
         reason = BUILDING_UPDATE_REASON.COMPLETED
     self.onBuildingChanged(toBuildTypeID, reason)
     self.onTransport()
 def _unpackFortBattleUnit(self, unpacking):
     result = FortifiedRegionBase._unpackFortBattleUnit(self, unpacking)
     try:
         (battleID,) = struct.unpack_from(self.FORMAT_FORT_BATTLE_UNIT_HEADER, unpacking)
         self.onFortBattleUnitReceived(battleID)
     except struct.error as e:
         LOG_ERROR(e)
     return result
 def _unpackSortieUnit(self, unpacking):
     result = FortifiedRegionBase._unpackSortieUnit(self, unpacking)
     try:
         (unitMgrID, peripheryID,) = struct.unpack_from(UNIT_MGR_ID_CHR, unpacking)
         self.onSortieUnitReceived(unitMgrID, peripheryID)
     except struct.error as e:
         LOG_ERROR(e)
     return result
 def _expireEvent(self, eventTypeID, value):
     buildingTypeID = eventTypeID - FORT_EVENT_TYPE.PRODUCT_ORDERS_BASE
     orderTypeID = 0
     orderCount = 0
     isOrder = buildingTypeID in FORT_BUILDING_TYPE_NAMES
     if isOrder:
         building = self.getBuilding(buildingTypeID)
         orderTypeID = self.getBuildingOrder(buildingTypeID)
         orderCount = building.orderInProduction.get('count')
     FortifiedRegionBase._expireEvent(self, eventTypeID, value)
     if isOrder:
         self.onOrderReady(orderTypeID, orderCount)
     elif eventTypeID == FORT_EVENT_TYPE.DEFENCE_HOUR_CHANGE:
         self.onDefenceHourChanged(value)
     elif eventTypeID == FORT_EVENT_TYPE.OFF_DAY_CHANGE:
         self.onOffDayChanged(value)
     elif eventTypeID in (FORT_EVENT_TYPE.PERIPHERY_COOLDOWN,
      FORT_EVENT_TYPE.DEFENCE_HOUR_COOLDOWN,
      FORT_EVENT_TYPE.OFF_DAY_COOLDOWN,
      FORT_EVENT_TYPE.VACATION_COOLDOWN):
         self.onSettingCooldown(eventTypeID)
 def _expireEvent(self, eventTypeID, value):
     buildingTypeID = eventTypeID - FORT_EVENT_TYPE.PRODUCT_ORDERS_BASE
     orderTypeID = 0
     isOrderReady = buildingTypeID in FORT_BUILDING_TYPE_NAMES
     expireOrderTypeID = eventTypeID - FORT_EVENT_TYPE.ACTIVE_ORDERS_BASE
     isOrderExpire = expireOrderTypeID in FORT_ORDER_TYPE.ALL
     if isOrderReady:
         orderTypeID = self.getBuildingOrder(buildingTypeID)
     FortifiedRegionBase._expireEvent(self, eventTypeID, value)
     if isOrderReady:
         self.onOrderChanged(orderTypeID, ORDER_UPDATE_REASON.ADDED)
     elif isOrderExpire:
         self.onOrderChanged(expireOrderTypeID, ORDER_UPDATE_REASON.EXPIRED)
     elif eventTypeID == FORT_EVENT_TYPE.DEFENCE_HOUR_CHANGE:
         self.onDefenceHourChanged(value)
     elif eventTypeID == FORT_EVENT_TYPE.OFF_DAY_CHANGE:
         self.onOffDayChanged(value)
     elif eventTypeID in (FORT_EVENT_TYPE.PERIPHERY_COOLDOWN,
      FORT_EVENT_TYPE.DEFENCE_HOUR_COOLDOWN,
      FORT_EVENT_TYPE.OFF_DAY_COOLDOWN,
      FORT_EVENT_TYPE.VACATION_COOLDOWN):
         self.onSettingCooldown(eventTypeID)
 def _changeOffDay(self, offDay, timeActivation, timeCooldown, initiatorDBID):
     FortifiedRegionBase._changeOffDay(self, offDay, timeActivation, timeCooldown, initiatorDBID)
     self.onOffDayChanged(offDay)
 def _activateDefHour(self, value, initiatorDBID = 0):
     FortifiedRegionBase._activateDefHour(self, value, initiatorDBID)
     self.onDefenceHourActivated(value, initiatorDBID)
 def _changeDefHour(self, newValue, timeActivation, timeCooldown, initiatorDBID):
     FortifiedRegionBase._changeDefHour(self, newValue, timeActivation, timeCooldown, initiatorDBID)
     self.onDefenceHourChanged(newValue)
 def _cancelEvent(self, eventTypeID):
     FortifiedRegionBase._cancelEvent(self, eventTypeID)
     if eventTypeID == FORT_EVENT_TYPE.DEFENCE_HOUR_SHUTDOWN:
         self.onDefenceHourShutdown()
 def _changePeriphery(self, peripheryID, timeCooldown):
     FortifiedRegionBase._changePeriphery(self, peripheryID, timeCooldown)
     self.onPeripheryChanged(peripheryID)
 def _setFortBattleBuildnum(self, battleID, packBuildsNum, roundStart = 0):
     FortifiedRegionBase._setFortBattleBuildnum(self, battleID, packBuildsNum, roundStart)
     self.__updateBattlesMapping()
     self.onFortBattleChanged(battleID)
Beispiel #17
0
 def _processRequest(self, reqID, callerDBID):
     FortifiedRegionBase._processRequest(self, reqID, callerDBID)
     self.onResponseReceived(reqID, callerDBID)
 def _replaceConsumables(self, unitMgrID, peripheryID, timeExpire, prebattleType, oldRev, newRev, consumables):
     FortifiedRegionBase._replaceConsumables(self, unitMgrID, peripheryID, timeExpire, prebattleType, oldRev, newRev, consumables)
     self.onConsumablesChanged(unitMgrID)
Beispiel #19
0
 def _setSortie(self, unitMgrID, cmdrDBID, rosterTypeID, state, peripheryID, *args):
     result = FortifiedRegionBase._setSortie(self, unitMgrID, cmdrDBID, rosterTypeID, state, peripheryID, *args)
     self.onSortieChanged(unitMgrID, peripheryID)
     return result
 def _setFortBattleRound(self, battleID, isBattleRound):
     FortifiedRegionBase._setFortBattleRound(self, battleID, isBattleRound)
     self.__updateBattlesMapping()
     self.onFortBattleChanged(battleID)
 def _onDeleteBattle(self, key, args, reason, isDefence):
     battleID = args[FORT_ATK_IDX.BATTLE_ID]
     FortifiedRegionBase._onDeleteBattle(self, key, args, reason, isDefence)
     self.onFortBattleRemoved(battleID)
Beispiel #22
0
 def _removeSortie(self, unitMgrID, peripheryID):
     FortifiedRegionBase._removeSortie(self, unitMgrID, peripheryID)
     self.onSortieRemoved(unitMgrID, peripheryID)
Beispiel #23
0
 def _addFortBattle(self, battleID, direction, attackTime, attackerClanDBID, defenderClanDBID, canUseEquipments, division):
     FortifiedRegionBase._addFortBattle(self, battleID, direction, attackTime, attackerClanDBID, defenderClanDBID, canUseEquipments, division)
     self.__updateBattlesMapping()
     self.onFortBattleChanged(battleID)
Beispiel #24
0
 def _removeFortBattle(self, battleID):
     FortifiedRegionBase._removeFortBattle(self, battleID)
     self.__updateBattlesMapping()
     self.onFortBattleRemoved(battleID)
 def _changeVacation(self, timeVacationStart, timeVacationEnd, timeCooldown, initiatorDBID):
     FortifiedRegionBase._changeVacation(self, timeVacationStart, timeVacationEnd, timeCooldown, initiatorDBID)
     self.onVacationChanged(timeVacationStart, timeVacationEnd)
 def _shutdownDowngrade(self):
     FortifiedRegionBase._shutdownDowngrade(self)
     self.onShutdownDowngrade()
 def _setLockedDirMask(self, lockedDirMask):
     FortifiedRegionBase._setLockedDirMask(self, lockedDirMask)
     self.onDirectionLockChanged()
 def _shutdownDefHour(self, timeActivation, initiatorDBID):
     FortifiedRegionBase._shutdownDefHour(self, timeActivation, initiatorDBID)
     self.onDefenceHourShutdown()
 def _setEnemyReadyForBattle(self, battleID, isReady):
     FortifiedRegionBase._setEnemyReadyForBattle(self, battleID, isReady)
     self.onEnemyStateChanged(battleID, isReady)
Beispiel #30
0
 def _addBuilding(self, buildingTypeID, dir, pos):
     FortifiedRegionBase._addBuilding(self, buildingTypeID, dir, pos)
     self.onBuildingChanged(buildingTypeID, BUILDING_UPDATE_REASON.ADDED, {'dir': dir,
      'pos': pos})
 def _addDefence(self, timeAttack, dirFrom, dirTo, attackerClanDBID, battleID, attackerFortLevel, defenderFortLevel, division, attackResult, attackResource, attackerClanAbbrev):
     FortifiedRegionBase._addDefence(self, timeAttack, dirFrom, dirTo, attackerClanDBID, battleID, attackerFortLevel, defenderFortLevel, division, attackResult, attackResource, attackerClanAbbrev)
     self.__updateBattlesMapping()
     self.onFortBattleChanged(battleID)
 def _syncFortDossier(self, compDossierDescr):
     FortifiedRegionBase._syncFortDossier(self, compDossierDescr)
     self.onDossierChanged(compDossierDescr)
 def _onEmergencyRestore(self, unpacking):
     self.onEmergencyRestore()
     return FortifiedRegionBase._onEmergencyRestore(self, unpacking)
 def _attach(self, buildTypeID, accDBID):
     FortifiedRegionBase._attach(self, buildTypeID, accDBID)
     self.onPlayerAttached(buildTypeID)
 def _deleteConsumables(self, unitMgrID, peripheryID):
     FortifiedRegionBase._deleteConsumables(self, unitMgrID, peripheryID)
     self.onConsumablesChanged(unitMgrID)
 def _removeFavorite(self, clanDBID):
     FortifiedRegionBase._removeFavorite(self, clanDBID)
     self.onFavoritesChanged(clanDBID)