Ejemplo n.º 1
0
    def startPacking(self, file, outdir=None):
        if os.path.isfile(file):
            loader = fife.MapLoader(self.model, self.vfs, self.imagemgr,
                                    self.rb)
            print 'loading:', file
            loader.loadImportFile(file)

            # there' only one namespace and one object (single import file)
            self.ns = self.model.getNamespaces()[0]
            self.object = self.model.getObjects(self.ns)[0]
            print 'object', '"' + self.object.getId() + '"'

            if len(self.object.getActionIds()) is 0:
                print 'object', '"' + self.object.getId(
                ) + '"', 'doesn\'t have any defined actions, quitting.'
                return

            if outdir is None:
                outdir = os.path.dirname(file) + '-out'

            try:
                os.mkdir(outdir)
            except:
                pass

            output = os.path.join(outdir, os.path.basename(file))
            print 'saving to:', output
            self.packActions(self.object, output)
            self.model.deleteObjects()
            print 'done\n'
        else:
            raise file + " is not a file!"
Ejemplo n.º 2
0
    def importDir(self, path, filename=""):
        if os.path.isdir(os.path.join(path, filename)):
            path = os.path.join(path, filename)
            path = os.path.normpath(path)

        # FIXME: This is necassary for the files to be loaded properly.
        #		 The loader should be fixed to support native (windows)
        #		 path separators.
        path = path.replace('\\', '/')

        try:
            if os.path.isdir(path):
                loader = fife.MapLoader(self.engine.getModel(),
                                        self.engine.getVFS(),
                                        self.engine.getImageManager(),
                                        self.engine.getRenderBackend())
                loader.loadImportDirectory(path)
            else:
                raise file + " is not a directory!"
        except:
            traceback.print_exc(sys.exc_info()[1])
            errormsg = u"Importing directory failed:\n"
            errormsg += u"File: " + unicode(file) + u"\n"
            errormsg += u"Error: " + unicode(sys.exc_info()[1])
            ErrorDialog(errormsg)
            return None

        events.onObjectsImported.send(sender=self)
Ejemplo n.º 3
0
	def openFile(self, path):
		""" Opens a file """
		parts = path.split(os.sep)

		for mapview in self._mapviewlist:
			if path == mapview._map.getFilename():
				self.getStatusBar().text = u"Map already loaded, omitting map " + parts[-1]
				return
		
		events.onOpenMapFile.send(sender=self, path=path)
		
		try:
			map = None
			fife_loader = fife.MapLoader(self.engine.getModel(), self.engine.getVFS(), self.engine.getImageManager(), self.engine.getRenderBackend())
			if self._lighting_mode == 0 and fife_loader.isLoadable(path):
				map = fife_loader.load(path)
			else:
				# TODO: vtchill - once lights are supported by the c++ map loader this can be removed
				map = loaders.loadMapFile(path, self.engine, extensions = {'lights': True})
				
			if map:
				self.getStatusBar().text = u"Loaded map: " + parts[-1]
				return self.newMapView(map)
			else:
				self.getStatusBar().text = u"Map could not be loaded: " + parts[-1]
				return None
		except:
			traceback.print_exc(sys.exc_info()[1])
			errormsg = u"Opening map failed:\n"
			errormsg += u"File: "+unicode(path, sys.getfilesystemencoding())+u"\n"
			errormsg += u"Error: "+unicode(sys.exc_info()[1])
			ErrorDialog(errormsg)
			return None
Ejemplo n.º 4
0
	def load(self, filename):
		"""
		Load a xml map and setup agents and cameras.
		"""
		
		self.filename = filename
		self.reset()
		loader = fife.MapLoader(self.engine.getModel(), 
								self.engine.getVFS(), 
								self.engine.getImageManager(), 
								self.engine.getRenderBackend())
								
		if loader.isLoadable(filename):
			self.map = loader.load(filename)

		self.initAgents()
		self.initCameras()

		#Set background color
		self.engine.getRenderBackend().setBackgroundColor(80,80,255)

		if int(TDS.get("FIFE", "PlaySounds")):
			# play track as background music
			self.music = self.soundmanager.createSoundEmitter('music/rio_de_hola.ogg')
			self.music.looping = True
			self.music.gain = 128.0
			self.music.play()
			
			self.waves = self.soundmanager.createSoundEmitter('sounds/waves.ogg')
			self.waves.looping = True
			self.waves.gain = 16.0
			self.waves.play()
