diff options
Diffstat (limited to 'src/mapdata.py')
-rw-r--r-- | src/mapdata.py | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/src/mapdata.py b/src/mapdata.py index 2bdc4eb..7346634 100644 --- a/src/mapdata.py +++ b/src/mapdata.py @@ -48,25 +48,23 @@ class KPLayer(object): @mapfile.dumpable('object') class KPObject(object): - __dump_attribs__ = ('position', 'size', 'tileset') + __dump_attribs__ = ('position', 'size', 'tileset', 'kind') def _load(self, mapObj, src): - self.kind = mapObj.loadedTilesets[self.tileset].objects[src['kind']] + self.kindObj = mapObj.loadedTilesets[self.tileset].objects[self.kind] self.updateCache() - def _dump(self, mapObj, dest): - dest['kind'] = mapObj.loadedTilesets[self.tileset].objects.index(self.kind) - def __init__(self): self.position = (0,0) self.size = (1,1) self.kind = 0 + self.kindObj = None self.cache = [] self.tileset = None self.qtItem = None def updateCache(self): - self.cache = self.kind.render(self.size) + self.cache = self.kindObj.render(self.size) @mapfile.dumpable('tile_layer') @@ -178,7 +176,7 @@ class KPPathTileLayer(KPLayer): if pathnode is None: return - self.tileset = KP.map.pathNodeTileset + self.tileset = '' self.objects = [] self.doodads = [] self.associate = pathnode @@ -260,6 +258,18 @@ class KPPathTileLayer(KPLayer): destRow[x] = tile x += 1 y += 1 + + def setTileset(self, tileset): + self.tileset = tileset + + tsObjects = KP.map.loadedTilesets[tileset] + + for obj in self.objects: + obj.tileset = tileset + obj.kindObj = tsObjects[obj.kind] + obj.updateCache() + + self.updateCache() @mapfile.dumpable('doodad') @@ -480,7 +490,7 @@ class KPPathLayer(KPLayer): @mapfile.dumpable('map_root') class KPMap(object): - __dump_attribs__ = ('layers', 'associateLayers', 'nextLayerNumber', 'doodadDefinitions', 'pathNodeTileset') + __dump_attribs__ = ('layers', 'associateLayers', 'nextLayerNumber', 'doodadDefinitions') def _preload(self, src): # we need this early so we can use the deref methods! @@ -492,6 +502,14 @@ class KPMap(object): self.layerModel.list = self.layers self.doodadModel.list = self.doodadDefinitions + if 'version' in source: + self.version = source['version'] + else: + self.version = 1 + + def _dump(self, mapObj, dest): + dest['version'] = self.version + def save(self): path = self.filePath if path is None: @@ -510,6 +528,8 @@ class KPMap(object): open(path, 'wb').write(data) def __init__(self): + self.version = 2 + self.filePath = None self.nextLayerNumber = 1 @@ -527,13 +547,6 @@ class KPMap(object): self.loadTilesets() - try: - self.pathNodeTileset = self.tilesets.keys()[0] - except: - # TODO: This should probably error out or something. Seriously. - # It'll ruin the path or object layers if there are NO tilesets. - self.pathNodeTileset = '' - # LAYERS class LayerModel(QtCore.QAbstractListModel): |