Mercurial > fife-parpg
comparison demos/rpg/scripts/objects/baseobject.py @ 517:c3a026cdd91b
Added the BaseGameObject class and put it in it's own file. All game object will inherit it. Added instance action listeners.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Wed, 26 May 2010 15:28:25 +0000 |
parents | |
children | e4cd18a179af |
comparison
equal
deleted
inserted
replaced
516:d70fc46c8aa5 | 517:c3a026cdd91b |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 # -*- coding: utf-8 -*- | |
4 | |
5 # #################################################################### | |
6 # Copyright (C) 2005-2010 by the FIFE team | |
7 # http://www.fifengine.net | |
8 # This file is part of FIFE. | |
9 # | |
10 # FIFE is free software; you can redistribute it and/or | |
11 # modify it under the terms of the GNU Lesser General Public | |
12 # License as published by the Free Software Foundation; either | |
13 # version 2.1 of the License, or (at your option) any later version. | |
14 # | |
15 # This library is distributed in the hope that it will be useful, | |
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
18 # Lesser General Public License for more details. | |
19 # | |
20 # You should have received a copy of the GNU Lesser General Public | |
21 # License along with this library; if not, write to the | |
22 # Free Software Foundation, Inc., | |
23 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
24 # #################################################################### | |
25 # This is the rio de hola client for FIFE. | |
26 | |
27 import sys, os, re, math, random, shutil | |
28 | |
29 from fife import fife | |
30 from fife.extensions.loaders import loadMapFile | |
31 | |
32 class ObjectActionListener(fife.InstanceActionListener): | |
33 def __init__(self, gamecontroller, obj): | |
34 fife.InstanceActionListener.__init__(self) | |
35 obj.instance.addActionListener(self) | |
36 self._gamecontroller = gamecontroller | |
37 self._object = obj | |
38 | |
39 def onInstanceActionFinished(self, instance, action): | |
40 pass | |
41 | |
42 | |
43 class BaseGameObject(object): | |
44 def __init__(self, gamecontroller, instancename, instanceid=None, createInstance=False): | |
45 """ | |
46 @param gamecontroller: A reference to the master game controller | |
47 @param instancename: The name of the object to load. The object's XML file must | |
48 be part of the map file or added with fife.extensions.loaders.loadImportFile | |
49 @param instanceid: used if you want to give a specific ID to the instance to | |
50 differenciate it from other instances | |
51 @param createInstance: If this is True it will attempt to be loaded from disk and not | |
52 use one that has already been loaded from the map file. See the note about the | |
53 instancename paramater above. | |
54 """ | |
55 self._gamecontroller = gamecontroller | |
56 self._fifeobject = None | |
57 self._name = instancename | |
58 if instanceid: | |
59 self._id = instanceid | |
60 else: | |
61 self._id = self._name | |
62 | |
63 self._instance = None | |
64 | |
65 if createInstance: | |
66 self._createFIFEInstance() | |
67 else: | |
68 self._instance = self._gamecontroller.scene.actorlayer.getInstance(self._id) | |
69 self._instance.thisown = 0 | |
70 | |
71 def destroy(self): | |
72 """ | |
73 Deletes the FIFE instance from the actor layer on the map. | |
74 """ | |
75 if self._instance : | |
76 self._gamecontroller.scene.actorlayer.deleteInstance(self._instance) | |
77 self._instance = None | |
78 | |
79 def _createFIFEInstance(self): | |
80 """ | |
81 Should not be called directly. Use the constructor! | |
82 """ | |
83 mapmodel = self._gamecontroller.engine.getModel() | |
84 self._fifeobject = mapmodel.getObject(self._name, self._gamecontroller.settings.get("RPG", "ObjectNamespace", "http://www.fifengine.de/xml/rpg")) | |
85 | |
86 self._instance = self._gamecontroller.scene.actorlayer.createInstance(self._fifeobject, fife.ModelCoordinate(0,0), self._id) | |
87 fife.InstanceVisual.create(self._instance) | |
88 self._instance.thisown = 0 | |
89 | |
90 def _getLocation(self): | |
91 return self._instance.getLocation() | |
92 | |
93 def _setLocation(self, loc): | |
94 self._instance.setLocation(loc) | |
95 | |
96 def _getInstance(self): | |
97 return self._instance | |
98 | |
99 location = property(_getLocation, _setLocation) | |
100 instance = property(_getInstance) |