def __init__(self, engine, application): """Initializes all listeners and registers itself with the eventmanager. Args: engine: A fife.Engine instance application: A RPGApplication instance """ self._engine = engine self._application = application self._eventmanager = self._engine.getEventManager() fife.IKeyListener.__init__(self) self._eventmanager.addKeyListener(self) fife.ICommandListener.__init__(self) self._eventmanager.addCommandListener(self) fife.ConsoleExecuter.__init__(self) get_manager().getConsole().setConsoleExecuter(self) keyfilter = KeyFilter([fife.Key.ESCAPE, fife.Key.CARET, fife.Key.PRINT_SCREEN]) keyfilter.__disown__() self._eventmanager.setKeyFilter(keyfilter) self.quit = False
def keyPressed(self, event): keyval = event.getKey().getValue() keystr = event.getKey().getAsString().lower() self.controlPressed = event.isControlPressed() self.altPressed = event.isAltPressed() self.shiftPressed = event.isShiftPressed() self.metaPressed = event.isMetaPressed() if keyval in (fife.Key.LEFT_CONTROL, fife.Key.RIGHT_CONTROL): self.controlPressed = True elif keyval in (fife.Key.LEFT_SHIFT, fife.Key.RIGHT_SHIFT): self.shiftPressed = True elif keyval in (fife.Key.LEFT_ALT, fife.Key.RIGHT_ALT): self.altPressed = True elif keyval in (fife.Key.LEFT_SUPER, fife.Key.RIGHT_SUPER): self.metaPressed = True elif keyval == fife.Key.ESCAPE: scripts.editor.getEditor().quit() elif keyval == fife.Key.F10: get_manager().getConsole().toggleShowHide() elif keystr == "d": pdb.set_trace() # Check keysequences for k in self.keysequences: if k.modifiers["alt"] != self.altPressed: continue if k.modifiers["ctrl"] != self.controlPressed: continue if k.modifiers["shift"] != self.shiftPressed: continue if k.modifiers["meta"] != self.metaPressed: continue if keyval != k.key: continue k.signal.send(sender=self, event=event)
def __init__(self, engine): self.engine = engine eventmanager = self.engine.getEventManager() self.keysequences = [] self.keylistener = _IKeyListener(engine) self.mouselistener = _IMouseListener(engine) self.mapchangelistener = _MapChangeListener(engine) self.layerchangelistener = _LayerChangeListener(engine) self.commandlistener = _ICommandListener(engine) self.consoleexecuter = _ConsoleExecuter(engine) self.controlPressed = False self.altPressed = False self.shiftPressed = False self.metaPressed = False eventmanager.addKeyListener(self.keylistener) eventmanager.addCommandListener(self.commandlistener) eventmanager.addMouseListener(self.mouselistener) get_manager().getConsole().setConsoleExecuter(self.consoleexecuter) keyPressed.connect(self.keyPressed) keyReleased.connect(self.keyReleased)
def setDocked(self, docked): """ Dock or undock the panel setDocked(True) will disable resizing and moving of this panel, but will not dock it in a dockarea. setDocked(False) will enable resizing and moving. If this panel is docked in a dockarea or widget, it will undock itself. The new position will be offset by panelSize. @type docked: bool @param docked: flag to either set the Panel to docked status or not """ if not self.dockable: return if docked and self._floating: self._floating = False self.real_widget.setTitleBarHeight(0) self.real_widget.setMovable(False) self._movable = False self.resizable = False self.afterDock() elif not docked and not self._floating: self._floating = True self._movable = True self.real_widget.setMovable(True) self.resizable = self._resizable self.dockareaname = "" # Since x and y coordinates are reset if the widget gets hidden, # we need to store them self.abs_pos_backup = self.getAbsolutePos() # Remove from parent widget if self.dockarea is not None: # @note: this step is necessary, otherwise the widget.isVisible() # call returns True although the widget is not visible # @note: self.parent is not None if the ToolBar calls this method # that's why cheesesucker added the elif branch if self.parent is None: self.hide() # Use dockareas undock method self.dockarea.undockChild(self, True) self.dockarea = None elif self.parent is not None: # Force removal widgetParent = self.parent widgetParent.removeChild(self) widgetParent.adaptLayout() get_manager().addTopWidget(self) self.real_widget.setTitleBarHeight(self._titlebarheight) self.show() self.adaptLayout() self.afterUndock()
def keyPressed(self, event): keyval = event.getKey().getValue() keystr = event.getKey().getAsString().lower() self.controlPressed = event.isControlPressed() self.altPressed = event.isAltPressed() self.shiftPressed = event.isShiftPressed() self.metaPressed = event.isMetaPressed() if keyval in (fife.Key.LEFT_CONTROL, fife.Key.RIGHT_CONTROL): self.controlPressed = True elif keyval in (fife.Key.LEFT_SHIFT, fife.Key.RIGHT_SHIFT): self.shiftPressed = True elif keyval in (fife.Key.LEFT_ALT, fife.Key.RIGHT_ALT): self.altPressed = True elif keyval in (fife.Key.RIGHT_META, fife.Key.LEFT_META): self.metaPressed = True elif keyval == fife.Key.ESCAPE: scripts.editor.getEditor().quit() elif keyval == fife.Key.F10: get_manager().getConsole().toggleShowHide() elif keystr == "d": pdb.set_trace() # Check keysequences for k in self.keysequences: if k.modifiers["alt"] != self.altPressed: continue if k.modifiers["ctrl"] != self.controlPressed: continue if k.modifiers["shift"] != self.shiftPressed: continue if k.modifiers["meta"] != self.metaPressed: continue if keyval != k.key: continue k.signal.send(sender=self, event=event)
def onConsoleCommand(self, command): result = "" args = command.split(" ") cmd = [] for arg in args: arg = arg.strip() if arg != "": cmd.append(arg) if cmd[0].lower() in ('quit', 'exit'): self.quit = True result = 'quitting' elif cmd[0].lower() in ('help'): helptextfile = self._gamecontroller.settings.get( "RPG", "HelpText", "misc/help.txt") get_manager().getConsole().println(open(helptextfile, 'r').read()) result = "--OK--" elif cmd[0].lower() in ('eval'): try: result = str(eval(command.lstrip(cmd[0]))) except: result = "Invalid eval statement..." else: result = self._gamecontroller.onConsoleCommand(command) if not result: result = 'Command Not Found...' return result
def __init__(self, engine): self.engine = engine eventmanager = self.engine.getEventManager() self.keysequences = [] self.keylistener = _IKeyListener(engine) self.mouselistener = _IMouseListener(engine) self.mapchangelistener = _MapChangeListener(engine) self.layerchangelistener = _LayerChangeListener(engine) self.commandlistener = _ICommandListener(engine) self.consoleexecuter = _ConsoleExecuter(engine) self.controlPressed = False self.altPressed = False self.shiftPressed = False self.metaPressed = False eventmanager.addKeyListener(self.keylistener) eventmanager.addCommandListener(self.commandlistener) eventmanager.addMouseListener(self.mouselistener) get_manager().getConsole().setConsoleExecuter(self.consoleexecuter) keyfilter = KeyFilter([fife.Key.ESCAPE, fife.Key.F10]) keyfilter.__disown__() eventmanager.setKeyFilter(keyfilter) keyPressed.connect(self.keyPressed) keyReleased.connect(self.keyReleased)
def onConsoleCommand(self, command): result = "" args = command.split(" ") cmd = [] for arg in args: arg = arg.strip() if arg != "": cmd.append(arg) if cmd[0].lower() in ('quit', 'exit'): self.quit = True result = 'quitting' elif cmd[0].lower() in ( 'help' ): helptextfile = self._gamecontroller.settings.get("RPG", "HelpText", "misc/help.txt") get_manager().getConsole().println( open( helptextfile, 'r' ).read() ) result = "--OK--" elif cmd[0].lower() in ( 'eval' ): try: result = str(eval(command.lstrip(cmd[0]))) except: result = "Invalid eval statement..." else: result = self._gamecontroller.onConsoleCommand(command) if not result: result = 'Command Not Found...' return result
def onConsoleCommand(self, command): # pylint: disable-msg=C0103,W0221 """Process console commands Args: command: A string containing the command Returns: A string representing the result of the command """ result = "" args = command.split(" ") cmd = [] for arg in args: arg = arg.strip() if arg != "": cmd.append(arg) if cmd[0].lower() in ('quit', 'exit'): self.quit = True result = 'quitting' elif cmd[0].lower() in ('help'): helptextfile = self._application.settings.get( "RPG", "HelpText", "misc/help.txt") get_manager().getConsole().println(open(helptextfile, 'r').read()) result = "--OK--" elif cmd[0] in get_commands(): result = get_commands()[cmd[0]](self._application, *cmd[1:]) else: result = 'Command Not Found...' return result
def setDocked(self, docked): """ Dock or undock the panel setDocked(True) will disable resizing and moving of this panel, but will not dock it in a dockarea. setDocked(False) will enable resizing and moving. If this panel is docked in a dockarea or widget, it will undock itself. The new position will be offset by panelSize. @type docked: bool @param docked: flag to either set the Panel to docked status or not """ if not self.dockable: return if docked and self._floating: self._floating = False self.real_widget.setTitleBarHeight(0) self.real_widget.setMovable(False) self._movable = False self.resizable = False self.afterDock() elif not docked and not self._floating: self._floating = True self._movable = True self.real_widget.setMovable(True) self.resizable = self._resizable self.dockareaname = "" # Since x and y coordinates are reset if the widget gets hidden, # we need to store them self.abs_pos_backup = self.getAbsolutePos() # Remove from parent widget if self.dockarea is not None: # @note: this step is necessary, otherwise the widget.isVisible() # call returns True although the widget is not visible # @note: self.parent is not None if the ToolBar calls this method # that's why cheesesucker added the elif branch if self.parent is None: self.hide() # Use dockareas undock method self.dockarea.undockChild(self, True) self.dockarea = None elif self.parent is not None: # Force removal widgetParent = self.parent widgetParent.removeChild(self) widgetParent.adaptLayout() get_manager().show(self) self.real_widget.setTitleBarHeight(self._titlebarheight) self.show() self.adaptLayout() self.afterUndock()
def keyPressed(self, evt): print evt keyval = evt.getKey().getValue() keystr = evt.getKey().getAsString().lower() consumed = False if keyval == fife.Key.ESCAPE: self.quit = True evt.consume() elif keyval == fife.Key.F10: get_manager().getConsole().toggleShowHide() evt.consume() elif keystr == 'p': self.engine.getRenderBackend().captureScreen('screenshot.png') evt.consume()
def keyPressed(self, evt): print(evt) keyval = evt.getKey().getValue() keystr = evt.getKey().getAsString().lower() consumed = False if keyval == fife.Key.ESCAPE: self.quit = True evt.consume() elif keyval == fife.Key.F10: get_manager().getConsole().toggleShowHide() evt.consume() elif keystr == 'p': self.engine.getRenderBackend().captureScreen('screenshot.png') evt.consume()
def __init__(self, engine, regKeys=False, regCmd=False, regMouse=False, regConsole=False, regWidget=False): self.eventmanager = engine.getEventManager() fife.IKeyListener.__init__(self) if regKeys: self.eventmanager.addKeyListener(self) fife.ICommandListener.__init__(self) if regCmd: self.eventmanager.addCommandListener(self) fife.IMouseListener.__init__(self) if regMouse: self.eventmanager.addMouseListener(self) fife.ConsoleExecuter.__init__(self) if regConsole: get_manager().getConsole().setConsoleExecuter(self)
def loadMap(self, mapname): """ Creates the scene for the map and attaches the listener. """ if self._listener: self._listener.detach() self._keystate.reset() if self._scene: self._scene.destroyScene() self._scene = None self._scene = Scene(self) self._scene.createScene(mapname) self._instancerenderer = fife.InstanceRenderer.getInstance(self._scene.cameras[self._settings.get("RPG", "DefaultCameraName", "camera1")]) self._floatingtextrenderer = fife.FloatingTextRenderer.getInstance(self._scene.cameras[self._settings.get("RPG", "DefaultCameraName", "camera1")]) self._floatingtextrenderer.addActiveLayer(self._scene.actorlayer) font = get_manager().getDefaultFont() self._floatingtextrenderer.setFont(font) self._floatingtextrenderer.setBackground(255, 100, 100, 165) self._floatingtextrenderer.setBorder(255, 50, 50) self._floatingtextrenderer.setEnabled(True) if self._listener: self._listener.attach()
def __init__(self, application, testmanager): """ Initializes all listeners and registers itself with the eventmanager. """ self._application = application self._engine = self._application.engine self._eventmanager = self._engine.getEventManager() self._testmanager = testmanager fife.IKeyListener.__init__(self) self._eventmanager.addKeyListener(self) fife.ICommandListener.__init__(self) self._eventmanager.addCommandListener(self) self._console = get_manager().getConsole() fife.ConsoleExecuter.__init__(self) self._console.setConsoleExecuter(self) keyfilter = KeyFilter([fife.Key.ESCAPE, fife.Key.F10, fife.Key.PRINT_SCREEN]) keyfilter.__disown__() self._eventmanager.setKeyFilter(keyfilter) self.quit = False # Init Pychan pychan.loadFonts("data/fonts/freefont.fontdef") pychan.loadFonts("data/fonts/samanata.fontdef") pychan.manager.setDefaultFont("FreeSans") pychan.setupModalExecution(self._application.mainLoop, self._application.breakFromMainLoop)
def onConsoleCommand(self, command): result = '' if command.lower() in ('quit', 'exit'): self.quit = True result = 'quitting' elif command.lower() in ( 'help', 'help()' ): get_manager().getConsole().println( open( 'misc/infotext.txt', 'r' ).read() ) result = "-- End of help --" else: result = self.world.onConsoleCommand(command) if not result: try: result = str(eval(command)) except: pass if not result: result = 'no result' return result
def _setAnimation(self, anim): if anim is not None: if isinstance(anim, fife.Animation): self._anim = anim else: if anim != "": # use xml loader self._anim = loadXMLAnimation(get_manager().hook.engine, anim) self.real_widget.setAnimation(self._anim)
def _setAnimation(self, anim): if anim is not None: if isinstance(anim, fife.Animation): self._anim = anim else: if anim is not "": # use xml loader self._anim = loadXMLAnimation(get_manager().hook.engine, anim) self.real_widget.setAnimation(self._anim)
def on_map_switched(self): renderer = fife.FloatingTextRenderer.getInstance( self.application.current_map.camera) font = get_manager().getDefaultFont() renderer.setFont(font) renderer.addActiveLayer(self.application.current_map.get_layer("actors")) renderer.setBackground(100, 255, 100, 165) renderer.setBorder(50, 255, 50) renderer.setEnabled(True)
def onConsoleCommand(self, command): result = '' if command.lower() in ('quit', 'exit'): self.quit = True result = 'quitting' elif command.lower() in ('help', 'help()'): get_manager().getConsole().println( open('misc/infotext.txt', 'r').read()) result = "-- End of help --" else: result = self.world.onConsoleCommand(command) if not result: try: result = str(eval(command)) except: pass if not result: result = 'no result' return result
def keyPressed(self, event): """ Processes any non game related keyboard input. """ if event.isConsumed(): return keyval = event.getKey().getValue() keystr = event.getKey().getAsString().lower() if keyval == fife.Key.ESCAPE: self.quit = True event.consume() elif keyval == fife.Key.F10: get_manager().getConsole().toggleShowHide() event.consume() elif keyval == fife.Key.PRINT_SCREEN: self._engine.getRenderBackend().captureScreen(time.strftime("%Y%m%d_%H%M%S", time.localtime()) + ".png") event.consume()
def keyPressed(self, event): """ Processes any non game related keyboar input. """ if event.isConsumed(): return keyval = event.getKey().getValue() keystr = event.getKey().getAsString().lower() if keyval == fife.Key.ESCAPE: self.quit = True event.consume() elif keyval == fife.Key.BACKQUOTE: get_manager().getConsole().toggleShowHide() event.consume() elif keyval == fife.Key.PRINT_SCREEN: self._engine.getRenderBackend().captureScreen( time.strftime("%Y%m%d_%H%M%S", time.localtime()) + ".png") event.consume()
def keyPressed(self, event): # pylint: disable-msg=C0103,W0221 """Processes any non game related keyboard input. Args: event: The fife.KeyEvent that happened """ if event.isConsumed(): return keyval = event.getKey().getValue() if keyval == fife.Key.ESCAPE: self.quit = True event.consume() elif keyval == fife.Key.CARET: get_manager().getConsole().toggleShowHide() event.consume() elif keyval == fife.Key.PRINT_SCREEN: self._engine.getRenderBackend().captureScreen( time.strftime("%Y%m%d_%H%M%S", time.localtime()) + ".png") event.consume()
def __init__(self, engine, gamecontroller): """ Initializes all listeners and registers itself with the eventmanager. """ self._engine = engine self._gamecontroller = gamecontroller self._eventmanager = self._engine.getEventManager() fife.IKeyListener.__init__(self) self._eventmanager.addKeyListener(self) fife.ICommandListener.__init__(self) self._eventmanager.addCommandListener(self) fife.ConsoleExecuter.__init__(self) get_manager().getConsole().setConsoleExecuter(self) keyfilter = KeyFilter([fife.Key.ESCAPE, fife.Key.BACKQUOTE, fife.Key.PRINT_SCREEN]) keyfilter.__disown__() self._eventmanager.setKeyFilter(keyfilter) self.quit = False
def toggleCoordinates(self, sender): if self._mapview is not None: for cam in self._mapview.getMap().getCameras(): r = fife.CoordinateRenderer.getInstance(cam) if not r.isEnabled(): r.clearActiveLayers() color = str(self._settings.get("Colors", "Coordinate", "255,255,255")) r.setFont(get_manager().getDefaultFont()) r.setColor(*[int(c) for c in color.split(',')]) for layer in self._mapview.getMap().getLayers(): if layer.areInstancesVisible(): r.addActiveLayer(layer) r.setEnabled(True) else: r.setEnabled(False)
def __init__(self, engine, gamecontroller): """ Initializes all listeners and registers itself with the eventmanager. """ self._engine = engine self._gamecontroller = gamecontroller self._eventmanager = self._engine.getEventManager() fife.IKeyListener.__init__(self) self._eventmanager.addKeyListener(self) fife.ICommandListener.__init__(self) self._eventmanager.addCommandListener(self) fife.ConsoleExecuter.__init__(self) get_manager().getConsole().setConsoleExecuter(self) keyfilter = KeyFilter( [fife.Key.ESCAPE, fife.Key.BACKQUOTE, fife.Key.PRINT_SCREEN]) keyfilter.__disown__() self._eventmanager.setKeyFilter(keyfilter) self.quit = False
def __init__(self, application, testmanager): """ Initializes all listeners and registers itself with the eventmanager. """ self._application = application self._engine = self._application.engine self._eventmanager = self._engine.getEventManager() self._testmanager = testmanager fife.IKeyListener.__init__(self) self._eventmanager.addKeyListener(self) fife.ICommandListener.__init__(self) self._eventmanager.addCommandListener(self) self._console = get_manager().getConsole() fife.ConsoleExecuter.__init__(self) self._console.setConsoleExecuter(self) keyfilter = KeyFilter( [fife.Key.ESCAPE, fife.Key.F10, fife.Key.PRINT_SCREEN]) keyfilter.__disown__() self._eventmanager.setKeyFilter(keyfilter) self.quit = False # Init Pychan pychan.loadFonts("data/fonts/freefont.xml") pychan.loadFonts("data/fonts/samanata.xml") pychan.manager.setDefaultFont("FreeSans") pychan.setupModalExecution(self._application.mainLoop, self._application.breakFromMainLoop)
def __init__(self, parent=None, name=None, size=None, min_size=None, max_size=None, fixed_size=None, margins=None, padding=None, helptext=None, position=None, style=None, hexpand=None, vexpand=None, font=None, base_color=None, background_color=None, foreground_color=None, selection_color=None, border_color=None, outline_color=None, border_size=None, outline_size=None, position_technique=None, is_focusable=None, comment=None, animation=None, scale=None, tile=None, opaque=None, repeating=None, play=None): self.real_widget = fifechan.AnimationIcon() self._anim = None super(AnimationIcon, self).__init__(parent=parent, name=name, size=size, min_size=min_size, max_size=max_size, fixed_size=fixed_size, margins=margins, padding=padding, helptext=helptext, position=position, style=style, hexpand=hexpand, vexpand=vexpand, font=font, base_color=base_color, background_color=background_color, foreground_color=foreground_color, selection_color=selection_color, border_color=border_color, outline_color=outline_color, border_size=border_size, outline_size=outline_size, position_technique=position_technique, is_focusable=is_focusable, comment=comment) # set provided attributes or defaults if scale is not None: self.scale = scale else: self.scale = self.DEFAULT_SCALE if tile is not None: self.tile = tile else: self.tile = self.DEFAULT_TILE if opaque is not None: self.opaque = opaque else: self.opaque = self.DEFAULT_OPAQUE # for the case that animation can not be found, e.g. invalid path # the AnimationIcon is removed from the manager try: self.animation = animation except Exception: get_manager().removeWidget(self) raise if repeating is not None: self.repeating = repeating else: self.repeating = self.DEFAULT_REPEATING if play is not None: self.play = play else: self.play = self.DEFAULT_PLAY #if the size parameter is specified set it (again) to override #the icons size. That works only without layouting. if size is not None: self.size = size
def initCameras(self): """ Before we can actually see something on screen we have to specify the render setup. This is done through Camera objects which offer a viewport on the map. For this techdemo two cameras are used. One follows the boy(!) via 'attach' the other one scrolls around a bit (see the pump function). """ camera_prefix = self.filename.rpartition('.')[0] # Remove file extension camera_prefix = camera_prefix.rpartition('/')[2] # Remove path camera_prefix += '_' self.target_rotation = 0 self.cameras = {} for cam in self.map.getCameras(): camera_id = cam.getId().replace(camera_prefix, '') self.cameras[camera_id] = cam cam.resetRenderers() self.cameras['main'].attach(self.mainAgent.agent) # Floating text renderers currntly only support one font. # ... so we set that up. # You'll se that for our demo we use a image font, so we have to specify the font glyphs # for that one. renderer = fife.FloatingTextRenderer.getInstance(self.cameras['main']) textfont = get_manager().createFont('fonts/rpgfont.png', 0, str(TDS.get("FIFE", "FontGlyphs"))); renderer.setFont(textfont) renderer.activateAllLayers(self.map) renderer.setBackground(100, 255, 100, 165) renderer.setBorder(50, 255, 50) renderer.setEnabled(True) # Activate the grid renderer on all layers renderer = self.cameras['main'].getRenderer('GridRenderer') renderer.activateAllLayers(self.map) # The small camera shouldn't be cluttered by the 'humm di dums' of our boy. # So we disable the renderer simply by setting its font to None. renderer = fife.FloatingTextRenderer.getInstance(self.cameras['small']) renderer.setFont(None) # The following renderers are used for debugging. # Note that by default ( that is after calling View.resetRenderers or Camera.resetRenderers ) # renderers will be handed all layers. That's handled here. renderer = fife.CoordinateRenderer.getInstance(self.cameras['main']) renderer.setFont(textfont) renderer.clearActiveLayers() renderer.addActiveLayer(self.map.getLayer(str(TDS.get("rio", "CoordinateLayerName")))) renderer = self.cameras['main'].getRenderer('QuadTreeRenderer') renderer.setEnabled(True) renderer.clearActiveLayers() if str(TDS.get("rio", "QuadTreeLayerName")): renderer.addActiveLayer(self.map.getLayer(str(TDS.get("rio", "QuadTreeLayerName")))) # Fog of War stuff renderer = fife.CellRenderer.getInstance(self.cameras['main']) renderer.setEnabled(True) renderer.clearActiveLayers() renderer.addActiveLayer(self.map.getLayer('TechdemoMapGroundObjectLayer')) concimg = self.engine.getImageManager().load("misc/black_cell.png") maskimg = self.engine.getImageManager().load("misc/mask_cell.png") renderer.setConcealImage(concimg) renderer.setMaskImage(maskimg) renderer.setFogOfWarLayer(self.map.getLayer('TechdemoMapGroundObjectLayer')) #disable FoW by default. Users can turn it on with the 'f' key. renderer.setEnabledFogOfWar(False) # Set up the second camera # NOTE: We need to explicitly call setLocation, there's a bit of a messup in the Camera code. self.cameras['small'].setLocation(self.boy.agent.getLocation()) self.cameras['small'].attach(self.girl.agent) self.cameras['small'].setOverlayColor(100,0,0,100) self.cameras['small'].setEnabled(False) self.target_rotation = self.cameras['main'].getRotation()
def __init__(self, parent = None, name = None, size = None, min_size = None, max_size = None, fixed_size = None, margins = None, padding = None, helptext = None, position = None, style = None, hexpand = None, vexpand = None, font = None, base_color = None, background_color = None, foreground_color = None, selection_color = None, border_color = None, outline_color = None, border_size = None, outline_size = None, position_technique = None, is_focusable = None, comment = None, animation = None, scale = None, tile = None, opaque = None, repeating = None, play = None): self.real_widget = fifechan.AnimationIcon() self._anim = None super(AnimationIcon,self).__init__(parent=parent, name=name, size=size, min_size=min_size, max_size=max_size, fixed_size=fixed_size, margins=margins, padding=padding, helptext=helptext, position=position, style=style, hexpand=hexpand, vexpand=vexpand, font=font, base_color=base_color, background_color=background_color, foreground_color=foreground_color, selection_color=selection_color, border_color=border_color, outline_color=outline_color, border_size=border_size, outline_size=outline_size, position_technique=position_technique, is_focusable=is_focusable, comment=comment) # set provided attributes or defaults if scale is not None: self.scale = scale else: self.scale = self.DEFAULT_SCALE if tile is not None: self.tile = tile else: self.tile = self.DEFAULT_TILE if opaque is not None: self.opaque = opaque else: self.opaque = self.DEFAULT_OPAQUE # for the case that animation can not be found, e.g. invalid path # the AnimationIcon is removed from the manager try: self.animation = animation except Exception: get_manager().removeWidget(self) raise if repeating is not None: self.repeating = repeating else: self.repeating = self.DEFAULT_REPEATING if play is not None: self.play = play else: self.play = self.DEFAULT_PLAY #if the size parameter is specified set it (again) to override #the icons size. That works only without layouting. if size is not None: self.size = size
def __init__(self, application): print("* Initializing view...") self.application = application self.camera = self.application.camera self.target_zoom = 1.0 self.camera.setZoom(1.0) self.camera_move_key_up = False self.camera_move_key_down = False self.camera_move_key_left = False self.camera_move_key_right = False self.camera_move_mouse_up = False self.camera_move_mouse_down = False self.camera_move_mouse_left = False self.camera_move_mouse_right = False self.effects = [] #self.tiles = {} self.tiles = [] self.hidden_obstructions = [] self.last_hour = None self.cursor = self.application.cursor self.camera.setViewPort( fife.Rect( 0, 0, self.application.engine.getRenderBackend().getScreenWidth(), self.application.engine.getRenderBackend().getScreenHeight())) print(" * Enabling renderers...") self.instance_renderer = fife.InstanceRenderer.getInstance(self.camera) self.instance_renderer.addIgnoreLight(["effects"]) #self.foo = True self.floating_text_renderer = fife.FloatingTextRenderer.getInstance( self.camera) textfont = get_manager().createFont( "fonts/rpgfont.png", 0, str(application.settings.get("FIFE", "FontGlyphs"))) self.floating_text_renderer.setFont(textfont) self.floating_text_renderer.activateAllLayers(self.application.map) #self.floating_text_renderer.setBackground(210, 210, 100, 63) #self.floating_text_renderer.setBorder(210, 210, 100) self.floating_text_renderer.setEnabled(True) self.grid_renderer = self.camera.getRenderer("GridRenderer") self.grid_renderer.setEnabled(False) self.grid_renderer.activateAllLayers(self.application.map) self.coordinate_renderer = fife.CoordinateRenderer.getInstance( self.camera) self.coordinate_renderer.setFont(textfont) self.coordinate_renderer.setEnabled(False) self.coordinate_renderer.activateAllLayers(self.application.map) self.cell_renderer = fife.CellRenderer.getInstance(self.camera) self.cell_renderer.clearActiveLayers() self.cell_renderer.addActiveLayer(self.application.maplayer) self.cell_renderer.setEnabled(True) self.cell_renderer.setEnabledBlocking(False) self.cell_renderer.setEnabledFogOfWar(False) self.concimg = self.application.engine.getImageManager().load( "objects/Effects/black_cell.png") self.maskimg = self.application.engine.getImageManager().load( "objects/Effects/mask_cell.png") self.cell_renderer.setConcealImage(self.concimg) self.cell_renderer.setMaskImage(self.maskimg) self.cell_renderer.setFogOfWarLayer(self.application.maplayer) #self.cell_renderer.setEnabledPathVisual(True) #self.cell_renderer.setPathColor(255, 210, 0) self.light_renderer = fife.LightRenderer.getInstance(self.camera) self.light_renderer.setEnabled(True) self.light_renderer.clearActiveLayers() self.light_renderer.addActiveLayer(self.application.maplayer) print(" * Customizing looping animations...") self.pingPongAnimations() print(" * Activating plants and animals...") self.randomizeAnimations() self.activateAnimals() if self.application.current_character: if self.application.current_character.visual: self.camera.attach( self.application.current_character.visual.instance) self.application.current_character.visual.instance.setVisitor( True) self.application.current_character.visual.instance.setVisitorRadius( 9) self.layer_change_listener = ViewLayerChangeListener(self) self.application.maplayer.addChangeListener(self.layer_change_listener) print("* View initialized!")
def __init__(self, application): print("* Initializing view...") self.application = application self.camera = self.application.camera self.target_zoom = 1.0 self.camera.setZoom(1.0) self.target_rotation = self.camera.getRotation() self.camera_move_key_up = False self.camera_move_key_down = False self.camera_move_key_left = False self.camera_move_key_right = False self.camera_move_mouse_up = False self.camera_move_mouse_down = False self.camera_move_mouse_left = False self.camera_move_mouse_right = False self.effects = [] self.camera.setViewPort( fife.Rect( 0, 0, self.application.engine.getRenderBackend().getScreenWidth(), self.application.engine.getRenderBackend().getScreenHeight())) self.attachCameraToPlayer() print(" * Enabling renderers...") self.instance_renderer = fife.InstanceRenderer.getInstance(self.camera) self.instance_renderer.addIgnoreLight(["effects"]) self.floating_text_renderer = fife.FloatingTextRenderer.getInstance( self.camera) textfont = get_manager().createFont( "fonts/rpgfont.png", 0, str(application.settings.get("FIFE", "FontGlyphs"))) self.floating_text_renderer.setFont(textfont) self.floating_text_renderer.activateAllLayers(self.application.map) self.floating_text_renderer.setEnabled(True) self.grid_renderer = self.camera.getRenderer("GridRenderer") self.grid_renderer.setEnabled(False) self.grid_renderer.activateAllLayers(self.application.map) self.coordinate_renderer = fife.CoordinateRenderer.getInstance( self.camera) self.coordinate_renderer.setFont(textfont) self.coordinate_renderer.setEnabled(False) self.coordinate_renderer.activateAllLayers(self.application.map) self.cell_renderer = fife.CellRenderer.getInstance(self.camera) self.cell_renderer.clearActiveLayers() self.cell_renderer.addActiveLayer(self.application.maplayer) self.cell_renderer.setEnabled(True) self.cell_renderer.setEnabledBlocking(False) self.cell_renderer.setEnabledFogOfWar(True) self.concimg = self.application.engine.getImageManager().load( "objects/black_cell.png") self.maskimg = self.application.engine.getImageManager().load( "objects/mask_cell.png") self.cell_renderer.setConcealImage(self.concimg) self.cell_renderer.setMaskImage(self.maskimg) self.cell_renderer.setFogOfWarLayer(self.application.maplayer) self.light_renderer = fife.LightRenderer.getInstance(self.camera) self.light_renderer.setEnabled(True) self.light_renderer.clearActiveLayers() self.light_renderer.addActiveLayer(self.application.maplayer) self.layer_change_listener = ViewLayerChangeListener(self) self.application.maplayer.addChangeListener(self.layer_change_listener) print("* View initialized!")
def update(self): """ Update regiontool We group one ToggleButton and one Label into a HBox, the main wrapper itself is a VBox and we also capture both the Button and the Label to listen for mouse actions """ self.clear_region_list() if len(self.regions) <= 0: if not self._mapview: regionid = "No map is open" else: regionid = "No regions" subwrapper = pychan.widgets.HBox() regionLabel = pychan.widgets.Label() regionLabel.text = unicode(regionid) regionLabel.name = RegionTool.LABEL_NAME_PREFIX + regionid subwrapper.addChild(regionLabel) self.wrapper.addChild(subwrapper) if self._mapview: self.renderer.removeAll("region") for name, region in self.regions.iteritems(): rect = region.rect region_dict = [] point1 = fife.ExactModelCoordinate(rect.x, rect.y) loc1 = fife.Location(self.region_layer) loc1.setExactLayerCoordinates(point1) node1 = fife.RendererNode(loc1) region_dict.append(node1) point2 = fife.ExactModelCoordinate(rect.x, rect.y + rect.h) loc2 = fife.Location(self.region_layer) loc2.setExactLayerCoordinates(point2) node2 = fife.RendererNode(loc2) region_dict.append(node2) point3 = fife.ExactModelCoordinate(rect.x + rect.w, rect.y + rect.h) loc3 = fife.Location(self.region_layer) loc3.setExactLayerCoordinates(point3) node3 = fife.RendererNode(loc3) region_dict.append(node3) point4 = fife.ExactModelCoordinate(rect.x + rect.w, rect.y) loc4 = fife.Location(self.region_layer) loc4.setExactLayerCoordinates(point4) node4 = fife.RendererNode(loc4) region_dict.append(node4) color = [255, 0, 0, 127] if name == self.selected_region: color[3] = 255 self.renderer.addQuad("region", region_dict[0], region_dict[1], region_dict[2], region_dict[3], *color) font = get_manager().getDefaultFont() self.renderer.addText("region", region_dict[0], font, name) for region in self.regions.itervalues(): regionid = region.name subwrapper = pychan.widgets.HBox() regionLabel = pychan.widgets.Label() regionLabel.text = unicode(regionid) regionLabel.name = RegionTool.LABEL_NAME_PREFIX + regionid regionLabel.capture(self.selectRegion, "mousePressed") subwrapper.addChild(regionLabel) self.wrapper.addChild(subwrapper) self.container.adaptLayout()
def initCameras(self): """ Before we can actually see something on screen we have to specify the render setup. This is done through Camera objects which offer a viewport on the map. For this techdemo two cameras are used. One follows the hero(!) via 'attach' the other one scrolls around a bit (see the pump function). """ camera_prefix = self.filename.rpartition('.')[0] # Remove file extension camera_prefix = camera_prefix.rpartition('/')[2] # Remove path camera_prefix += '_' for cam in self.map.getCameras(): camera_id = cam.getId().replace(camera_prefix, '') self.cameras[camera_id] = cam cam.resetRenderers() self.cameras['main'].attach(self.hero.agent) # Floating text renderers currntly only support one font. # ... so we set that up. # You'll se that for our demo we use a image font, so we have to specify the font glyphs # for that one. renderer = fife.FloatingTextRenderer.getInstance(self.cameras['main']) textfont = get_manager().createFont('fonts/rpgfont.png', 0, str(TDS.get("FIFE", "FontGlyphs"))); renderer.setFont(textfont) renderer.activateAllLayers(self.map) renderer.setBackground(100, 255, 100, 165) renderer.setBorder(50, 255, 50) renderer.setEnabled(True) # Activate the grid renderer on all layers renderer = self.cameras['main'].getRenderer('GridRenderer') renderer.activateAllLayers(self.map) # The small camera shouldn't be cluttered by the 'humm di dums' of our hero. # So we disable the renderer simply by setting its font to None. renderer = fife.FloatingTextRenderer.getInstance(self.cameras['small']) renderer.setFont(None) # The following renderers are used for debugging. # Note that by default ( that is after calling View.resetRenderers or Camera.resetRenderers ) # renderers will be handed all layers. That's handled here. renderer = fife.CoordinateRenderer.getInstance(self.cameras['main']) renderer.setFont(textfont) renderer.clearActiveLayers() renderer.addActiveLayer(self.map.getLayer(str(TDS.get("rio", "CoordinateLayerName")))) renderer = self.cameras['main'].getRenderer('QuadTreeRenderer') renderer.setEnabled(True) renderer.clearActiveLayers() if str(TDS.get("rio", "QuadTreeLayerName")): renderer.addActiveLayer(self.map.getLayer(str(TDS.get("rio", "QuadTreeLayerName")))) # If Light is enabled in settings then init the lightrenderer. if self.lightmodel != 0: renderer = fife.LightRenderer.getInstance(self.cameras['main']) renderer.setEnabled(True) renderer.clearActiveLayers() renderer.addActiveLayer(self.map.getLayer('TechdemoMapGroundObjectLayer')) # Fog of War stuff renderer = fife.CellRenderer.getInstance(self.cameras['main']) renderer.setEnabled(True) renderer.clearActiveLayers() renderer.addActiveLayer(self.map.getLayer('TechdemoMapGroundObjectLayer')) concimg = self.engine.getImageManager().load("misc/black_cell.png") maskimg = self.engine.getImageManager().load("misc/mask_cell.png") renderer.setConcealImage(concimg) renderer.setMaskImage(maskimg) renderer.setFogOfWarLayer(self.map.getLayer('TechdemoMapGroundObjectLayer')) #disable FoW by default. Users can turn it on with the 'f' key. renderer.setEnabledFogOfWar(False) #renderer.setEnabledBlocking(True) # Set up the second camera # NOTE: We need to explicitly call setLocation, there's a bit of a messup in the Camera code. self.cameras['small'].setLocation(self.hero.agent.getLocation()) self.cameras['small'].attach(self.girl.agent) self.target_rotation = self.cameras['main'].getRotation()
def onConsoleCommand(self, command): result = "==OK==" args = command.split(" ") cmd = [] for arg in args: arg = arg.strip() if arg != "": cmd.append(arg) if cmd[0].lower() in ('quit', 'exit'): self.quit = True self._testmanager.stopTest() result = "quitting." elif cmd[0].lower() in ('help', 'h'): if len(cmd) == 2: found = False for test in self._testmanager.tests: if test.getName().lower() == cmd[1].lower(): self._console.println( test.getHelp() ) found = True break if not found: result = "No help available for: " + cmd[1] else: self._console.println( open( 'data/help/fife_test.txt', 'r' ).read() ) elif cmd[0].lower() in ('clear', 'cls'): self._console.clear() elif cmd[0].lower() in ('list', 'ls'): self._console.println( "List of test modules:" ) for test in self._testmanager.tests: self._console.println( "\'" + test.getName() + "\' - " + test.getDescription() ) elif cmd[0].lower() in ('run', 'r'): runtest = None if len(cmd) != 2: result = "Invalid number of arguments!" return result if self._testmanager.runningtest: result = self._testmanager.runningtest.getName() + " is currently running. Please stop the test before running another one!" return result for test in self._testmanager.tests: if test.getName().lower() == cmd[1].lower(): runtest = test if runtest: self._console.println( "Running test " + runtest.getName() ) self._testmanager.runTest(runtest) get_manager().getConsole().toggleShowHide() else: result = "Test " + cmd[1] + " was not found!" elif cmd[0].lower() in ('stop', 'st'): if self._testmanager.runningtest: self._console.println("Stopping running test..") self._testmanager.stopTest() else: result = "Nothing is running!" elif cmd[0].lower() in ('reset', 'rst'): if self._testmanager.runningtest: self._console.println("Resetting test " + self._testmanager.runningtest.getName() + "...") self._testmanager.resetTest() get_manager().getConsole().toggleShowHide() else: result = "Nothing is running!" elif cmd[0].lower() in ('lsrunning', 'lsrun', 'running'): if self._testmanager.runningtest: self._console.println( "Current running test: " + self._testmanager.runningtest.getName() ) else: self._console.println( "No test currently running." ) else: if self._testmanager.runningtest: result = self._testmanager.runningtest.onConsoleCommand(cmd) else: result = cmd[0] + ": not found." return result
def __init__(self, application): print "* Initializing view..." self.application = application self.camera = self.application.camera self.target_rotation = self.camera.getRotation() self.target_zoom = self.camera.getZoom() self.target_ZToY = self.camera.getZToY() self.camera_move_key_up = False self.camera_move_key_down = False self.camera_move_key_left = False self.camera_move_key_right = False self.camera_move_mouse_up = False self.camera_move_mouse_down = False self.camera_move_mouse_left = False self.camera_move_mouse_right = False self.camera.setViewPort( fife.Rect( 0, 0, self.application.engine.getRenderBackend().getScreenWidth(), self.application.engine.getRenderBackend().getScreenHeight())) print " * Enabling renderers..." self.instance_renderer = fife.InstanceRenderer.getInstance(self.camera) #self.cell_renderer = fife.CellRenderer.getInstance(self.camera) #self.cell_renderer.setEnabled(True) #self.cell_renderer.setEnabledPathVisual(True) #self.cell_renderer.setPathColor(255, 210, 0) #self.cell_renderer.activateAllLayers(self.application.map) self.floating_text_renderer = fife.FloatingTextRenderer.getInstance( self.camera) #print get_manager() textfont = get_manager().createFont( 'fonts/rpgfont.png', 0, str(application.settings.get("FIFE", "FontGlyphs"))) self.floating_text_renderer.setFont(textfont) self.floating_text_renderer.activateAllLayers(self.application.map) self.floating_text_renderer.setBackground(255, 210, 0, 127) self.floating_text_renderer.setBorder(255, 210, 0) self.floating_text_renderer.setEnabled(True) #self.grid_renderer = self.camera.getRenderer('GridRenderer') #self.grid_renderer.setEnabled(True) #self.grid_renderer.activateAllLayers(self.application.map) #self.coordinate_renderer = fife.CoordinateRenderer.getInstance(self.camera) #self.coordinate_renderer.setFont(textfont) #self.coordinate_renderer.setEnabled(True) #self.coordinate_renderer.activateAllLayers(self.application.map) # outline the terrain by cloning instances and manipulating drawing order print " * Generating outlines and mist..." for instance in self.application.maplayer.getInstances(): coordinates = instance.getLocation().getExactLayerCoordinates() if instance.getObject().getId()[:5] == "block": new_instance = self.application.maplayer.createInstance( instance.getObject(), coordinates) new_instance.setCellStackPosition(55) fife.InstanceVisual.create(new_instance).setStackPosition(55) newer_instance = self.application.maplayer.createInstance( instance.getObject(), coordinates) newer_instance.setCellStackPosition(110) fife.InstanceVisual.create(newer_instance).setStackPosition( 110) self.instance_renderer.addOutlined(new_instance, 0, 0, 0, 1, 1, 15, 49, 32, 34) self.instance_renderer.addOutlined(instance, 0, 0, 0, 1, 1, 0, 0, 0, 0) elif instance.getObject().getId() == "water": coordinates.z -= 0.5 new_instance = self.application.maplayer.createInstance( self.application.model.getObject("water_under", "tactics"), coordinates) new_instance.setCellStackPosition(110) coordinates.z -= 0.5 newer_instance = self.application.maplayer.createInstance( self.application.model.getObject("water_under", "tactics"), coordinates) newer_instance.setCellStackPosition(110) instance.setCellStackPosition(110) #self.instance_renderer.addOutlined(new_instance, 0, 0, 0, 1, 1) #self.instance_renderer.addOutlined(instance, 0, 0, 0, 1, 1) # add mist gradient self.instance_renderer.addColored( newer_instance, 0, 0, 0, self.mistIntensity(coordinates.z))
def onConsoleCommand(self, command): result = "==OK==" args = command.split(" ") cmd = [] for arg in args: arg = arg.strip() if arg != "": cmd.append(arg) if cmd[0].lower() in ('quit', 'exit'): self.quit = True self._testmanager.stopTest() result = "quitting." elif cmd[0].lower() in ('help', 'h'): if len(cmd) == 2: found = False for test in self._testmanager.tests: if test.getName().lower() == cmd[1].lower(): self._console.println(test.getHelp()) found = True break if not found: result = "No help available for: " + cmd[1] else: self._console.println( open('data/help/fife_test.txt', 'r').read()) elif cmd[0].lower() in ('clear', 'cls'): self._console.clear() elif cmd[0].lower() in ('list', 'ls'): self._console.println("List of test modules:") for test in self._testmanager.tests: self._console.println("\'" + test.getName() + "\' - " + test.getDescription()) elif cmd[0].lower() in ('run', 'r'): runtest = None if len(cmd) != 2: result = "Invalid number of arguments!" return result if self._testmanager.runningtest: result = self._testmanager.runningtest.getName( ) + " is currently running. Please stop the test before running another one!" return result for test in self._testmanager.tests: if test.getName().lower() == cmd[1].lower(): runtest = test if runtest: self._console.println("Running test " + runtest.getName()) self._testmanager.runTest(runtest) get_manager().getConsole().toggleShowHide() else: result = "Test " + cmd[1] + " was not found!" elif cmd[0].lower() in ('stop', 'st'): if self._testmanager.runningtest: self._console.println("Stopping running test..") self._testmanager.stopTest() else: result = "Nothing is running!" elif cmd[0].lower() in ('reset', 'rst'): if self._testmanager.runningtest: self._console.println("Resetting test " + self._testmanager.runningtest.getName() + "...") self._testmanager.resetTest() get_manager().getConsole().toggleShowHide() else: result = "Nothing is running!" elif cmd[0].lower() in ('lsrunning', 'lsrun', 'running'): if self._testmanager.runningtest: self._console.println("Current running test: " + self._testmanager.runningtest.getName()) else: self._console.println("No test currently running.") else: if self._testmanager.runningtest: result = self._testmanager.runningtest.onConsoleCommand(cmd) else: result = cmd[0] + ": not found." return result