- commit
- 5490f535860864243773c5e37e9ce63c382be705
- parent
- 3e541e7818edd786a8da8662b38b4b405664bc32
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2014-11-02 08:50
allow to persist generated maps
Diffstat
| M | laneya/map.py | 25 | +++++++++++++++++++++++-- |
1 files changed, 23 insertions, 2 deletions
diff --git a/laneya/map.py b/laneya/map.py
@@ -1,3 +1,5 @@ -1 1 import os -1 2 import json 1 3 import random 2 4 3 5 @@ -8,10 +10,11 @@ class MapManager(object): 8 10 coordinates. At any combination of coordinates, there can be only one map. 9 11 10 12 """11 -1 def __init__(self, server, width=60, height=40):-1 13 def __init__(self, server, width=60, height=40, persist=True): 12 14 self.server = server 13 15 self.width = width 14 16 self.height = height -1 17 self.persist = persist 15 18 self.store = {} 16 19 17 20 def generate(self, X, Y, Z): @@ -93,9 +96,19 @@ class MapManager(object): 93 96 """Get a map. If it does not exist yet, generate one.""" 94 97 95 98 key = '%i:%i:%i' % (X, Y, Z) -1 99 filename = 'maps/%s.map' % key 96 100 97 101 if key not in self.store:98 -1 _map = self.generate(X, Y, Z)-1 102 if not os.path.exists('maps'): -1 103 os.mkdir('maps') -1 104 -1 105 if os.path.exists(filename): -1 106 _map = Map(self.server, self.width, self.height) -1 107 _map.load(filename) -1 108 else: -1 109 _map = self.generate(X, Y, Z) -1 110 _map.dump(filename) -1 111 99 112 self.store[key] = _map 100 113 101 114 return self.store[key] @@ -162,6 +175,14 @@ class Map(object): 162 175 def decode(self, data): 163 176 self.floor_layer = data['floor_layer'] 164 177 -1 178 def dump(self, filename): -1 179 with open(filename, 'w') as fh: -1 180 return json.dump(self.encode(), fh) -1 181 -1 182 def load(self, filename): -1 183 with open(filename) as fh: -1 184 self.decode(json.load(fh)) -1 185 165 186 166 187 class Sprite(object): 167 188 """Simple base class for visible game objects."""