Example #1
0
 def __init__(self, settings):
     super(ExternalFlashComponent, self).__init__()
     self.__settings = settings
     self.__owner = None
     self.__state = _ExternalComponentState.UNDEFINED
     self.__bridge = DAAPIRootBridge(settings.rootPath,
                                     settings.initCallback)
     return
Example #2
0
 def __init__(self, settings):
     super(ExternalFlashComponent,
           self).__init__(settings.url, path=SCALEFORM_SWF_PATH_V3)
     self.__settings = settings
     self.__owner = None
     self.__state = _EXTERNAL_COMPONENT_STATE.UNDEFINED
     self.__bridge = DAAPIRootBridge(settings.rootPath,
                                     settings.initCallback)
     self.__bridge.setPyScript(weakref.proxy(self))
     return
Example #3
0
 def __init__(self, parentUI):
     super(MarkersManager, self).__init__(settings.MARKERS_MANAGER_SWF,
                                          path=SCALEFORM_SWF_PATH_V3)
     self.component.wg_inputKeyMode = 2
     self.component.position.z = DEPTH_OF_VehicleMarker
     self.component.drawWithRestrictedViewPort = False
     self.movie.backgroundAlpha = 0
     self.__plugins = None
     self.__canvas = None
     self.__parentUI = parentUI
     self.__daapiBridge = DAAPIRootBridge('root.vehicleMarkersCanvas',
                                          'registerMarkersManager')
     self.__daapiBridge.setPyScript(weakref.proxy(self))
     return
Example #4
0
 def __init__(self):
     super(CrosshairPanel, self).__init__('crosshairPanel.swf', className=_CROSSHAIR_PANEL_COMPONENT, path=SCALEFORM_SWF_PATH_V3)
     self.__plugins = PluginsCollection(self)
     self.__plugins.addPlugins({'core': CorePlugin,
      'settings': SettingsPlugin,
      'events': EventBusPlugin,
      'ammo': AmmoPlugin,
      'vehicleState': VehicleStatePlugin,
      'targetDistance': TargetDistancePlugin,
      'gunMarkerDistance': GunMarkerDistancePlugin})
     self.__viewID = CROSSHAIR_VIEW_ID.UNDEFINED
     self.__zoomFactor = 0.0
     self.__distance = 0
     self.__hasAmmo = True
     self.__configure()
     self.__daapiBridge = DAAPIRootBridge(rootPath='root.g_modeMC', initCallback='registerCrosshairPanel')
     self.__daapiBridge.setPyScript(weakref.proxy(self))
Example #5
0
 def __init__(self, appNS):
     super(BattleEntry, self).__init__(
         'battle.swf', appNS,
         DAAPIRootBridge(initCallback='registerBattleTest'))
     self.__markers2D = None
     self.__crosshairPanel = None
     self.__input = None
     return
Example #6
0
 def __init__(self, appNS, ctrlModeFlags):
     super(BattleEntry, self).__init__(
         R.entries.battle(),
         appNS,
         ctrlModeFlags,
         daapiBridge=DAAPIRootBridge(initCallback='registerBattleTest'))
     self.__input = None
     return
Example #7
0
 def __init__(self, parentUI):
     super(MarkersManager, self).__init__(settings.MARKERS_MANAGER_SWF, path=SCALEFORM_SWF_PATH_V3)
     self.component.wg_inputKeyMode = 2
     self.component.position.z = DEPTH_OF_VehicleMarker
     self.component.drawWithRestrictedViewPort = False
     self.movie.backgroundAlpha = 0
     self.__plugins = None
     self.__canvas = None
     self.__parentUI = parentUI
     self.__daapiBridge = DAAPIRootBridge('root.vehicleMarkersCanvas', 'registerMarkersManager')
     self.__daapiBridge.setPyScript(weakref.proxy(self))
     return