Ejemplo n.º 5
0
    def __init__(self, settings):
        # Call our base class's __init__ function and pass it settings.
        # This is where the FIFE engine instance gets created and configured
        # (amoungst other things).  This includes reading the settings file,
        # applying the settings to the engine, initializing PyChan (our GUI
        # manager), creating the default application listener (more info on
        # this in our later tutorials), and setting up logging.  All of
        # these things you can do on your own but we provide ApplicationBase
        # to make your life easier.
        super(Tutorial1Application, self).__init__(settings)

        # Save a copy of our settings.  This could be useful in the future
        # as the Setting module allows you to store your own settins as
        # well as FIFE settings.
        self._settings = settings

        # Initialize an instance of fife.MapLoader which is a built in map
        # loader that we provide.  We must pass it some internal FIFE objects
        # that the loader requires to properly load a map.
        self._loader = fife.MapLoader(self.engine.getModel(),
                                      self.engine.getVFS(),
                                      self.engine.getImageManager(),
                                      self.engine.getRenderBackend())

        # True if we have a map loaded.  False otherwise.
        self._mapLoaded = False
Ejemplo n.º 6
0
	def loadLevel(self, filename):
		"""
		Load a xml map and setup cameras.
		"""
		
		self.resetKeys()
		
		self._filename = filename
		self.reset()
		
		loader = fife.MapLoader(self._engine.getModel(), 
								self._engine.getVFS(), 
								self._engine.getImageManager(), 
								self._engine.getRenderBackend())
								
		if loader.isLoadable(self._filename):
			self._map = loader.load(self._filename)
			loader.loadImportFile("objects/projectiles/bullet1/object.xml")
			loader.loadImportFile("objects/projectiles/fireball/object.xml")
									
		self._scene = Scene(self, self._engine, self._map.getLayer('objects'), self._soundmanager)
		self._scene.initScene(self._map)

		self.initCameras()

		self._hudwindow.show()
		self._gameover.hide()
		self._winner.hide()
		
		self._starttime = self._timemanager.getTime()
		
		self._genericrenderer = fife.GenericRenderer.getInstance(self.cameras['main'])
		self._genericrenderer.clearActiveLayers()
		self._genericrenderer.addActiveLayer(self._map.getLayer('boundingbox'))
		self._genericrenderer.setEnabled(True)
Ejemplo n.º 7
0
	def __init__(self, settings):
		print("* Initializing application...")
		super(Application, self).__init__(settings)
		self.settings = settings
		self.model = self.engine.getModel()
		self.mapLoader = fife.MapLoader(
				self.model,
				self.engine.getVFS(),
				self.engine.getImageManager(),
				self.engine.getRenderBackend())
		self.objectLoader = fife.ObjectLoader(
				self.model,
				self.engine.getVFS(),
				self.engine.getImageManager(),
				self.engine.getAnimationManager())
		self.animationLoader = fife.AnimationLoader(
				self.engine.getVFS(),
				self.engine.getImageManager(),
				self.engine.getAnimationManager())

		self.map = None
		self.view = None
		self.change_res = False

		self.eventmanager = self.engine.getEventManager()
		self.mouselistener = MouseListener(self)
		self.keylistener = KeyListener(self)
		self.eventmanager.addMouseListenerFront(self.mouselistener)
		self.eventmanager.addKeyListenerFront(self.keylistener)
		self.soundmanager = self.engine.getSoundManager()
		self.soundmanager.init()
		self.imagemanager = self.engine.getImageManager()
		print("* Application initialized!")

		self.gui = GUI(self)
		self.real_timeline = RealTimeline()
		self.engine.getTimeManager().registerEvent(self.real_timeline)
		self.game_speed = settings.get("gameplay", "TimeAcceleration", 1)

		print("* Loading objects...")
		for import_object in importobjects.import_list:
			self.loadObject(import_object)
		if self.settings.get("gameplay", "PreloadSprites", True):
			self.imagemanager.reloadAll()
		print("* Objects loaded!")

		self.sounds = {}
		self.music = None
		self.music_name = ""
		if not self.settings.get("FIFE", "PlaySounds"):
			self.soundmanager.setVolume(0.0)

		self.unloadMap()

		self.lastmem = 0
		self.last_frame_time = timeit.default_timer()
