class MapboxRewardChoiceView(ViewImpl):
    __slots__ = ('__tooltips', '__selectableCrewbook')
    _COMMON_SOUND_SPACE = getMapboxViewSoundSpace()
    __mapboxCtrl = dependency.descriptor(IMapboxController)

    def __init__(self, layoutID, selectableCrewbook, *args, **kwargs):
        settings = ViewSettings(layoutID)
        settings.model = MapBoxRewardChoiceViewModel()
        settings.args = args
        settings.kwargs = kwargs
        self.__tooltips = []
        self.__selectableCrewbook = selectableCrewbook
        super(MapboxRewardChoiceView, self).__init__(settings)

    @property
    def viewModel(self):
        return super(MapboxRewardChoiceView, self).getViewModel()

    def createToolTip(self, event):
        tooltip = getMapboxRewardTooltip(event, self.__tooltips,
                                         self.getParentWindow())
        return tooltip or super(MapboxRewardChoiceView,
                                self).createToolTip(event)

    def _onLoading(self, *args, **kwargs):
        super(MapboxRewardChoiceView, self)._onLoading(*args, **kwargs)
        crewbookOptions = self.__selectableCrewbook.options
        packer = getMapboxBonusPacker()
        with self.viewModel.transaction() as model:
            rewardsList = model.rewards
            rewardsList.clearItems()
            packMapboxRewardModelAndTooltip(rewardsList, [crewbookOptions],
                                            packer, 0, self.__tooltips)
            rewardsList.invalidate()
            model.setRewardType(
                backport.text(
                    R.strings.mapbox.selectableCrewbook.dyn(
                        self.__selectableCrewbook.name)()))

    def _finalize(self):
        self.viewModel.onCloseClick -= self.__onCloseClick
        self.viewModel.onTakeClick -= self.__onTakeClick
        super(MapboxRewardChoiceView, self)._finalize()

    def _initialize(self, *args, **kwargs):
        super(MapboxRewardChoiceView, self)._initialize(*args, **kwargs)
        self.viewModel.onTakeClick += self.__onTakeClick
        self.viewModel.onCloseClick += self.__onCloseClick

    def __onCloseClick(self):
        self.destroyWindow()

    def __onTakeClick(self, args):
        itemID = args.get('itemID')
        self.__mapboxCtrl.selectCrewbookNation(itemID)
class MapBoxAwardsView(ViewImpl):
    __slots__ = ('__numBattles', '__tooltips', '__reward')
    _COMMON_SOUND_SPACE = getMapboxViewSoundSpace()

    def __init__(self, numBattles, reward, *args, **kwargs):
        settings = ViewSettings(
            layoutID=R.views.lobby.mapbox.MapBoxAwardsView(),
            model=MapBoxAwardsViewModel())
        settings.args = args
        settings.kwargs = kwargs
        super(MapBoxAwardsView, self).__init__(settings)
        self.__numBattles = numBattles
        self.__reward = reward
        self.__tooltips = []

    @property
    def viewModel(self):
        return super(MapBoxAwardsView, self).getViewModel()

    def createToolTip(self, event):
        tooltip = getMapboxRewardTooltip(event, self.__tooltips,
                                         self.getParentWindow())
        return tooltip or super(MapBoxAwardsView, self).createToolTip(event)

    def _initialize(self, *args, **kwargs):
        super(MapBoxAwardsView, self)._initialize(*args, **kwargs)
        self.viewModel.onPick += self.__onPick

    def _finalize(self):
        self.viewModel.onPick -= self.__onPick
        super(MapBoxAwardsView, self)._finalize()

    def _onLoading(self, *args, **kwargs):
        super(MapBoxAwardsView, self)._onLoading(*args, **kwargs)
        packer = getMapboxBonusPacker()
        with self.viewModel.transaction() as model:
            model.setBattlesNumber(self.__numBattles)
            rewardsList = model.rewards
            packMapboxRewardModelAndTooltip(rewardsList, self.__reward, packer,
                                            self.__numBattles, self.__tooltips)
            rewardsList.invalidate()
        playSound(MapBoxSounds.REWARD_SCREEN.value)

    def __onPick(self, args):
        rewardModel = self.viewModel.rewards.getItem(int(args['index']))
        selectableCrewbook = first([
            item for item in self.__reward
            if item.getName() == 'selectableCrewbook'
        ])
        reward = first([
            item for item in selectableCrewbook.getItems()
            if item.name == rewardModel.getName()
        ])
        showMapboxRewardChoice(reward)
예제 #3
0
class MapBoxIntro(ViewImpl):
    __slots__ = ('__closeCallback',)
    _COMMON_SOUND_SPACE = getMapboxViewSoundSpace()
    __mapboxCtrl = dependency.descriptor(IMapboxController)
    __lobbyContext = dependency.descriptor(ILobbyContext)

    def __init__(self, layoutID, closeCallback):
        settings = ViewSettings(layoutID)
        settings.flags = ViewFlags.LOBBY_TOP_SUB_VIEW
        settings.model = MapBoxIntroModel()
        self.__closeCallback = closeCallback
        super(MapBoxIntro, self).__init__(settings)

    @property
    def viewModel(self):
        return super(MapBoxIntro, self).getViewModel()

    def _initialize(self):
        super(MapBoxIntro, self)._initialize()
        self.__lobbyContext.getServerSettings().onServerSettingsChange += self.__updateViewModel
        self.__mapboxCtrl.onPrimeTimeStatusUpdated += self.__onPrimeTimeChanged
        self.viewModel.onClose += self.__onClose

    def _finalize(self):
        self.viewModel.onClose -= self.__onClose
        self.__lobbyContext.getServerSettings().onServerSettingsChange -= self.__updateViewModel
        self.__mapboxCtrl.onPrimeTimeStatusUpdated -= self.__onPrimeTimeChanged
        super(MapBoxIntro, self)._finalize()

    def _onLoading(self, *args, **kwargs):
        self.__updateViewModel()

    def __onPrimeTimeChanged(self, *_):
        self.__updateViewModel()

    @server_settings.serverSettingsChangeListener(Configs.MAPBOX_CONFIG.value)
    def __onServerSettingsChanged(self, diff):
        if not self.__mapboxCtrl.getModeSettings().isEnabled:
            self.destroyWindow()
            return
        self.__updateViewModel()

    def __updateViewModel(self):
        nextSeason = self.__mapboxCtrl.getNextSeason()
        actualSeason = self.__mapboxCtrl.getCurrentSeason() or nextSeason
        if actualSeason is None:
            return
        else:
            with self.getViewModel().transaction() as model:
                model.setIsActive(self.__mapboxCtrl.isActive())
                if not self.__mapboxCtrl.isActive() and nextSeason is not None:
                    model.setDate(time_utils.makeLocalServerTime(nextSeason.getStartDate()))
                model.setSeasonNumber(actualSeason.getNumber())
            return

    def __onClose(self):
        self.destroyWindow()
        if not SelectorBattleTypesUtils.isKnownBattleType(SELECTOR_BATTLE_TYPES.MAPBOX):
            SelectorBattleTypesUtils.setBattleTypeAsKnown(SELECTOR_BATTLE_TYPES.MAPBOX)
        if self.__closeCallback is not None:
            self.__closeCallback()
        elif not self.__mapboxCtrl.isActive():
            showModeSelectorWindow(False)
        else:
            showMissionsMapboxProgression()
        return
예제 #4
0
class MapBoxInfoOverlay(WebView):
    _COMMON_SOUND_SPACE = getMapboxViewSoundSpace()