Mercurial > parpg-core
comparison src/parpg/gamemap.py @ 12:d60f1dab8469
Fixed resource path dependencies issue that caused PARPG to crash on start.
* PARPG should now run without issue (system installation not tested).
* Utilized FIFE's VFS module to remove path dependencies from most PARPG modules.
* The new parpg.vfs module is a singleton with a single global variable, VFS, which is a reference to the global VFS instance. Although a singleton is not ideal it should be replaced once PARPG's core code is refactored.
* The parpg.vfs singleton is initialized in the parpg.applicaiton.PARPGApplication class with the absolute path to the data directory via the parpg.settings module and corresponding configuration file.
* A new DataPath entry was added to the default system configuration file template under the [parpg] section to support the new parpg.vfs module.
* Updated the parpg-assets subrepo to revision 3 to fix some dialog file format issues (for details see commit message for parpg-assets).
* Fixed a few bugs in the parpg.dialogueparsers.YAMLDialogueParser class related to exception handling.
author | M. George Hansen <technopolitica@gmail.com> |
---|---|
date | Mon, 06 Jun 2011 15:56:14 -1000 |
parents | 1fd2201f5c36 |
children | ad75fa042b99 |
comparison
equal
deleted
inserted
replaced
11:4706e0194af3 | 12:d60f1dab8469 |
---|---|
12 | 12 |
13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License |
14 # along with PARPG. If not, see <http://www.gnu.org/licenses/>. | 14 # along with PARPG. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 |
16 from fife import fife | 16 from fife import fife |
17 | |
18 from fife.extensions.loaders import loadMapFile | 17 from fife.extensions.loaders import loadMapFile |
19 | 18 |
20 class GameMap(fife.MapChangeListener): | 19 class GameMap(fife.MapChangeListener): |
21 """Map class used to flag changes in the map""" | 20 """Map class used to flag changes in the map""" |
22 def __init__(self, engine, model): | 21 def __init__(self, engine, model): |
23 # init mapchange listener | 22 # init mapchange listener |
24 fife.MapChangeListener.__init__(self) | 23 fife.MapChangeListener.__init__(self) |
25 self.map = None | 24 self.map = None |
26 self.engine = engine | 25 self.engine = engine |
27 self.model = model | 26 self.model = model |
27 self.settings = self.model.settings | |
28 | 28 |
29 # init map attributes | 29 # init map attributes |
30 self.my_cam_id = None | 30 self.my_cam_id = None |
31 self.cameras = {} | 31 self.cameras = {} |
32 self.agent_layer = None | 32 self.agent_layer = None |
44 @return: None""" | 44 @return: None""" |
45 # We have to delete the map in Fife. | 45 # We have to delete the map in Fife. |
46 if self.map: | 46 if self.map: |
47 self.model.deleteObjects() | 47 self.model.deleteObjects() |
48 self.model.deleteMap(self.map) | 48 self.model.deleteMap(self.map) |
49 | |
49 self.transitions = [] | 50 self.transitions = [] |
50 self.map = None | 51 self.map = None |
51 self.agent_layer = None | 52 self.agent_layer = None |
52 self.top_layer = None | 53 self.top_layer = None |
53 # We have to clear the cameras in the view as well, or we can't reuse | 54 # We have to clear the cameras in the view as well, or we can't reuse |
69 """Load a map given the filename. | 70 """Load a map given the filename. |
70 @type filename: String | 71 @type filename: String |
71 @param filename: Name of map to load | 72 @param filename: Name of map to load |
72 @return: None""" | 73 @return: None""" |
73 self.reset() | 74 self.reset() |
75 | |
74 self.map = loadMapFile(filename, self.engine) | 76 self.map = loadMapFile(filename, self.engine) |
77 | |
75 self.agent_layer = self.map.getLayer('ObjectLayer') | 78 self.agent_layer = self.map.getLayer('ObjectLayer') |
76 self.top_layer = self.map.getLayer('TopLayer') | 79 self.top_layer = self.map.getLayer('TopLayer') |
77 | 80 |
78 # it's possible there's no transition layer | 81 # it's possible there's no transition layer |
79 size = len('TransitionLayer') | 82 size = len('TransitionLayer') |
86 Note that if we have more than one camera in a map file | 89 Note that if we have more than one camera in a map file |
87 we will have to rework how self.my_cam_id works. To make sure | 90 we will have to rework how self.my_cam_id works. To make sure |
88 the proper camera is set as the 'main' camera. | 91 the proper camera is set as the 'main' camera. |
89 At this point we also set the viewport to the current resolution.""" | 92 At this point we also set the viewport to the current resolution.""" |
90 for cam in self.map.getCameras(): | 93 for cam in self.map.getCameras(): |
91 width = self.model.settings.fife.ScreenWidth | 94 width = self.settings.fife.ScreenWidth |
92 height = self.model.settings.fife.ScreenHeight | 95 height = self.settings.fife.ScreenHeight |
93 viewport = fife.Rect(0, 0, width, height) | 96 viewport = fife.Rect(0, 0, width, height) |
94 cam.setViewPort(viewport) | 97 cam.setViewPort(viewport) |
95 self.my_cam_id = cam.getId() | 98 self.my_cam_id = cam.getId() |
96 self.cameras[self.my_cam_id] = cam | 99 self.cameras[self.my_cam_id] = cam |
97 cam.resetRenderers() | 100 cam.resetRenderers() |
106 | 109 |
107 # set the render text | 110 # set the render text |
108 rend = fife.FloatingTextRenderer.getInstance(self.cameras[ | 111 rend = fife.FloatingTextRenderer.getInstance(self.cameras[ |
109 self.my_cam_id | 112 self.my_cam_id |
110 ]) | 113 ]) |
111 text = self.engine.getGuiManager().\ | 114 text = self.engine.getGuiManager().createFont('fonts/rpgfont.png', |
112 createFont('fonts/rpgfont.png', 0, \ | 115 0, |
113 self.model.settings.fife.FontGlyphs) | 116 self.settings.fife.FontGlyphs) |
117 | |
114 rend.changeDefaultFont(text) | 118 rend.changeDefaultFont(text) |
115 rend.activateAllLayers(self.map) | 119 rend.activateAllLayers(self.map) |
116 rend.setEnabled(True) | 120 rend.setEnabled(True) |
117 | 121 |
118 # Activate the grid renderer on all layers | 122 # Activate the grid renderer on all layers |