Ejemplo n.º 8
0
 def __init__(self, engine):
     """Constructor"""
     self.__model = engine.getModel()
     if 0:
         self.__model = fife.Model()
     self.__map_loader = fife.MapLoader(engine.getModel(), engine.getVFS(),
                                        engine.getImageManager(),
                                        engine.getRenderBackend())
     self.__import_ref_count = {}
     self.undo_manager = UndoManager()
Ejemplo n.º 9
0
    def create(self, engine, application):
        self._application = application
        self._engine = engine
        self._running = False

        self._loader = fife.MapLoader(self._engine.getModel(),
                                      self._engine.getVFS(),
                                      self._engine.getImageManager(),
                                      self._engine.getRenderBackend())

        self._eventmanager = self._engine.getEventManager()
Ejemplo n.º 10
0
	def __init__(self, settings):
		# Call our base class's __init__ function and pass it settings.
		# This is where the FIFE engine instance gets created and configured
		# (amoungst other things).  This includes reading the settings file,
		# applying the settings to the engine, initializing PyChan (our GUI
		# manager), creating the default application listener (more info on
		# this in our later tutorials), and setting up logging.  All of
		# these things you can do on your own but we provide ApplicationBase
		# to make your life easier.
		super(Tutorial1Application,self).__init__(settings)
		
		# Save a copy of our settings.  This could be useful in the future
		# as the Setting module allows you to store your own settins as
		# well as FIFE settings.
		self._settings = settings
		
		# Initialize an instance of fife.MapLoader which is a built in map
		# loader that we provide.  We must pass it some internal FIFE objects
		# that the loader requires to properly load a map.
		self._loader = fife.MapLoader(self.engine.getModel(), 
									self.engine.getVFS(), 
									self.engine.getImageManager(), 
									self.engine.getRenderBackend())
			
		# True if we have a map loaded.  False otherwise.
		self._mapLoaded = False

		# Since we want to listen for mouse events lets save a reference to
		# the event manager and create our event listener and attach it to 
		# the manager.
		self._eventmanager = self.engine.getEventManager()
		self._mouselistener = Tutorial1MouseListener(self)
		
		# Listeners are executed in the order in which they are added.
		# Lets ensure this one gets executed first.
		self._eventmanager.addMouseListenerFront(self._mouselistener)
		
		# Add the quit botton to the top left of the screen
		# First use pychan to load the interface
		self._rootpanel = pychan.loadXML('gui/rootpanel.xml')
		
		# Map functions to the buttons on the root panel
		self._rootpanel.mapEvents({ 
			'quitButton' : self.onQuitButtonPress,
		})
		
		# Finally show the panel so it's visible to the user
		self._rootpanel.show()

		# Initialize the dialog box to ask the user if they are sure they want
		# to quit.  The dialog box doesn't get displayed until we call the 
		# show() function.  The first parameter is the function to call when
		# the user clicks the "accept" button on the dialog box.
		self._quitdialog = QueryDialog(self.quitAccepted, "Attention!", "Are you sure you wan to quit?")
Ejemplo n.º 11
0
    def load(self, filename):
        self.filename = filename
        # self.reset()
        loader = fife.MapLoader(self.engine.getModel(), self.engine.getVFS(),
                                self.engine.getImageManager(),
                                self.engine.getRenderBackend())

        if loader.isLoadable(filename):
            self.map = loader.load(filename)

        # self.initCameras()
        self.initAgents()

        # Set background color
        self.engine.getRenderBackend().setBackgroundColor(80, 80, 255)
