Example #1
0
    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
Example #2
0
    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)
Example #3
0
	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)
Example #4
0
	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()		
Example #5
0
	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)
Example #6
0
    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
Example #7
0
    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)
Example #8
0
	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
Example #9
0
    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
Example #10
0
    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()
Example #11
0
 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()
Example #12
0
	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()
Example #13
0
	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()
Example #15
0
	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)
Example #16
0
	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
Example #17
0
	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)
Example #18
0
	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)
Example #19
0
 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)
Example #20
0
 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
Example #21
0
	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()
Example #22
0
    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 __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)
Example #24
0
    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()
Example #25
0
	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
Example #26
0
	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)
Example #27
0
	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)
Example #28
0
    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
Example #29
0
    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)
Example #30
0
    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
Example #31
0
    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()
Example #32
0
	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
Example #33
0
    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!")
Example #34
0
    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!")
Example #35
0
    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()
Example #36
0
	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()
Example #37
0
	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
Example #38
0
    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()
Example #39
0
    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))
Example #40
0
    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