Example #8
0
class ExternalFlashComponent(FlashComponentWrapper, IExternalFlashComponent):
    def __init__(self, settings):
        super(ExternalFlashComponent, self).__init__()
        self.__settings = settings
        self.__owner = None
        self.__state = _ExternalComponentState.UNDEFINED
        self.__bridge = DAAPIRootBridge(settings.rootPath,
                                        settings.initCallback)
        return

    @property
    def alias(self):
        return self.__settings.alias

    @property
    def owner(self):
        return self.__owner

    def createExternalComponent(self):
        self.createComponent(swf=self.__settings.url)
        self.__bridge.setPyScript(weakref.proxy(self))

    def setOwner(self, owner):
        self.__owner = owner
        self.__tryToInvokeRegisterEvent(_ExternalComponentState.REGISTERED)

    def close(self):
        self.__invokeUnregisterEvent()
        self.__owner = None
        self.__state ^= ~_ExternalComponentState.CREATED
        self.__state |= _ExternalComponentState.CLOSED
        if self.__bridge is not None:
            self.__bridge.clear()
            self.__bridge = None
        super(ExternalFlashComponent, self).close()
        return

    def getSize(self):
        return self.component.size

    def setSize(self, width, height):
        self.component.size = (width, height)

    def getScale(self):
        return self.movie.stage.scaleX

    def setScale(self, scale):
        stage = self.movie.stage
        stage.scaleX = scale
        stage.scaleY = scale

    def startPlugins(self):
        pass

    def afterCreate(self):
        super(ExternalFlashComponent, self).afterCreate()
        self.__tryToInvokeRegisterEvent(_ExternalComponentState.CREATED)

    def invokeRegisterComponentForReplay(self):
        g_eventBus.handleEvent(events.ComponentEvent(
            events.ComponentEvent.COMPONENT_REGISTERED, self.owner, self,
            self.alias),
                               scope=EVENT_BUS_SCOPE.GLOBAL)

    def __tryToInvokeRegisterEvent(self, step):
        prevSteps = self.__state
        self.__state |= step
        if prevSteps != self.__state and self.__state == _ExternalComponentState.INITED:
            g_eventBus.handleEvent(events.ComponentEvent(
                events.ComponentEvent.COMPONENT_REGISTERED, self.owner, self,
                self.alias),
                                   scope=EVENT_BUS_SCOPE.GLOBAL)

    def __invokeUnregisterEvent(self):
        if self.__state & _ExternalComponentState.REGISTERED > 0:
            self.__state ^= _ExternalComponentState.REGISTERED
            self.__state |= _ExternalComponentState.UNREGISTERED
            g_eventBus.handleEvent(events.ComponentEvent(
                events.ComponentEvent.COMPONENT_UNREGISTERED, self.owner, self,
                self.alias),
                                   scope=EVENT_BUS_SCOPE.GLOBAL)