Ejemplo n.º 12
0
    def create(self, engine, application):
        self._application = application
        self._engine = engine
        self._running = False

        self._loader = fife.MapLoader(self._engine.getModel(),
                                      self._engine.getVFS(),
                                      self._engine.getImageManager(),
                                      self._engine.getRenderBackend())

        self._eventmanager = self._engine.getEventManager()
        self._imagemanager = self._engine.getImageManager()
        self._timemanager = self._engine.getTimeManager()

        self._time = self._timemanager.getTime()
        self._armor = "clothes"
        self._head = "head1"
Ejemplo n.º 13
0
	def __init__(self, gamecontroller):
		self._gamecontroller = gamecontroller
		
		self._map = None
		self._mapname = None
		self._maincameraname = self._gamecontroller.settings.get("RPG", "DefaultCameraName", "camera1")
		self._cameras = {}
		
		self._actorlayer = None
		
		self._player = None
		self._objectlist = {}
		
		self._objectsettings = None
		self._modelsettings = None

		self._loader = fife.MapLoader(self._gamecontroller.engine.getModel(), 
									self._gamecontroller.engine.getVFS(), 
									self._gamecontroller.engine.getImageManager(), 
									self._gamecontroller.engine.getRenderBackend())
Ejemplo n.º 14
0
    def activate(self):
        """Activates the map"""
        self.__application.world.add_entity_delete_callback(
            self.cb_entity_delete)
        if not self.is_loaded:
            engine = self.__application.engine
            loader = fife.MapLoader(engine.getModel(),
                                    engine.getVFS(),
                                    engine.getImageManager(),
                                    engine.getRenderBackend())

            if loader.isLoadable(self.__map):
                self.__map = loader.load(self.__map)
                self.__setup_map_data()
            else:
                raise RuntimeError("Can't load mapfile %s" % str(self.__map))
            self.update_entities()
            self.__application.map_loded(self.__map.getId())
        else:
            self.__application.update_agents(self.__map.getId())
        self.camera.setEnabled(True)
Ejemplo n.º 15
0
    def __init__(self, settings):
        #self.ar = []
        #for i in xrange(512):
        #	self.ar.append(' ' * memtest.MEGA)
        #self.a = ' ' * memtest.MEGA * 1024
        #memtest.alloc_max_str()
        #memtest.alloc_max_array()

        print("* Initializing application...")
        super(Application, self).__init__(settings)
        self.settings = settings
        self.model = self.engine.getModel()
        self.mapLoader = fife.MapLoader(self.model, self.engine.getVFS(),
                                        self.engine.getImageManager(),
                                        self.engine.getRenderBackend())
        self.objectLoader = fife.ObjectLoader(
            self.model, self.engine.getVFS(), self.engine.getImageManager(),
            self.engine.getAnimationManager())
        #		self.atlasLoader = fife.AtlasLoader(self.model,
        #									self.engine.getVFS(),
        #									self.engine.getImageManager())

        self.map = None
        self.world = None
        self.view = None
        self.change_res = False

        self.eventmanager = self.engine.getEventManager()
        self.mouselistener = MouseListener(self)
        self.keylistener = KeyListener(self)
        self.eventmanager.addMouseListenerFront(self.mouselistener)
        self.eventmanager.addKeyListenerFront(self.keylistener)
        self.soundmanager = self.engine.getSoundManager()
        self.soundmanager.init()
        self.imagemanager = self.engine.getImageManager()
        print("* Application initialized!")

        self.gui = GUI(self)
        self.real_timeline = RealTimeline()
        self.engine.getTimeManager().registerEvent(self.real_timeline)
        self.game_speed = 1

        #print self.engine.getRenderBackend().isDepthBufferEnabled()

        #		self.loadAtlas("objects/nature.xml")
        print("* Loading objects...")
        for import_object in importobjects.import_list:
            self.loadObject(import_object)
        if self.settings.get("gameplay", "PreloadSprites", True):
            self.imagemanager.reloadAll()
        print("* Objects loaded!")

        self.sounds = {}
        self.music = None
        self.music_name = ""
        #self.music = self.soundmanager.createSoundEmitter("music/SFT-Two Mapple Inn.ogg")
        #		self.sound_attack = self.soundmanager.createSoundEmitter("sfx/attack-1.ogg")
        #self.music.looping = True
        if not self.settings.get("FIFE", "PlaySounds"):
            self.soundmanager.setVolume(0.0)
        #self.music.play()

        self.cursor = self.imagemanager.load("gui/cursors/Mousecursor01.png")
        self.cursor.setXShift(-4)
        #self.imagemanager.free("gui/cursors/Mousecursor01.png")
        #self.imagemanager.reload("gui/cursors/Mousecursor01.png")
        self.map_cursor = self.imagemanager.load(
            "gui/cursors/Mousecursor02.png")
        self.map_cursor.setXShift(-29)
        self.map_cursor.setYShift(-29)
        #self.null_image = self.imagemanager.loadBlank(1, 1)
        #self.engine.getCursor().set(self.null_image)
        #self.engine.getCursor().setDrag(self.cursor, -4, 0)
        self.engine.getCursor().set(self.cursor)

        self.unloadMap()

        self.lastmem = 0
