def init(self): super(PlayerFortRequester, self).init() fort = getClientFort() if fort: fort.onResponseReceived += self._fort_onResponseReceived else: LOG_DEBUG('Fort is not defined')
def update(self, provider): result = False fort = getClientFort() if not fort.isEmpty() and fort.isStartingScriptDone(): state = HasFortState() result = state.update(provider) if not result: result = True provider.changeState(state) return result
def isOrderValid(self, orderTypeID, count = 1, add = True): fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) order = fort.getOrder(orderTypeID) if order is None: return (False, FORT_RESTRICTION.UNKNOWN) if add and order.count + count > order.maxCount: return (False, FORT_RESTRICTION.ORDER_MAX_COUNT) return (True, '')
def isOrderValid(self, orderTypeID, count=1, add=True): fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) order = fort.getOrder(orderTypeID) if order is None: return (False, FORT_RESTRICTION.UNKNOWN) if add and order.count + count > order.maxCount: return (False, FORT_RESTRICTION.ORDER_MAX_COUNT) return (True, '')
def getUIMode(self, provider, transportingProgress = None): fort = getClientFort() if not fort.getOpenedDirections() and provider.getController().getPermissions().canOpenDirection(): return FORTIFICATION_ALIASES.MODE_DIRECTIONS if transportingProgress is not None: if fort.isTransportationAvailable(): return transportingProgress else: return FORTIFICATION_ALIASES.MODE_TRANSPORTING_NOT_AVAILABLE return FORTIFICATION_ALIASES.MODE_COMMON
def canActivateOrder(self, orderID): fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) order = fort.getOrder(orderID) canActivate = False if order.hasBuilding and order.count > 0 and not order.inCooldown: if order.isPermanent: canActivate = fort.isDefenceHourEnabled() else: canActivate = order.isCompatible or not fort.hasActivatedContinualOrders() return (canActivate, '')
def isDirectionValid(self, direction, open = True): if direction < 1: return (False, FORT_RESTRICTION.DIRECTION_MIN_COUNT) if direction > fortified_regions.g_cache.maxDirections: return (False, FORT_RESTRICTION.DIRECTION_MAX_COUNT) fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) openedDirections = len(fort.getOpenedDirections()) if open and self.getDirectionsMembersRequirements().get(openedDirections + 1, 0) > self.getClanMembersCount(): return (False, FORT_RESTRICTION.DIRECTION_NOT_ENOUGH_MEMBERS) return (True, '')
def isDirectionValid(self, direction, open=True): if direction < 1: return (False, FORT_RESTRICTION.DIRECTION_MIN_COUNT) if direction > fortified_regions.g_cache.maxDirections: return (False, FORT_RESTRICTION.DIRECTION_MAX_COUNT) fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) openedDirections = len(fort.getOpenedDirections()) if open and self.getDirectionsMembersRequirements().get( openedDirections + 1, 0) > self.getClanMembersCount(): return (False, FORT_RESTRICTION.DIRECTION_NOT_ENOUGH_MEMBERS) return (True, '')
def canActivateOrder(self, orderID): fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) order = fort.getOrder(orderID) canActivate = False if order.hasBuilding and order.count > 0 and not order.inCooldown: if order.isPermanent: canActivate = fort.isDefenceHourEnabled() else: canActivate = order.isCompatible or not fort.hasActivatedContinualOrders( ) return (canActivate, '')
def getUIMode(self, provider, transportingProgress = None): fort = getClientFort() if fort.state & FORT_STATE.FIRST_DIR_OPEN == 0: return FORTIFICATION_ALIASES.MODE_DIRECTIONS_TUTORIAL if fort.state & FORT_STATE.FIRST_BUILD_START == 0: return FORTIFICATION_ALIASES.MODE_COMMON_TUTORIAL if transportingProgress is not None: if fort.isTransportationAvailable(): return transportingProgress else: return FORTIFICATION_ALIASES.MODE_TRANSPORTING_NOT_AVAILABLE elif fort.state & FORT_STATE.FIRST_BUILD_DONE == 0: return FORTIFICATION_ALIASES.MODE_TRANSPORTING_TUTORIAL return FORTIFICATION_ALIASES.MODE_COMMON
def update(self, provider): result = False state = None fort = getClientFort() if not fort.isEmpty(): if isStartingScriptDone(): state = HasFortState() elif provider.getController().getPermissions().canCreate(): state = WizardState() if state: result = state.update(provider) if not result: result = True provider.changeState(state) return result
def update(self, provider): result = False state = None fort = getClientFort() if fort and not fort.isEmpty(): if isStartingScriptDone(): state = HasFortState() elif provider.getController().getPermissions().canCreate(): state = WizardState() if state: result = state.update(provider) if not result: result = True provider.changeState(state) return result
def isSortieCreationValid(self, level = None): from gui.prb_control.dispatcher import g_prbLoader fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) if level is not None and level not in SORTIE_DIVISION._ORDER: return (False, FORT_RESTRICTION.SORTIE_LEVEL_INVALID) if not fort.isStartingScriptDone(): return (False, FORT_RESTRICTION.STARTING_SCRIPT_NOT_DONE) if len(fort.sorties) >= fortified_regions.g_cache.maxSorties: return (False, FORT_RESTRICTION.SORTIE_MAX_COUNT) state = g_prbLoader.getDispatcher().getFunctionalState() if not state.isInUnit(PREBATTLE_TYPE.SORTIE) and state.hasModalEntity: return (False, FORT_RESTRICTION.SORTIE_HAS_MODAL_ENTITY) return (True, '')
def isSortieCreationValid(self, level=None): from gui.prb_control.dispatcher import g_prbLoader fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) if level is not None and level not in SORTIE_DIVISION._ORDER: return (False, FORT_RESTRICTION.SORTIE_LEVEL_INVALID) if not fort.isStartingScriptDone(): return (False, FORT_RESTRICTION.STARTING_SCRIPT_NOT_DONE) if len(fort.sorties) >= fortified_regions.g_cache.maxSorties: return (False, FORT_RESTRICTION.SORTIE_MAX_COUNT) state = g_prbLoader.getDispatcher().getFunctionalState() if not state.isInUnit(PREBATTLE_TYPE.SORTIE) and state.hasModalEntity: return (False, FORT_RESTRICTION.SORTIE_HAS_MODAL_ENTITY) return (True, '')
def canUpgrade(self, buildingTypeID): fort = getClientFort() restrict, restricType = True, '' if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) building = fort.getBuilding(buildingTypeID) if building is None: return (False, FORT_RESTRICTION.UNKNOWN) upgradeCost = building.levelRef.upgradeCost if not upgradeCost: restrict, restricType = False, FORT_RESTRICTION.BUILDING_CANT_UPGRADE level = building.level baseDescr = fort.getBuilding(FORT_BUILDING_TYPE.MILITARY_BASE) if buildingTypeID != FORT_BUILDING_TYPE.MILITARY_BASE and level >= baseDescr.level: restrict, restricType = False, FORT_RESTRICTION.BUILDING_FORT_LEVEL_TOO_LOW if buildingTypeID == FORT_BUILDING_TYPE.MILITARY_BASE and baseDescr.level >= MAX_FORTIFICATION_LEVEL: restrict, restricType = False, FORT_RESTRICTION.BUILDING_CANT_UPGRADE if building.storage < upgradeCost: if buildingTypeID != FORT_BUILDING_TYPE.MILITARY_BASE and level >= baseDescr.level: return (False, FORT_RESTRICTION.BUILDING_NOT_ENOUGH_RESOURCE_AND_LOW_LEVEL) restrict, restricType = False, FORT_RESTRICTION.BUILDING_NOT_ENOUGH_RESOURCE return (restrict, restricType)
def canUpgrade(self, buildingTypeID): fort = getClientFort() restrict, restricType = True, '' if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) building = fort.getBuilding(buildingTypeID) if building is None: return (False, FORT_RESTRICTION.UNKNOWN) upgradeCost = building.levelRef.upgradeCost if not upgradeCost: restrict, restricType = False, FORT_RESTRICTION.BUILDING_CANT_UPGRADE level = building.level baseDescr = fort.getBuilding(FORT_BUILDING_TYPE.MILITARY_BASE) if buildingTypeID != FORT_BUILDING_TYPE.MILITARY_BASE and level >= baseDescr.level: restrict, restricType = False, FORT_RESTRICTION.BUILDING_FORT_LEVEL_TOO_LOW if buildingTypeID == FORT_BUILDING_TYPE.MILITARY_BASE and baseDescr.level >= MAX_FORTIFICATION_LEVEL: restrict, restricType = False, FORT_RESTRICTION.BUILDING_CANT_UPGRADE if building.storage < upgradeCost: if buildingTypeID != FORT_BUILDING_TYPE.MILITARY_BASE and level >= baseDescr.level: return (False, FORT_RESTRICTION. BUILDING_NOT_ENOUGH_RESOURCE_AND_LOW_LEVEL) restrict, restricType = False, FORT_RESTRICTION.BUILDING_NOT_ENOUGH_RESOURCE return (restrict, restricType)
def getFort(self): return getClientFort()
def canBuild(self, buildingID): fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) else: return (True, '')
def canBuild(self, buildingID): fort = getClientFort() if fort is None: return (False, FORT_RESTRICTION.UNKNOWN) return (True, '')
def fini(self): fort = getClientFort() if fort: fort.onResponseReceived -= self._fort_onResponseReceived super(PlayerFortRequester, self).fini()