Example #9
0
class CrosshairPanel(Flash.Flash, CrosshairPanelMeta):
    """Class is UI component of crosshair panel. It provides access to Action Script."""

    def __init__(self):
        super(CrosshairPanel, self).__init__('crosshairPanel.swf', className=_CROSSHAIR_PANEL_COMPONENT, path=SCALEFORM_SWF_PATH_V3)
        self.__plugins = PluginsCollection(self)
        self.__plugins.addPlugins({'core': CorePlugin,
         'settings': SettingsPlugin,
         'events': EventBusPlugin,
         'ammo': AmmoPlugin,
         'vehicleState': VehicleStatePlugin,
         'targetDistance': TargetDistancePlugin,
         'gunMarkerDistance': GunMarkerDistancePlugin})
        self.__viewID = CROSSHAIR_VIEW_ID.UNDEFINED
        self.__zoomFactor = 0.0
        self.__distance = 0
        self.__hasAmmo = True
        self.__configure()
        self.__daapiBridge = DAAPIRootBridge(rootPath='root.g_modeMC', initCallback='registerCrosshairPanel')
        self.__daapiBridge.setPyScript(weakref.proxy(self))

    def close(self):
        if self.__daapiBridge is not None:
            self.__daapiBridge.clear()
            self.__daapiBridge = None
        super(CrosshairPanel, self).close()
        return

    def isVisible(self):
        """Is component visible.
        :return: bool.
        """
        return self.component.visible

    def setVisible(self, visible):
        """Sets visibility of component.
        :param visible: bool.
        """
        self.component.visible = visible

    def getViewID(self):
        """Gets current view ID of panel.
        :return: integer containing of CROSSHAIR_VIEW_ID.
        """
        return self.__viewID

    def setViewID(self, viewID):
        """Sets view ID of panel to change view presentation.
        :param viewID:
        """
        if viewID != self.__viewID:
            self.__viewID = viewID
            self.as_setViewS(viewID)

    def getSize(self):
        """Gets size of crosshair panel.
        :return: tuple(width, height).
        """
        return self.component.size

    def setSize(self, width, height):
        """Sets size of crosshair panel in pixels.
        :param width: integer containing width of panel.
        :param height: integer containing height of panel.
        """
        self.component.size = (width, height)

    def setPosition(self, x, y):
        """Sets position of crosshair panel in pixels.
        :param x: integer containing x coordinate of center in pixels.
        :param y: integer containing y coordinate of center in pixels.
        """
        self.as_recreateDeviceS(x, y)

    def getScale(self):
        """Gets scale factor.
        :return: float containing scale factor.
        """
        return self.movie.stage.scaleX

    def setScale(self, scale):
        """Sets scale factor.
        :param scale: float containing new scale factor.
        """
        self.movie.stage.scaleX = scale
        self.movie.stage.scaleY = scale

    def getZoom(self):
        """Gets current zoom factor of player's camera.
        :return: float containing zoom factor.
        """
        return self.__zoomFactor

    def setZoom(self, zoomFactor):
        """Gets current zoom factor of player's camera.
        :param zoomFactor: float containing zoom factor.
        """
        if zoomFactor == self.__zoomFactor:
            return
        self.__zoomFactor = zoomFactor
        if zoomFactor > 1:
            zoomString = i18n.makeString(INGAME_GUI.AIM_ZOOM, zoom=zoomFactor)
        else:
            zoomString = ''
        self.as_setZoomS(zoomString)

    def getDistance(self):
        """Gets distance to desired target(point).
        :return: integer containing distance in meters.
        """
        return self.__distance

    def setDistance(self, distance):
        """Sets distance to desired target(point).
        :param distance: integer containing distance in meters.
        """
        if distance != self.__distance:
            self.__distance = distance
            self.as_setDistanceS(i18n.makeString(INGAME_GUI.DISTANCE_METERS, meters=distance))

    def clearDistance(self, immediate = True):
        """Removes distance string from UI.
        :param immediate: if value equals True than removes distance string from UI immediately,
            otherwise - hides this sting with animation.
        """
        self.__distance = 0
        self.as_clearDistanceS(immediate)

    def setHasAmmo(self, hasAmmo):
        """Sets flag that indicates controlling vehicle has ammo.
        :param hasAmmo: bool.
        """
        if self.__hasAmmo != hasAmmo:
            self.__hasAmmo = hasAmmo
            if not hasAmmo:
                self.as_updateAmmoStateS(i18n.makeString(INGAME_GUI.PLAYER_MESSAGES_POSTMORTEM_USERNOHASAMMO))
            else:
                self.as_updateAmmoStateS('')

    def setGunMarkerPosition(self, position, relaxTime):
        """Sets new position of gun marker. This value is transferred to cpp component.
        :param position: vector3
        :param relaxTime: float.
        """
        self.component.updateMarkerPos(position, relaxTime)

    def _populate(self):
        super(CrosshairPanel, self)._populate()
        self.__plugins.init()
        self.__plugins.start()

    def _dispose(self):
        self.__plugins.stop()
        self.__plugins.fini()
        super(CrosshairPanel, self)._dispose()

    def __configure(self):
        self.component.wg_inputKeyMode = 2
        self.component.position.z = DEPTH_OF_Aim
        self.component.focus = False
        self.component.moveFocus = False
        self.component.heightMode = 'PIXEL'
        self.component.widthMode = 'PIXEL'
        self.movie.backgroundAlpha = 0