Ejemplo n.º 16
0
    def __init__(self, settings):
        print "* Initializing application..."
        super(TacticsApplication, self).__init__(settings)
        self.settings = settings
        self.model = self.engine.getModel()
        self.mapLoader = fife.MapLoader(self.model, self.engine.getVFS(),
                                        self.engine.getImageManager(),
                                        self.engine.getRenderBackend())
        self.objectLoader = fife.ObjectLoader(
            self.model, self.engine.getVFS(), self.engine.getImageManager(),
            self.engine.getAnimationManager())
        self.atlasLoader = fife.AtlasLoader(self.model, self.engine.getVFS(),
                                            self.engine.getImageManager(),
                                            self.engine.getAnimationManager())

        self.map = None
        self.view = None

        self.eventmanager = self.engine.getEventManager()
        self.mouselistener = TacticsMouseListener(self)
        self.keylistener = TacticsKeyListener(self)
        self.eventmanager.addMouseListenerFront(self.mouselistener)
        self.eventmanager.addKeyListenerFront(self.keylistener)
        self.soundmanager = SoundManager(self.engine)
        self.fifesoundmanager = self.engine.getSoundManager()
        print "* Application initialized!"

        self.combat_actions = CombatActions()
        self.gui = TacticsGUI(self)
        self.real_timeline = RealTimeline()
        self.engine.getTimeManager().registerEvent(self.real_timeline)
        self.pather = TacticsPather(self)
        self.engine.getTimeManager().registerEvent(self.pather)

        self.loadObject("objects/tile.xml")
        self.loadObject("objects/boy/object.xml")
        self.loadObject("objects/dot_red.xml")
        self.loadObject("objects/shadow.xml")
        self.loadObject("objects/effects/fire.xml")
        self.loadObject("objects/effects/explosion.xml")
        self.loadObject("objects/effects/freeze.xml")
        self.loadObject("objects/projectiles/stone.xml")
        self.loadObject("objects/projectiles/fireball.xml")
        self.loadObject("objects/projectiles/tarball.xml")
        self.loadAtlas("objects/nature.xml")
        self.loadObject("objects/caltrops.xml")
        self.loadObject("objects/tar.xml")
        self.loadObject("objects/ice.xml")
        self.loadObject("objects/water_under.xml")
        self.loadObject("objects/water.xml")
        self.loadObject("objects/block_gray.xml")
        self.loadObject("objects/block_grass.xml")

        self.music = self.soundmanager.createSoundEmitter("music/music1.ogg")
        self.sound_attack = self.soundmanager.createSoundEmitter(
            "sfx/attack-1.ogg")
        self.sound_fire = self.soundmanager.createSoundEmitter(
            "sfx/fire-1.ogg")
        self.music.looping = True
        if not self.settings.get("FIFE", "PlaySounds"):
            self.fifesoundmanager.setVolume(0.0)
        self.music.play()

        self.unloadMap()