Пример #1
0
 def init(self, ctx=None):
     self._searchHandler = UnitAutoSearchHandler(self)
     self._searchHandler.init()
     selectedVehs = self.getSelectedVehicles(SELECTED_INTRO_VEHICLES_FIELD)
     if not selectedVehs and g_currentVehicle.isPresent():
         selectedVehs = [g_currentVehicle.item.intCD]
     self.setSelectedVehicles(SELECTED_INTRO_VEHICLES_FIELD, selectedVehs)
     return super(ESportIntroEntity, self).init(ctx)
Пример #2
0
 def init(self, ctx = None):
     self._searchHandler = UnitAutoSearchHandler(self)
     self._searchHandler.init()
     selectedVehs = self.getSelectedVehicles('selectedIntroVehicles')
     if not selectedVehs and g_currentVehicle.isPresent():
         selectedVehs = [g_currentVehicle.item.intCD]
     self.setSelectedVehicles('selectedIntroVehicles', selectedVehs)
     return super(ESportIntroEntity, self).init(ctx)
Пример #3
0
class ESportIntroEntity(UnitIntroEntity):
    def __init__(self):
        RQ_TYPE = settings.REQUEST_TYPE
        handlers = {
            RQ_TYPE.AUTO_SEARCH: self.doAutoSearch,
            RQ_TYPE.ACCEPT_SEARCH: self.acceptSearch,
            RQ_TYPE.DECLINE_SEARCH: self.declineSearch
        }
        super(ESportIntroEntity,
              self).__init__(FUNCTIONAL_FLAG.E_SPORT, handlers,
                             IUnitIntroListener, PREBATTLE_TYPE.E_SPORT_COMMON)

    def init(self, ctx=None):
        self._searchHandler = UnitAutoSearchHandler(self)
        self._searchHandler.init()
        selectedVehs = self.getSelectedVehicles(SELECTED_INTRO_VEHICLES_FIELD)
        if not selectedVehs and g_currentVehicle.isPresent():
            selectedVehs = [g_currentVehicle.item.intCD]
        self.setSelectedVehicles(SELECTED_INTRO_VEHICLES_FIELD, selectedVehs)
        return super(ESportIntroEntity, self).init(ctx)

    def fini(self, ctx=None, woEvents=False):
        if self._searchHandler is not None:
            self._searchHandler.fini()
            self._searchHandler = None
        return super(ESportIntroEntity, self).fini(ctx=ctx, woEvents=woEvents)

    def initEvents(self, listener):
        if listener in self.getListenersIterator():
            if self._searchHandler:
                self._searchHandler.initEvents(listener)
        else:
            LOG_ERROR('Listener not found', listener)

    def resetPlayerState(self):
        if self._searchHandler and self._searchHandler.isInSearch():
            self._searchHandler.stop()

    def doSelectAction(self, action):
        actionName = action.actionName
        if actionName == PREBATTLE_ACTION_NAME.E_SPORT:
            g_eventDispatcher.showUnitWindow(self._prbType)
            return SelectResult(True)
        return super(ESportIntroEntity, self).doSelectAction(action)

    def hasLockedState(self):
        return self._searchHandler and self._searchHandler.isInSearch()

    def getSelectedVehicles(self, section, useAll=True):
        accSettings = dict(AccountSettings.getSettings('unitWindow'))
        vehicles = accSettings.get(section, [])
        items = self.itemsCache.items
        if vehicles or not useAll:
            selectedVehicles = []
            for vehCD in vehicles:
                vehCD = int(vehCD)
                if items.doesVehicleExist(vehCD):
                    vehicle = self.itemsCache.items.getItemByCD(vehCD)
                    if vehicle.isInInventory:
                        selectedVehicles.append(vehCD)
                LOG_WARNING(
                    'There is invalid vehicle compact descriptor in the stored unit seelected vehicles data',
                    vehCD)

        else:
            criteria = REQ_CRITERIA.INVENTORY | REQ_CRITERIA.VEHICLE.ACTIVE_IN_NATION_GROUP
            selectedVehicles = [
                k for k, v in self.itemsCache.items.getVehicles(
                    criteria).iteritems()
                if v.level in self._rosterSettings.getLevelsRange()
            ]
        return selectedVehicles

    def setSelectedVehicles(self, section, vehicles):
        unitWindowSettings = dict(AccountSettings.getSettings('unitWindow'))
        unitWindowSettings[section] = vehicles
        AccountSettings.setSettings('unitWindow', unitWindowSettings)

    def doAutoSearch(self, ctx, callback=None):
        if ctx.isRequestToStart():
            if self.isParentControlActivated(callback=callback):
                return
            result = self._searchHandler.start(ctx.getVehTypes())
        else:
            result = self._searchHandler.stop()
        if callback:
            callback(result)

    def acceptSearch(self, ctx, callback=None):
        result = self._searchHandler.accept()
        if callback:
            callback(result)

    def declineSearch(self, ctx, callback=None):
        result = self._searchHandler.decline()
        if callback:
            callback(result)

    def _loadUnit(self):
        g_eventDispatcher.loadUnit(self._prbType)

    def _unloadUnit(self):
        g_eventDispatcher.removeUnitFromCarousel(self._prbType)

    def _showWindow(self):
        g_eventDispatcher.showUnitWindow(self._prbType)