Example #10
0
class ExternalFlashComponent(Flash, IExternalFlashComponent):
    """ Class to create external flash components that are added to battle page.
    Its behavior like ViewTypes.COMPONENT, but python initializes given components."""
    def __init__(self, settings):
        super(ExternalFlashComponent,
              self).__init__(settings.url, path=SCALEFORM_SWF_PATH_V3)
        raise isinstance(
            settings,
            ExternalFlashSettings) or AssertionError('Settings are invalid')
        self.__settings = settings
        self.__owner = None
        self.__state = _EXTERNAL_COMPONENT_STATE.UNDEFINED
        self.__bridge = DAAPIRootBridge(settings.rootPath,
                                        settings.initCallback)
        self.__bridge.setPyScript(weakref.proxy(self))
        return

    @property
    def alias(self):
        """Gets name of view alias.
        :return: string containing name of view alias.
        """
        return self.__settings.alias

    @property
    def owner(self):
        """Gets owner of given component.
        :return: object.
        """
        return self.__owner

    def setOwner(self, owner):
        """Sets owner for external component and tries to register given component
        like other UI components.
        :param owner: object.
        """
        self.__owner = owner
        self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.REGISTERED)

    def close(self):
        """Unregisters given component and removes it from display list."""
        self.__invokeUnregisterEvent()
        self.__owner = None
        self.__state ^= ~_EXTERNAL_COMPONENT_STATE.CREATED
        self.__state |= _EXTERNAL_COMPONENT_STATE.CLOSED
        if self.__bridge is not None:
            self.__bridge.clear()
            self.__bridge = None
        super(ExternalFlashComponent, self).close()
        return

    def isVisible(self):
        """Is component visible.
        :return: bool.
        """
        return self.component.visible

    def setVisible(self, visible):
        """Sets visibility of component.
        :param visible: bool.
        """
        self.component.visible = visible

    def getSize(self):
        """Gets size of crosshair panel.
        :return: tuple(width, height).
        """
        return self.component.size

    def setSize(self, width, height):
        """Sets size of crosshair panel in pixels.
        :param width: integer containing width of panel.
        :param height: integer containing height of panel.
        """
        self.component.size = (width, height)

    def getScale(self):
        """Gets scale factor.
        :return: float containing scale factor.
        """
        return self.movie.stage.scaleX

    def setScale(self, scale):
        """Sets scale factor.
        :param scale: float containing new scale factor.
        """
        stage = self.movie.stage
        stage.scaleX = scale
        stage.scaleY = scale

    def afterCreate(self):
        super(ExternalFlashComponent, self).afterCreate()
        self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.CREATED)

    def __tryToInvokeRegisterEvent(self, step):
        prevSteps = self.__state
        self.__state |= step
        if prevSteps != self.__state and self.__state == _EXTERNAL_COMPONENT_STATE.INITED:
            g_eventBus.handleEvent(ComponentEvent(
                ComponentEvent.COMPONENT_REGISTERED, self.owner, self,
                self.alias),
                                   scope=EVENT_BUS_SCOPE.GLOBAL)

    def __invokeUnregisterEvent(self):
        if self.__state & _EXTERNAL_COMPONENT_STATE.REGISTERED > 0:
            self.__state ^= _EXTERNAL_COMPONENT_STATE.REGISTERED
            self.__state |= _EXTERNAL_COMPONENT_STATE.UNREGISTERED
            g_eventBus.handleEvent(ComponentEvent(
                ComponentEvent.COMPONENT_UNREGISTERED, self.owner, self,
                self.alias),
                                   scope=EVENT_BUS_SCOPE.GLOBAL)
