class _ItemsCache(object): def __init__(self): self.__items = ItemsRequester() self.__waitForSync = False self.onSyncStarted = Event() self.onSyncCompleted = Event() def init(self): g_playerEvents.onInventoryResync += self._onResync g_playerEvents.onDossiersResync += self._onResync g_playerEvents.onStatsResync += self._onResync g_playerEvents.onCenterIsLongDisconnected += self._onCenterIsLongDisconnected def fini(self): self.onSyncStarted.clear() self.onSyncCompleted.clear() g_playerEvents.onCenterIsLongDisconnected -= self._onCenterIsLongDisconnected g_playerEvents.onStatsResync -= self._onResync g_playerEvents.onDossiersResync -= self._onResync g_playerEvents.onInventoryResync -= self._onResync @property def waitForSync(self): return self.__waitForSync @property def items(self): return self.__items @async def update(self, diff = None, callback = None): self.__invalidateData(diff, callback) def clear(self): return self.items.clear() def _onResync(self, *args): if not self.__waitForSync: self.__invalidateData() def _onCenterIsLongDisconnected(self, isLongDisconnected): self.items.dossiers.onCenterIsLongDisconnected(isLongDisconnected) def __invalidateData(self, diff = None, callback = lambda *args: None): def cbWrapper(*args): self.__waitForSync = False self.onSyncCompleted() callback(*args) self.__waitForSync = True self.onSyncStarted() self.__items.invalidateCache(diff) self.__items.request()(cbWrapper) def isSynced(self): return self.items.isSynced()
def __init__(self): super(ItemsCache, self).__init__() goodies = GoodiesRequester() self.__items = ItemsRequester.ItemsRequester(InventoryRequester(), StatsRequester(), DossierRequester(), goodies, ShopRequester(goodies), RecycleBinRequester(), VehicleRotationRequester(), RankedRequester(), BattleRoyaleRequester(), BadgesRequester(), EpicMetaGameRequester(), TokensRequester(), dependency.instance(IFestivityFactory).getRequester(), BlueprintsRequester(), SessionStatsRequester(), AnonymizerRequester(), GiftSystemRequester()) self.__compatVehiclesCache = CompatVehiclesCache() self.__waitForSync = False self.__syncFailed = False self.onSyncStarted = Event() self.onSyncCompleted = Event() self.onSyncFailed = Event()
def __init__(self): super(ItemsCache, self).__init__() goodies = GoodiesRequester() self.__items = ItemsRequester.ItemsRequester( InventoryRequester(), StatsRequester(), DossierRequester(), goodies, ShopRequester(goodies), RecycleBinRequester(), VehicleRotationRequester(), RankedRequester()) self.__waitForSync = False self.onSyncStarted = Event() self.onSyncCompleted = Event()
def getVehicleInfo(self): Waiting.show('updating') items = yield ItemsRequester().request() vehicle = items.getItemByCD(self.vehicleDescr.type.compactDescr) if vehicle is None: LOG_ERROR('There is error while showing vehicle info window: ', self.vehicleDescr.type.compactDescr) return else: params = vehicle.getParams() tankmenParams = list() for slotIdx, tankman in vehicle.crew: role = vehicle.descriptor.type.crewRoles[slotIdx][0] tankmanLabel = '' if tankman is not None: tankmanLabel = '%s %s (%d%%)' % (tankman.rankUserName, tankman.lastUserName, tankman.roleLevel) tankmenParams.append({ 'tankmanType': i18n.convert(tankmen.getSkillsConfig()[role].get( 'userString', '')), 'value': tankmanLabel }) info = { 'vehicleName': vehicle.longUserName, 'vehicleDiscription': vehicle.fullDescription, 'vehicleImage': vehicle.icon, 'vehicleLevel': vehicle.level, 'vehicleNation': vehicle.nationID, 'vehicleElite': vehicle.isElite, 'vehicleType': vehicle.type, 'VehicleInfoPropsData': [{ 'name': n, 'value': v } for n, v in params['parameters']], 'VehicleInfoBaseData': params['base'], 'VehicleInfoCrewData': tankmenParams } self.as_setVehicleInfoS(info) Waiting.hide('updating') return
def __processSyncEBankData(self): self.balance, self.error = yield StatsRequester().ebankGetBalance() if _VcoinGetBalanceRequester.CACHE_ENABLED: self.__isCached = not len(self.error) self.__isWaitForSync = False self.__updateBalanceCooldown() items = len(self.error) == 0 and (yield ItemsRequester().request()) self.goldBalance = items.stats.actualGold self.exchangeRate = items.shop.ebankVCoinExchangeRate self.minTransactVal = items.shop.ebankMinTransactionValue self.maxTransactVal = items.shop.ebankMaxTransactionValue self.onEbankGetBalanceComplete(self.error)
def _prepareAndSendData(self): """ Create necessary object which expects flash component and pass it through DAAPI """ items = yield ItemsRequester().request() module = items.getItemByCD(self.meta.getTypeCompDescr()) if module is not None: shop = items.shop actualPrice = self.meta.getActualPrice(module) if actualPrice[1] > 0 and actualPrice[0] > 0: isAction = shop.isEnabledBuyingGoldShellsForCredits and module.itemTypeID == vehicles._SHELL or shop.isEnabledBuyingGoldEqsForCredits and module.itemTypeID == vehicles._EQUIPMENT icon = self.__getIcon(module) extraData = None extraData = module.itemTypeID == vehicles._GUN and module.isClipGun( ) and CLIP_ICON_PATH resultData = { 'id': self.meta.getTypeCompDescr(), 'type': module.itemTypeName, 'price': actualPrice, 'icon': icon, 'name': module.userName, 'descr': module.getShortInfo(), 'currency': 'credits' if actualPrice[1] == 0 else 'gold', 'defaultValue': self.meta.getDefaultValue(module), 'maxAvailableCount': self.meta.getMaxAvailableItemsCount(module), 'isActionNow': isAction, EXTRA_MODULE_INFO: extraData } self.as_setDataS(resultData) else: LOG_ERROR("Couldn't find modul with compact:", self.meta.getTypeCompDescr()) self.onWindowClose() return
def __init__(self): self.__items = ItemsRequester() self.__waitForSync = False self.onSyncStarted = Event() self.onSyncCompleted = Event()
class _ItemsCache(object): def __init__(self): self.__items = ItemsRequester() self.__waitForSync = False self.onSyncStarted = Event() self.onSyncCompleted = Event() def init(self): g_playerEvents.onInventoryResync += self.__pe_onInventoryResync g_playerEvents.onDossiersResync += self.__pe_onDossiersResync g_playerEvents.onStatsResync += self.__pe_onStatsResync g_playerEvents.onCenterIsLongDisconnected += self._onCenterIsLongDisconnected def fini(self): self.onSyncStarted.clear() self.onSyncCompleted.clear() g_playerEvents.onCenterIsLongDisconnected -= self._onCenterIsLongDisconnected g_playerEvents.onStatsResync -= self.__pe_onStatsResync g_playerEvents.onDossiersResync -= self.__pe_onDossiersResync g_playerEvents.onInventoryResync -= self.__pe_onInventoryResync @property def waitForSync(self): return self.__waitForSync @property def items(self): return self.__items @async def update(self, updateReason, diff = None, callback = None): if diff is None: self.__invalidateFullData(updateReason, callback) else: self.__invalidateData(updateReason, diff, callback) def clear(self): LOG_DEBUG('Clearing items cache.') return self.items.clear() def _onResync(self, reason): if not self.__waitForSync: self.__invalidateFullData(reason) def _onCenterIsLongDisconnected(self, isLongDisconnected): self.items.dossiers.onCenterIsLongDisconnected(isLongDisconnected) def __invalidateData(self, updateReason, diff, callback = lambda *args: None): self.__waitForSync = True self.onSyncStarted() if updateReason != CACHE_SYNC_REASON.DOSSIER_RESYNC: invalidItems = self.__items.invalidateCache(diff) else: invalidItems = {} def cbWrapper(*args): self.__waitForSync = False self.onSyncCompleted(updateReason, invalidItems) callback(*args) self.__items.request()(cbWrapper) def __invalidateFullData(self, updateReason, callback = lambda *args: None): self.__waitForSync = True self.onSyncStarted() def cbWrapper(*args): self.__waitForSync = False if updateReason != CACHE_SYNC_REASON.DOSSIER_RESYNC: invalidItems = self.__items.invalidateCache() else: invalidItems = {} self.onSyncCompleted(updateReason, invalidItems) callback(*args) self.__items.request()(cbWrapper) def isSynced(self): return self.items.isSynced() def __pe_onStatsResync(self, *args): self._onResync(CACHE_SYNC_REASON.STATS_RESYNC) def __pe_onInventoryResync(self, *args): self._onResync(CACHE_SYNC_REASON.INVENTORY_RESYNC) def __pe_onDossiersResync(self, *args): self._onResync(CACHE_SYNC_REASON.DOSSIER_RESYNC)
class _ItemsCache(object): def __init__(self): self.__items = ItemsRequester() self.__waitForSync = False self.onSyncStarted = Event() self.onSyncCompleted = Event() def init(self): g_playerEvents.onInventoryResync += self.__pe_onInventoryResync g_playerEvents.onDossiersResync += self.__pe_onDossiersResync g_playerEvents.onStatsResync += self.__pe_onStatsResync g_playerEvents.onCenterIsLongDisconnected += self._onCenterIsLongDisconnected def fini(self): self.onSyncStarted.clear() self.onSyncCompleted.clear() g_playerEvents.onCenterIsLongDisconnected -= self._onCenterIsLongDisconnected g_playerEvents.onStatsResync -= self.__pe_onStatsResync g_playerEvents.onDossiersResync -= self.__pe_onDossiersResync g_playerEvents.onInventoryResync -= self.__pe_onInventoryResync @property def waitForSync(self): return self.__waitForSync @property def items(self): return self.__items @async def update(self, updateReason, diff=None, callback=None): if diff is None: self.__invalidateFullData(updateReason, callback) else: self.__invalidateData(updateReason, diff, callback) def clear(self): LOG_DEBUG('Clearing items cache.') return self.items.clear() def _onResync(self, reason): if not self.__waitForSync: self.__invalidateFullData(reason) def _onCenterIsLongDisconnected(self, isLongDisconnected): self.items.dossiers.onCenterIsLongDisconnected(isLongDisconnected) def __invalidateData(self, updateReason, diff, callback=lambda *args: None): self.__waitForSync = True self.onSyncStarted() if updateReason != CACHE_SYNC_REASON.DOSSIER_RESYNC: invalidItems = self.__items.invalidateCache(diff) else: invalidItems = {} def cbWrapper(*args): self.__waitForSync = False self.onSyncCompleted(updateReason, invalidItems) callback(*args) self.__items.request()(cbWrapper) def __invalidateFullData(self, updateReason, callback=lambda *args: None): self.__waitForSync = True self.onSyncStarted() def cbWrapper(*args): self.__waitForSync = False if updateReason != CACHE_SYNC_REASON.DOSSIER_RESYNC: invalidItems = self.__items.invalidateCache() else: invalidItems = {} self.onSyncCompleted(updateReason, invalidItems) callback(*args) self.__items.request()(cbWrapper) def isSynced(self): return self.items.isSynced() def __pe_onStatsResync(self, *args): self._onResync(CACHE_SYNC_REASON.STATS_RESYNC) def __pe_onInventoryResync(self, *args): self._onResync(CACHE_SYNC_REASON.INVENTORY_RESYNC) def __pe_onDossiersResync(self, *args): self._onResync(CACHE_SYNC_REASON.DOSSIER_RESYNC)
def submit(self, count, currency): items = yield ItemsRequester().request() module = items.getItemByCD(self.meta.getTypeCompDescr()) self.meta.submit(module, count, currency) self._callHandler(True, self.meta.getTypeCompDescr(), count, currency) self.destroy()