diff options
-rw-r--r-- | src/editorui/doodads.py | 6 | ||||
-rw-r--r-- | src/editorui/editormain.py | 6 | ||||
-rw-r--r-- | src/mapdata.py | 18 | ||||
-rw-r--r-- | src/ui.py | 8 |
4 files changed, 33 insertions, 5 deletions
diff --git a/src/editorui/doodads.py b/src/editorui/doodads.py index 7b9e222..b916b27 100644 --- a/src/editorui/doodads.py +++ b/src/editorui/doodads.py @@ -337,6 +337,7 @@ class KPEditorDoodad(KPEditorItem): self._updatePixmap() self._updatePosition() self._updateSize() + self._updateTransform() self.anmButton = self.DoodadAnmButton(self._doodadRef) self.anmProxy = self.HiddenProxy(self.anmButton, self, self.boundingRect().right() - 101, self.boundingRect().bottom() - 25) @@ -565,7 +566,10 @@ class KPEditorDoodad(KPEditorItem): doodad = self._doodadRef() layer = self._layerRef() - layer.objects.remove(doodad) + if isinstance(layer, KPPathTileLayer): + layer.doodads.remove(doodad) + else: + layer.objects.remove(doodad) doodad.cleanUpAnimations() if withItem: diff --git a/src/editorui/editormain.py b/src/editorui/editormain.py index ba75b7f..1ba06bd 100644 --- a/src/editorui/editormain.py +++ b/src/editorui/editormain.py @@ -34,6 +34,12 @@ class KPMapScene(QtGui.QGraphicsScene): for obj in layer.objects: self.addItem(KPEditorDoodad(obj, layer)) elif isinstance(layer, KPPathLayer): + for inLayer in KP.map.associateLayers: + for obj in inLayer.objects: + self.addItem(KPEditorObject(obj, inLayer)) + for obj in inLayer.doodads: + self.addItem(KPEditorDoodad(obj, inLayer)) + for node in layer.nodes: self.addItem(KPEditorNode(node)) diff --git a/src/mapdata.py b/src/mapdata.py index 4ae87ae..b0d3f0f 100644 --- a/src/mapdata.py +++ b/src/mapdata.py @@ -149,11 +149,23 @@ class KPTileLayer(KPLayer): @mapfile.dumpable('associate_layer') class KPPathTileLayer(KPLayer): - __dump_attribs__ = KPLayer.__dump_attribs__ + ('tileset', 'objects', 'doodads', 'associate') + __dump_attribs__ = KPLayer.__dump_attribs__ + ('tileset', 'objects', 'doodads') + + def _dump(self, mapObj, dest): + if isinstance(self.associate, KPNode): + dest['associatedRef'] = ('node', mapObj.refNode(self.associate)) + else: + dest['associatedRef'] = ('path', mapObj.refPath(self.associate)) def _load(self, mapObj, src): + assocType, assocID = src['associatedRef'] + + if assocType == 'path': + self.associate = mapObj.derefPath(assocID) + else: + self.associate = mapObj.derefNode(assocID) + self.updateCache() - KP.mainWindow.pathNodeList.loadLayer(self) def __repr__(self): return "<KPPathTileLayer with %r connected to %r>" % (self.tileset, self.associate) @@ -173,8 +185,6 @@ class KPPathTileLayer(KPLayer): self.updateCache() - self.icon = KP.icon('LayerTile') - def _visibilityChanged(self, value): for obj in self.objects: item = obj.qtItem @@ -107,6 +107,13 @@ class KPPathNodeList(QtGui.QWidget): self.setupToolbar(self.toolbar) self.setLayout(self.layout) + + + def reset(self): + self.tree.clear() + + for layer in KP.map.associateLayers: + self.loadLayer(layer) def setupToolbar(self, tb): @@ -751,6 +758,7 @@ class KPMainWindow(QtGui.QMainWindow): def refreshMapState(self): self.layerList.updateModel() self.doodadSelector.updateModel() + self.pathNodeList.reset() self.scene = KPMapScene() self.editor.assignNewScene(self.scene) |