Example #11
0
class MarkersManager(Flash, VehicleMarkersManagerMeta, plugins.IMarkersManager):

    def __init__(self, parentUI):
        super(MarkersManager, self).__init__(settings.MARKERS_MANAGER_SWF, path=SCALEFORM_SWF_PATH_V3)
        self.component.wg_inputKeyMode = 2
        self.component.position.z = DEPTH_OF_VehicleMarker
        self.component.drawWithRestrictedViewPort = False
        self.movie.backgroundAlpha = 0
        self.__plugins = None
        self.__canvas = None
        self.__parentUI = parentUI
        self.__daapiBridge = DAAPIRootBridge('root.vehicleMarkersCanvas', 'registerMarkersManager')
        self.__daapiBridge.setPyScript(weakref.proxy(self))
        return

    def close(self):
        if self.__daapiBridge is not None:
            self.__daapiBridge.clear()
            self.__daapiBridge = None
        super(MarkersManager, self).close()
        return

    def setScaleProps(self, minScale = 40, maxScale = 100, defScale = 100, speed = 3.0):
        if constants.IS_DEVELOPMENT:
            self.__canvas.scaleProperties = (minScale,
             maxScale,
             defScale,
             speed)

    def setAlphaProps(self, minAlpha = 40, maxAlpha = 100, defAlpha = 100, speed = 3.0):
        if constants.IS_DEVELOPMENT:
            self.__canvas.alphaProperties = (minAlpha,
             maxAlpha,
             defAlpha,
             speed)

    def createMarker(self, mProv, symbol, active = True):
        return self.__canvas.addMarker(mProv, symbol, active)

    def setMarkerActive(self, handle, active):
        self.__canvas.markerSetActive(handle, active)

    def setMarkerMatrix(self, handle, matrix):
        self.__canvas.markerSetMatrix(handle, matrix)

    def destroyMarker(self, handle):
        if self.__canvas:
            self.__canvas.delMarker(handle)

    def invokeMarker(self, handle, function, args = None):
        if handle == -1:
            return
        else:
            if args is None:
                args = []
            self.__canvas.markerInvoke(handle, (function, args))
            return

    def getCanvasProxy(self):
        return self.__canvasProxy

    def _populate(self):
        super(MarkersManager, self)._populate()
        self.__addCanvas()
        self.__setMarkersScale()
        self.__setMarkerDuration()
        self.__setMarkerSettings()
        self.__setColorsSchemes(g_settingsCore.getSetting('isColorBlind'))
        self.__addListeners()

    def _dispose(self):
        self.__removeListeners()
        self.__removeCanvas()
        self.__parentUI = None
        super(MarkersManager, self)._dispose()
        return

    def __addCanvas(self):
        if g_sessionProvider.arenaVisitor.hasFlags():
            self.__canvas = GUI.WGVehicleFalloutMarkersCanvasFlashAS3(self.movie)
        else:
            self.__canvas = GUI.WGVehicleMarkersCanvasFlashAS3(self.movie)
        self.__canvas.wg_inputKeyMode = 2
        self.__canvas.scaleProperties = GUI_SETTINGS.markerScaleSettings
        self.__canvas.alphaProperties = GUI_SETTINGS.markerBgSettings
        self.__canvasProxy = weakref.ref(self.__canvas)
        self.component.addChild(self.__canvas, 'vehicleMarkersCanvas')

    def __removeCanvas(self):
        if self.__canvas is not None:
            self.component.delChild(self.__canvas)
        self.__canvas = None
        self.__canvasProxy = None
        return

    def __setMarkersScale(self, scale = None):
        if scale is None:
            scale = g_settingsCore.interfaceScale.get()
        stage = self.movie.stage
        stage.scaleX = scale
        stage.scaleY = scale
        return

    def __setMarkerDuration(self):
        self.as_setMarkerDurationS(GUI_SETTINGS.markerHitSplashDuration)

    def __setMarkerSettings(self, update = False):
        getter = g_settingsCore.getSetting
        self.as_setMarkerSettingsS({'enemy': getter('enemy'),
         'dead': getter('dead'),
         'ally': getter('ally')})
        if update:
            self.as_updateMarkersSettingsS()

    def __setColorsSchemes(self, isColorBlind):
        colors = GuiColorsLoader.load()
        defaultSchemes = {}
        for name in colors.schemasNames():
            if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX):
                continue
            defaultSchemes[name] = colors.getSubSchemeToFlash(name, GuiColorsLoader.DEFAULT_SUB_SCHEME)

        colorBlindSchemes = {}
        for name in colors.schemasNames():
            if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX):
                continue
            colorBlindSchemes[name] = colors.getSubSchemeToFlash(name, GuiColorsLoader.COLOR_BLIND_SUB_SCHEME)

        self.as_setColorSchemesS(defaultSchemes, colorBlindSchemes)
        self.as_setColorBlindS(isColorBlind)

    def __addListeners(self):
        self.__plugins = plugins.createPlugins(self)
        self.__plugins.init()
        self.__plugins.start()
        g_settingsCore.interfaceScale.onScaleChanged += self.__setMarkersScale
        self.addListener(GameEvent.SHOW_EXTENDED_INFO, self.__handleShowExtendedInfo, scope=settings.SCOPE)
        self.addListener(GameEvent.GUI_VISIBILITY, self.__handleGUIVisibility, scope=settings.SCOPE)
        self.addListener(GameEvent.MARKERS_2D_VISIBILITY, self.__handleMarkerVisibility, scope=settings.SCOPE)
        g_settingsCore.onSettingsChanged += self.__onSettingsChanged
        g_guiResetters.add(self.__onRecreateDevice)

    def __removeListeners(self):
        self.removeListener(GameEvent.SHOW_EXTENDED_INFO, self.__handleShowExtendedInfo, scope=settings.SCOPE)
        self.removeListener(GameEvent.GUI_VISIBILITY, self.__handleGUIVisibility, scope=settings.SCOPE)
        self.removeListener(GameEvent.MARKERS_2D_VISIBILITY, self.__handleMarkerVisibility, scope=settings.SCOPE)
        if self.__plugins is not None:
            self.__plugins.stop()
            self.__plugins.fini()
        g_settingsCore.interfaceScale.onScaleChanged -= self.__setMarkersScale
        g_settingsCore.onSettingsChanged -= self.__onSettingsChanged
        g_guiResetters.discard(self.__onRecreateDevice)
        return

    def __handleShowExtendedInfo(self, event):
        """Show extended vehicle information, when player press [Left Alt] key.
        Vehicle marker consists:
            - vehicle type (permanent);
            - nickname (extended);
            - health bar (extended);
            - vehicle name (extended);
            - vehicle level (extended and configure in settings);
            - vehicle icon (extended and configure in settings).
        """
        if self.__parentUI is None or not self.__parentUI.isModalViewShown():
            self.as_setShowExInfoFlagS(event.ctx['isDown'])
        return

    def __handleGUIVisibility(self, event):
        self.component.visible = event.ctx['visible']

    def __handleMarkerVisibility(self, _):
        """Special event toggles markers visibility only by key sequence CAPS + N (by default)
        and no any UI visible."""
        self.component.visible = not self.component.visible

    def __onSettingsChanged(self, diff):
        """Listener for event g_settingsCore.onSettingsChanged.
        :param diff: dictionary containing changes in settings."""
        if 'isColorBlind' in diff:
            self.as_setColorBlindS(diff['isColorBlind'])
        if 'enemy' in diff or 'dead' in diff or 'ally' in diff:
            self.__setMarkerSettings(True)

    def __onRecreateDevice(self):
        """Listener for event personality.onRecreateDevice."""
        self.__setMarkersScale()
