view engine/extensions/loaders.py @ 142:816b17db2bec

- small fix for editor maploader plugin - it passed a (never used) param to loadMapFile()
author chewie@33b003aa-7bff-0310-803a-e67f0ece8222
date Sun, 05 Oct 2008 15:27:31 +0000
parents 5e85737281bc
children e7a431577c95
line wrap: on
line source

# coding: utf-8
# Loader interface for FIFE's native xml format.

import fife

from serializers.xmlmap import XMLMapLoader
from serializers import WrongFileType, NameClash

from serializers.xmlobject import XMLObjectLoader

fileExtensions = ('xml',)

def loadMapFile(path, engine, callback=None):
	""" load map file and get (an optional) callback if major stuff is done:
	- map creation
	- parsed imports
	- parsed layers 
	- parsed cameras
	the callback will send both a string and a float (which shows
	the overall process), callback(string, float)
		
	@return	map	: map object
	"""
	map_loader = XMLMapLoader(engine, callback)
	return map_loader.loadResource(fife.ResourceLocation(path))

def loadImportFile(path, engine):
	object_loader = XMLObjectLoader(engine.getImagePool(), engine.getAnimationPool(), engine.getModel(), engine.getVFS())
	res = None
	try:
		res = object_loader.loadResource(fife.ResourceLocation(path))
		print 'imported object file ' + path
	except WrongFileType:
		pass
#		print 'ignored non-object file ' + path
	except NameClash:
		pass
#		print 'ignored already loaded file ' + path
	return res

def loadImportDir(path, engine):
	for file in filter(lambda f: f.split('.')[-1] == 'xml', engine.getVFS().listFiles(path)):
		loadImportFile('/'.join([path, file]), engine)

def loadImportDirRec(path, engine):
	loadImportDir(path, engine)

	for dir in filter(lambda d: not d.startswith('.'), engine.getVFS().listDirectories(path)):
		loadImportDirRec('/'.join([path, dir]), engine)