示例#1
0
 def __init__(self):
     self.__selectedID = None
     self.__callback = None
     self.__callbackUpdate = None
     self.__isSubscribed = False
     self.__cooldown = PrbCooldownManager()
     self.__handlers = {}
     self.__cache = {}
示例#2
0
 def __init__(self, settings, permClass = None, limits = None, requestHandlers = None):
     super(PrbDispatcher, self).__init__(interfaces.IPrbListener, requestHandlers)
     self._settings = settings
     self._permClass = permClass or DefaultPrbPermissions
     self._limits = limits or DefaultLimits(self)
     self._hasEntity = False
     self._cooldown = PrbCooldownManager()
示例#3
0
 def __init__(self):
     self.__selectedID = None
     self.__callback = None
     self.__callbackUpdate = None
     self.__isSubscribed = False
     self.__cooldown = PrbCooldownManager()
     self.__handlers = {}
     self.__cache = {}
示例#4
0
class UnitsListRequester(interfaces.IPrbListRequester):

    def __init__(self):
        self.__selectedID = None
        self.__callback = None
        self.__callbackUpdate = None
        self.__isSubscribed = False
        self.__cooldown = PrbCooldownManager()
        self.__handlers = {}
        self.__cache = {}
        return

    def __del__(self):
        LOG_DEBUG('Units list requester deleted:', self)

    def subscribe(self, unitTypeFlags):
        if self.__isSubscribed:
            return
        self.__isSubscribed = True
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            self.__cooldown.process(REQUEST_TYPE.UNITS_LIST)
            self.__handlers = {REQUEST_TYPE.UNITS_RECENTER: self.__recenter,
             REQUEST_TYPE.UNITS_REFRESH: self.__refresh,
             REQUEST_TYPE.UNITS_NAV_LEFT: self.__navLeft,
             REQUEST_TYPE.UNITS_NAV_RIGHT: self.__navRight}
            browser.subscribe(unitTypeFlags=unitTypeFlags)
            browser.onResultsReceived += self.__unitBrowser_onUnitsListReceived
            browser.onResultsUpdated += self.__unitBrowser_onUnitsListUpdated
        else:
            LOG_ERROR('Unit browser is not defined')

    def unsubscribe(self):
        self.__handlers.clear()
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            if self.__isSubscribed:
                browser.unsubscribe()
            browser.onResultsReceived -= self.__unitBrowser_onUnitsListReceived
            browser.onResultsUpdated -= self.__unitBrowser_onUnitsListUpdated
        self.__isSubscribed = False
        self.__selectedID = None
        self.__pageNum = 0
        return

    def setSelectedID(self, selectedID):
        self.__selectedID = selectedID

    def start(self, callback):
        self.__cache.clear()
        if callback is not None and callable(callback):
            self.__callback = callback
        else:
            LOG_ERROR('Callback is None or is not callable')
            return
        if self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST):
            self.__cooldown.fireEvent(REQUEST_TYPE.UNITS_LIST)
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            self.__unitBrowser_onUnitsListReceived(browser.results)
        return

    def stop(self):
        self.__cache.clear()
        self.__callback = None
        self.__callbackUpdate = None
        return

    def request(self, **kwargs):
        if self.__cooldown.validate(REQUEST_TYPE.UNITS_LIST):
            return
        LOG_DEBUG('Request list of units', kwargs)
        self.__cooldown.process(REQUEST_TYPE.UNITS_LIST)
        self.__cache.clear()
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            if 'req' in kwargs:
                req = kwargs['req']
                if req in self.__handlers:
                    if self.__handlers[req](browser, **kwargs):
                        Waiting.show('prebattle/auto_search')
                else:
                    LOG_ERROR('Request is not supported', kwargs)
            else:
                LOG_ERROR('Request is not found', self.__handlers.keys(), kwargs)
        else:
            LOG_ERROR('Unit browser is not defined')

    def addCacheItem(self, item):
        self.__cache[item.cfdUnitID] = item

    def getCacheItem(self, cfdUnitID):
        try:
            item = self.__cache[cfdUnitID]
        except KeyError:
            LOG_ERROR('Item not found in cache', cfdUnitID)
            item = None

        return item

    def removeCacheItem(self, cfdUnitID):
        self.__cache.pop(cfdUnitID, None)
        return

    def __navLeft(self, browser, **kwargs):
        browser.left()
        return True

    def __navRight(self, browser, **kwargs):
        browser.right()
        return True

    def __recenter(self, browser, **kwargs):
        result = False
        if 'unitTypeFlags' in kwargs:
            browser.recenter(g_itemsCache.items.stats.globalRating, unitTypeFlags=kwargs['unitTypeFlags'])
            result = True
        else:
            LOG_ERROR('Types of units are not defined', kwargs)
        return result

    def __refresh(self, browser, **kwargs):
        browser.refresh()
        return True

    def __unitBrowser_onUnitsListReceived(self, data):
        Waiting.hide('prebattle/auto_search')
        if self.__callback:
            self.__callback(self.__selectedID, True, self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST), UnitsListIterator(self, data))

    def __unitBrowser_onUnitsListUpdated(self, data):
        if self.__callback:
            self.__callback(self.__selectedID, False, False, UnitsUpdateIterator(self, data))