Example #12
0
class MarkersManager(Flash, VehicleMarkersManagerMeta,
                     plugins.IMarkersManager):
    def __init__(self, parentUI):
        super(MarkersManager, self).__init__(settings.MARKERS_MANAGER_SWF,
                                             path=SCALEFORM_SWF_PATH_V3)
        self.component.wg_inputKeyMode = 2
        self.component.position.z = DEPTH_OF_VehicleMarker
        self.component.drawWithRestrictedViewPort = False
        self.movie.backgroundAlpha = 0
        self.__plugins = None
        self.__canvas = None
        self.__parentUI = parentUI
        self.__daapiBridge = DAAPIRootBridge('root.vehicleMarkersCanvas',
                                             'registerMarkersManager')
        self.__daapiBridge.setPyScript(weakref.proxy(self))
        return

    def close(self):
        if self.__daapiBridge is not None:
            self.__daapiBridge.clear()
            self.__daapiBridge = None
        super(MarkersManager, self).close()
        return

    def setScaleProps(self,
                      minScale=40,
                      maxScale=100,
                      defScale=100,
                      speed=3.0):
        if constants.IS_DEVELOPMENT:
            self.__canvas.scaleProperties = (minScale, maxScale, defScale,
                                             speed)

    def setAlphaProps(self,
                      minAlpha=40,
                      maxAlpha=100,
                      defAlpha=100,
                      speed=3.0):
        if constants.IS_DEVELOPMENT:
            self.__canvas.alphaProperties = (minAlpha, maxAlpha, defAlpha,
                                             speed)

    def createMarker(self, mProv, symbol, active=True):
        return self.__canvas.addMarker(mProv, symbol, active)

    def setMarkerActive(self, handle, active):
        self.__canvas.markerSetActive(handle, active)

    def setMarkerMatrix(self, handle, matrix):
        self.__canvas.markerSetMatrix(handle, matrix)

    def destroyMarker(self, handle):
        if self.__canvas:
            self.__canvas.delMarker(handle)

    def invokeMarker(self, handle, function, args=None):
        if handle == -1:
            return
        else:
            if args is None:
                args = []
            self.__canvas.markerInvoke(handle, (function, args))
            return

    def getCanvasProxy(self):
        return self.__canvasProxy

    def _populate(self):
        super(MarkersManager, self)._populate()
        self.__addCanvas()
        self.__setMarkersScale()
        self.__setMarkerDuration()
        self.__setMarkerSettings()
        self.__setColorsSchemes(g_settingsCore.getSetting('isColorBlind'))
        self.__addListeners()

    def _dispose(self):
        self.__removeListeners()
        self.__removeCanvas()
        self.__parentUI = None
        super(MarkersManager, self)._dispose()
        return

    def __addCanvas(self):
        if g_sessionProvider.arenaVisitor.hasFlags():
            self.__canvas = GUI.WGVehicleFalloutMarkersCanvasFlashAS3(
                self.movie)
        else:
            self.__canvas = GUI.WGVehicleMarkersCanvasFlashAS3(self.movie)
        self.__canvas.wg_inputKeyMode = 2
        self.__canvas.scaleProperties = GUI_SETTINGS.markerScaleSettings
        self.__canvas.alphaProperties = GUI_SETTINGS.markerBgSettings
        self.__canvasProxy = weakref.ref(self.__canvas)
        self.component.addChild(self.__canvas, 'vehicleMarkersCanvas')

    def __removeCanvas(self):
        if self.__canvas is not None:
            self.component.delChild(self.__canvas)
        self.__canvas = None
        self.__canvasProxy = None
        return

    def __setMarkersScale(self, scale=None):
        if scale is None:
            scale = g_settingsCore.interfaceScale.get()
        stage = self.movie.stage
        stage.scaleX = scale
        stage.scaleY = scale
        return

    def __setMarkerDuration(self):
        self.as_setMarkerDurationS(GUI_SETTINGS.markerHitSplashDuration)

    def __setMarkerSettings(self, update=False):
        getter = g_settingsCore.getSetting
        self.as_setMarkerSettingsS({
            'enemy': getter('enemy'),
            'dead': getter('dead'),
            'ally': getter('ally')
        })
        if update:
            self.as_updateMarkersSettingsS()

    def __setColorsSchemes(self, isColorBlind):
        colors = GuiColorsLoader.load()
        defaultSchemes = {}
        for name in colors.schemasNames():
            if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX):
                continue
            defaultSchemes[name] = colors.getSubSchemeToFlash(
                name, GuiColorsLoader.DEFAULT_SUB_SCHEME)

        colorBlindSchemes = {}
        for name in colors.schemasNames():
            if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX):
                continue
            colorBlindSchemes[name] = colors.getSubSchemeToFlash(
                name, GuiColorsLoader.COLOR_BLIND_SUB_SCHEME)

        self.as_setColorSchemesS(defaultSchemes, colorBlindSchemes)
        self.as_setColorBlindS(isColorBlind)

    def __addListeners(self):
        self.__plugins = plugins.createPlugins(self)
        self.__plugins.init()
        self.__plugins.start()
        g_settingsCore.interfaceScale.onScaleChanged += self.__setMarkersScale
        self.addListener(GameEvent.SHOW_EXTENDED_INFO,
                         self.__handleShowExtendedInfo,
                         scope=settings.SCOPE)
        self.addListener(GameEvent.GUI_VISIBILITY,
                         self.__handleGUIVisibility,
                         scope=settings.SCOPE)
        self.addListener(GameEvent.MARKERS_2D_VISIBILITY,
                         self.__handleMarkerVisibility,
                         scope=settings.SCOPE)
        g_settingsCore.onSettingsChanged += self.__onSettingsChanged
        g_guiResetters.add(self.__onRecreateDevice)

    def __removeListeners(self):
        self.removeListener(GameEvent.SHOW_EXTENDED_INFO,
                            self.__handleShowExtendedInfo,
                            scope=settings.SCOPE)
        self.removeListener(GameEvent.GUI_VISIBILITY,
                            self.__handleGUIVisibility,
                            scope=settings.SCOPE)
        self.removeListener(GameEvent.MARKERS_2D_VISIBILITY,
                            self.__handleMarkerVisibility,
                            scope=settings.SCOPE)
        if self.__plugins is not None:
            self.__plugins.stop()
            self.__plugins.fini()
        g_settingsCore.interfaceScale.onScaleChanged -= self.__setMarkersScale
        g_settingsCore.onSettingsChanged -= self.__onSettingsChanged
        g_guiResetters.discard(self.__onRecreateDevice)
        return

    def __handleShowExtendedInfo(self, event):
        """Show extended vehicle information, when player press [Left Alt] key.
        Vehicle marker consists:
            - vehicle type (permanent);
            - nickname (extended);
            - health bar (extended);
            - vehicle name (extended);
            - vehicle level (extended and configure in settings);
            - vehicle icon (extended and configure in settings).
        """
        if self.__parentUI is None or not self.__parentUI.isModalViewShown():
            self.as_setShowExInfoFlagS(event.ctx['isDown'])
        return

    def __handleGUIVisibility(self, event):
        self.component.visible = event.ctx['visible']

    def __handleMarkerVisibility(self, _):
        """Special event toggles markers visibility only by key sequence CAPS + N (by default)
        and no any UI visible."""
        self.component.visible = not self.component.visible

    def __onSettingsChanged(self, diff):
        """Listener for event g_settingsCore.onSettingsChanged.
        :param diff: dictionary containing changes in settings."""
        if 'isColorBlind' in diff:
            self.as_setColorBlindS(diff['isColorBlind'])
        if 'enemy' in diff or 'dead' in diff or 'ally' in diff:
            self.__setMarkerSettings(True)

    def __onRecreateDevice(self):
        """Listener for event personality.onRecreateDevice."""
        self.__setMarkersScale()
 def __init__(self, appNS):
     super(BattleEntry, self).__init__(UserWindowFlags.BATTLE_MAIN_WND, 'battle.swf', appNS, DAAPIRootBridge(initCallback='registerBattleTest'))
     self.__input = None
     return
