コード例 #1
0
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()
コード例 #2
0
 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()
コード例 #3
0
 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()
コード例 #4
0
    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
コード例 #5
0
 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)
コード例 #6
0
 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
コード例 #7
0
ファイル: itemscache.py プロジェクト: kblw/wot_client
 def __init__(self):
     self.__items = ItemsRequester()
     self.__waitForSync = False
     self.onSyncStarted = Event()
     self.onSyncCompleted = Event()
コード例 #8
0
ファイル: itemscache.py プロジェクト: kblw/wot_client
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)
コード例 #9
0
 def __init__(self):
     self.__items = ItemsRequester()
     self.__waitForSync = False
     self.onSyncStarted = Event()
     self.onSyncCompleted = Event()
コード例 #10
0
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)
コード例 #11
0
 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()