Mercurial > fife-parpg
diff tests/swig_tests/action_tests.py @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children | d2f1e81fbe2c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/swig_tests/action_tests.py Sun Jun 29 18:44:17 2008 +0000 @@ -0,0 +1,109 @@ +#!/usr/bin/env python +from swig_test_utils import * +import pythonize +from serializers.xmlanimation import XMLAnimationLoader + +class ActionTests(unittest.TestCase): + def setUp(self): + template = 'tests/data/wolf_walk/wolf_walk_%s.xml' + dirnames = ['e', 'ne', 'n', 'nw', 'w', 'sw', 's', 'se'] + files = map(lambda dirname: template % dirname, dirnames) + + self.engine = getEngine() + pool = self.engine.getAnimationPool() + self.animationloader = XMLAnimationLoader(self.engine.getImagePool(), self.engine.getVFS()) + pool.addResourceLoader(self.animationloader) + + _map = self.engine.getModel().createMap("map001") + + self.grid = fife.SquareGrid(True) + self.layer = _map.createLayer("Layer001", self.grid) + + self.target = fife.Location(self.layer) + + self.obj = fife.Object("object001", 'plaa') + fife.ObjectVisual.create(self.obj) + self.pather = fife.LinearPather() + self.obj.setPather(self.pather) + self.action = self.obj.createAction('walk') + fife.ActionVisual.create(self.action) + addResource = self.engine.animationPool.addResourceFromFile + for index, direction in enumerate(dirnames): + degree = 45 * index + self.action.get2dGfxVisual().addAnimation(degree, addResource(files[index])) + + self.ground = fife.Object("ground", 'plaa') + imgid = self.engine.imagePool.addResourceFromFile('tests/data/earth_1.png') + fife.ObjectVisual.create(self.ground) + self.ground.get2dGfxVisual().addStaticImage(0, imgid) + self.ground.img = self.engine.getImagePool().getImage(imgid) + for y in xrange(-2,3): + for x in xrange(-2,3): + inst = self.layer.createInstance(self.ground, fife.ModelCoordinate(x,y)) + fife.InstanceVisual.create(inst) + self.inst = self.layer.createInstance(self.obj, fife.ModelCoordinate(-2,-2)) + fife.InstanceVisual.create(self.inst) + + def tearDown(self): + del self.engine + + def _testWalkingAction(self): + print 'test1' + getAnimation = self.engine.animationPool.getAnimation + print 'test2' + self.inst.move('walk', self.target, 0.05) + self.engine.initializePumping() + backend = self.engine.renderBackend + for i in xrange(360): + self.inst.getLocation().getLayerCoordinates() + self.target.getLayerCoordinates() + if self.inst.getLocation().getLayerCoordinates() == self.target.getLayerCoordinates(): + break + self.inst.update() + action = self.inst.currentAction + angle = 0 #self.inst.orientation + animation = getAnimation( action.getAnimationIndexByAngle(angle) ) + timestamp = self.inst.actionRuntime % animation.duration + image = animation.getFrameByTimestamp( timestamp ) + if image: + image.render(fife.Rect(0,0,image.width,image.height),255) + self.engine.pump() + self.engine.finalizePumping() + + def testWalkAround(self): + + rb = self.engine.getRenderBackend() + viewport = fife.Rect(0, 0, rb.getWidth(), rb.getHeight()) + + cam = self.engine.getView().addCamera("foo", self.layer, viewport, fife.ExactModelCoordinate(0,0) ) + cam.setCellImageDimensions(self.ground.img.getWidth(), self.ground.img.getHeight()) + cam.setRotation(45) + cam.setTilt(40) + + self.engine.getView().resetRenderers() + self.engine.initializePumping() + self.target.setLayerCoordinates(fife.ModelCoordinate(2,-2)) + self.inst.move('walk', self.target, 0.9) + targets = ( + (2,0), (2,-1), (2,-2), (1,-2), + (0,-2), (-1,-2), (-2,-2), (-2,-1), + (-2,0), (-2,1), (-2,2), (-1,2), + (0,2), (1,2), (2,2), (2,1)) + for target in targets: + l = self.inst.getLocation() + l.setLayerCoordinates(fife.ModelCoordinate(0,0)) + self.inst.setLocation(l) + self.target.setLayerCoordinates(fife.ModelCoordinate(*target)) + self.inst.move('walk', self.target, 0.9) + for i in xrange(10): + self.engine.pump() + + self.engine.finalizePumping() + self.engine.getView().removeCamera(cam) + + + +TEST_CLASSES = [ActionTests] + +if __name__ == '__main__': + unittest.main()