diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/editorui.py | 86 | ||||
-rw-r--r-- | src/mapdata.py | 23 |
2 files changed, 105 insertions, 4 deletions
diff --git a/src/editorui.py b/src/editorui.py index 6b0815c..b7d691a 100644 --- a/src/editorui.py +++ b/src/editorui.py @@ -248,7 +248,6 @@ class KPEditorObject(KPEditorItem): del obj - class KPEditorDoodad(QtGui.QGraphicsPixmapItem): def __init__(self, doodad, layer): QtGui.QGraphicsPixmapItem.__init__(self) @@ -496,6 +495,90 @@ class KPEditorDoodad(QtGui.QGraphicsPixmapItem): del doodad +class KPEditorNode(QtGui.QGraphicsPixmapItem): + def __init__(self, node, layer): + QtGui.QGraphicsPixmapItem.__init__(self) + self.setFlags( + self.ItemSendsGeometryChanges | + self.ItemIsSelectable | + self.ItemIsMovable + ) + +class KPEditorPathSegment(QtGui.QGraphicsPathItem): + def __init__(self, node, layer): + QtGui.QGraphicsPathItem.__init__(self) + self.setFlags( + self.ItemSendsGeometryChanges | + self.ItemIsSelectable | + self.ItemIsMovable + ) + + self.path = QtGui.QPainterPath() + self.brush = None + self.pen = None + + self.rotation = 0 + + + def makeStraight(self, start, end): + + self.path.moveTo(start) + self.path.addPolygon(QtGui.QPolygon([QtCore.QPointF(start.x(), start.y()-5.0), + QtCore.QPointF(end.x(), end.y()-5.0), + QtCore.QPointF(end.x(), end.y()+5.0), + QtCore.QPointF(start.x(), start.y()+5.0), + QtCore.QPointF(start.x(), start.y()-5.0)] + + + graduate = QtGui.QRadialGradiant(QtCore.QPointF((end.x()/2)-(start.x()/2), (end.y()/2)-(start.y()/2) + 16), (end.x()/2)-(start.x()/2), + graduate.setColorA(QColor(200, 210, 240)) + graduate.setColorB(QColor(150, 160, 190)) + + self.brush = QtGui.QBrush(graduate) + + self.pen = QtGui.QPen(QColor(120, 130, 160)) + self.pen.setWidth(4) + self.pen.setCapStyle(Qt.RoundCap) + self.pen.setJoinStyle(Qt.RoundJoin) + + + + def makeArc(self, start, end): + + self.path.moveTo(start) + self.path.addEllipse(start.x(), start.y(), end.x()-start.x(), end.y()-start.y()) + + r = QtGui.QPainterPath() + r.addEllipse(start.x(), start.y()-4, end.x()-start.x(), end.y()-start.y()-16) + + self.path.subtracted(r) + + + graduate = QtGui.QRadialGradiant(QtCore.QPointF((end.x()/2)-(start.x()/2), (end.y()/2)-(start.y()/2) + 16), (end.x()/2)-(start.x()/2), + graduate.setColorA(QColor(200, 210, 240)) + graduate.setColorB(QColor(150, 160, 190)) + + self.brush = QtGui.QBrush(graduate) + + self.pen = QtGui.QPen(QColor(120, 130, 160)) + self.pen.setWidth(4) + self.pen.setCapStyle(Qt.RoundCap) + self.pen.setJoinStyle(Qt.RoundJoin) + + + sX = start.x() + sY = start.y() + + eX = end.x() + eY = end.y() + + dy = eY - sY + dx = eX - sX + rads = math.atan2(dy, dx) + + self.rotate = math.degrees(rads) + + class KPMapScene(QtGui.QGraphicsScene): @@ -616,7 +699,6 @@ class KPMapScene(QtGui.QGraphicsScene): item.setFlag(flag, value) - class KPEditorWidget(QtGui.QGraphicsView): def __init__(self, scene, parent=None): QtGui.QGraphicsView.__init__(self, scene, parent) diff --git a/src/mapdata.py b/src/mapdata.py index 64a8f44..3c60e53 100644 --- a/src/mapdata.py +++ b/src/mapdata.py @@ -160,6 +160,25 @@ class KPPath(object): self.segments = [] +class KPPathLayer(KPLayer): + def __repr__(self): + return "<KPPathLayer %r>" % self.name + + def __init__(self): + KPLayer.__init__(self) + self.nodes = [] + self.paths = [] + + def _visibilityChanged(self, value): + for obj in self.objects: + item = obj.qtItem + if item: + item.setVisible(value) + + + + + class KPMap(object): def __init__(self): self.nextLayerNumber = 1 @@ -236,14 +255,14 @@ class KPMap(object): def createNewTileLayer(self, tilesetName): layer = KPTileLayer() - layer.name = "Layer %d" % self.nextLayerNumber + layer.name = "Tilemap - Layer %d" % self.nextLayerNumber self.nextLayerNumber += 1 layer.tileset = tilesetName return layer def createNewDoodadLayer(self): layer = KPDoodadLayer() - layer.name = "Layer %d" % self.nextLayerNumber + layer.name = "Doodads - Layer %d" % self.nextLayerNumber self.nextLayerNumber += 1 return layer |