Example #14
0
class ExternalFlashComponent(Flash, IExternalFlashComponent):
    def __init__(self, settings):
        super(ExternalFlashComponent,
              self).__init__(settings.url, path=SCALEFORM_SWF_PATH_V3)
        self.__settings = settings
        self.__owner = None
        self.__state = _EXTERNAL_COMPONENT_STATE.UNDEFINED
        self.__bridge = DAAPIRootBridge(settings.rootPath,
                                        settings.initCallback)
        self.__bridge.setPyScript(weakref.proxy(self))
        return

    @property
    def alias(self):
        return self.__settings.alias

    @property
    def owner(self):
        return self.__owner

    def setOwner(self, owner):
        self.__owner = owner
        self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.REGISTERED)

    def close(self):
        self.__invokeUnregisterEvent()
        self.__owner = None
        self.__state ^= ~_EXTERNAL_COMPONENT_STATE.CREATED
        self.__state |= _EXTERNAL_COMPONENT_STATE.CLOSED
        if self.__bridge is not None:
            self.__bridge.clear()
            self.__bridge = None
        super(ExternalFlashComponent, self).close()
        return

    def isVisible(self):
        return self.component.visible

    def setVisible(self, visible):
        self.component.visible = visible

    def getSize(self):
        return self.component.size

    def setSize(self, width, height):
        self.component.size = (width, height)

    def getScale(self):
        return self.movie.stage.scaleX

    def setScale(self, scale):
        stage = self.movie.stage
        stage.scaleX = scale
        stage.scaleY = scale

    def afterCreate(self):
        super(ExternalFlashComponent, self).afterCreate()
        self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.CREATED)

    def __tryToInvokeRegisterEvent(self, step):
        prevSteps = self.__state
        self.__state |= step
        if prevSteps != self.__state and self.__state == _EXTERNAL_COMPONENT_STATE.INITED:
            g_eventBus.handleEvent(ComponentEvent(
                ComponentEvent.COMPONENT_REGISTERED, self.owner, self,
                self.alias),
                                   scope=EVENT_BUS_SCOPE.GLOBAL)

    def __invokeUnregisterEvent(self):
        if self.__state & _EXTERNAL_COMPONENT_STATE.REGISTERED > 0:
            self.__state ^= _EXTERNAL_COMPONENT_STATE.REGISTERED
            self.__state |= _EXTERNAL_COMPONENT_STATE.UNREGISTERED
            g_eventBus.handleEvent(ComponentEvent(
                ComponentEvent.COMPONENT_UNREGISTERED, self.owner, self,
                self.alias),
                                   scope=EVENT_BUS_SCOPE.GLOBAL)