示例#5
0
class UnitsListRequester(interfaces.IPrbListRequester):
    def __init__(self):
        self.__selectedID = None
        self.__callback = None
        self.__callbackUpdate = None
        self.__isSubscribed = False
        self.__cooldown = PrbCooldownManager()
        self.__handlers = {}
        self.__cache = {}
        return

    def __del__(self):
        LOG_DEBUG('Units list requester deleted:', self)

    def subscribe(self, unitTypeFlags):
        if self.__isSubscribed:
            return
        self.__isSubscribed = True
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            self.__cooldown.process(REQUEST_TYPE.UNITS_LIST)
            self.__handlers = {
                REQUEST_TYPE.UNITS_RECENTER: self.__recenter,
                REQUEST_TYPE.UNITS_REFRESH: self.__refresh,
                REQUEST_TYPE.UNITS_NAV_LEFT: self.__navLeft,
                REQUEST_TYPE.UNITS_NAV_RIGHT: self.__navRight
            }
            browser.subscribe(unitTypeFlags=unitTypeFlags)
            browser.onResultsReceived += self.__unitBrowser_onUnitsListReceived
            browser.onResultsUpdated += self.__unitBrowser_onUnitsListUpdated
        else:
            LOG_ERROR('Unit browser is not defined')

    def unsubscribe(self):
        self.__handlers.clear()
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            if self.__isSubscribed:
                browser.unsubscribe()
            browser.onResultsReceived -= self.__unitBrowser_onUnitsListReceived
            browser.onResultsUpdated -= self.__unitBrowser_onUnitsListUpdated
        self.__isSubscribed = False
        self.__selectedID = None
        self.__pageNum = 0
        return

    def setSelectedID(self, selectedID):
        self.__selectedID = selectedID

    def start(self, callback):
        self.__cache.clear()
        if callback is not None and callable(callback):
            self.__callback = callback
        else:
            LOG_ERROR('Callback is None or is not callable')
            return
        if self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST):
            self.__cooldown.fireEvent(REQUEST_TYPE.UNITS_LIST)
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            self.__unitBrowser_onUnitsListReceived(browser.results)
        return

    def stop(self):
        self.__cache.clear()
        self.__callback = None
        self.__callbackUpdate = None
        return

    def request(self, **kwargs):
        if self.__cooldown.validate(REQUEST_TYPE.UNITS_LIST):
            return
        LOG_DEBUG('Request list of units', kwargs)
        self.__cooldown.process(REQUEST_TYPE.UNITS_LIST)
        self.__cache.clear()
        browser = prb_getters.getClientUnitBrowser()
        if browser:
            if 'req' in kwargs:
                req = kwargs['req']
                if req in self.__handlers:
                    if self.__handlers[req](browser, **kwargs):
                        Waiting.show('prebattle/auto_search')
                else:
                    LOG_ERROR('Request is not supported', kwargs)
            else:
                LOG_ERROR('Request is not found', self.__handlers.keys(),
                          kwargs)
        else:
            LOG_ERROR('Unit browser is not defined')

    def addCacheItem(self, item):
        self.__cache[item.cfdUnitID] = item

    def getCacheItem(self, cfdUnitID):
        try:
            item = self.__cache[cfdUnitID]
        except KeyError:
            LOG_ERROR('Item not found in cache', cfdUnitID)
            item = None

        return item

    def removeCacheItem(self, cfdUnitID):
        self.__cache.pop(cfdUnitID, None)
        return

    def __navLeft(self, browser, **kwargs):
        browser.left()
        return True

    def __navRight(self, browser, **kwargs):
        browser.right()
        return True

    def __recenter(self, browser, **kwargs):
        result = False
        if 'unitTypeFlags' in kwargs:
            browser.recenter(g_itemsCache.items.stats.globalRating,
                             unitTypeFlags=kwargs['unitTypeFlags'])
            result = True
        else:
            LOG_ERROR('Types of units are not defined', kwargs)
        return result

    def __refresh(self, browser, **kwargs):
        browser.refresh()
        return True

    def __unitBrowser_onUnitsListReceived(self, data):
        Waiting.hide('prebattle/auto_search')
        if self.__callback:
            self.__callback(
                self.__selectedID, True,
                self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST),
                UnitsListIterator(self, data))

    def __unitBrowser_onUnitsListUpdated(self, data):
        if self.__callback:
            self.__callback(self.__selectedID, False, False,
                            UnitsUpdateIterator(self, data))