summaryrefslogtreecommitdiff
path: root/src/mapdata.py
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2011-11-21 05:35:41 +0100
committerTreeki <treeki@gmail.com>2011-11-21 05:35:41 +0100
commit5e0804a65cefec0283bb0809c1fb18bcad4746cf (patch)
tree1a28add68c67a92adc1ce31ce51d415b10360e7e /src/mapdata.py
parente6efa1b751316ed5c2fbb6ad8c5360d7cf7d576d (diff)
downloadkoopatlas-5e0804a65cefec0283bb0809c1fb18bcad4746cf.tar.gz
koopatlas-5e0804a65cefec0283bb0809c1fb18bcad4746cf.zip
wonderful, wonderful paths
Diffstat (limited to '')
-rw-r--r--src/mapdata.py76
1 files changed, 62 insertions, 14 deletions
diff --git a/src/mapdata.py b/src/mapdata.py
index 85549e2..e864df0 100644
--- a/src/mapdata.py
+++ b/src/mapdata.py
@@ -1,4 +1,5 @@
from common import *
+import weakref
TILE_SIZE = (24,24)
MAP_SIZE_IN_TILES = (512,512)
@@ -27,6 +28,19 @@ class KPLayer(object):
def _visibilityChanged(self, value):
pass
+ def setActivated(self, value, listToUse=None):
+ flag1 = QtGui.QGraphicsItem.ItemIsSelectable
+ flag2 = QtGui.QGraphicsItem.ItemIsMovable
+
+ if listToUse is None:
+ listToUse = self.objects
+
+ for obj in listToUse:
+ item = obj.qtItem
+ if item:
+ item.setFlag(flag1, value)
+ item.setFlag(flag2, value)
+
class KPObject(object):
def __init__(self):
@@ -150,20 +164,38 @@ class KPNode(object):
def __init__(self):
self.position = (0,0)
self.actions = []
+ self.exits = []
+ self.isStop = False
-class KPPathSegment(object):
- def __init__(self):
- self.start = None
- self.end = None
- self.animation = None # default
+class KPPath(object):
+ def __init__(self, startNode, endNode, cloneFrom=None):
+ self._startNodeRef = weakref.ref(startNode)
+ self._endNodeRef = weakref.ref(endNode)
+ startNode.exits.append(self)
+ endNode.exits.append(self)
-class KPPath(object):
- def __init__(self):
- self.startNode = None
- self.endNode = None
- self.segments = []
+ if cloneFrom is None:
+ self.animation = None
+ else:
+ self.animation = cloneFrom.animation
+
+ def setStart(self, newStart):
+ currentStart = self._startNodeRef()
+ if currentStart is not None:
+ currentStart.exits.remove(self)
+
+ newStart.exits.append(self)
+ self._startNodeRef = weakref.ref(newStart)
+
+ def setEnd(self, newEnd):
+ currentEnd = self._endNodeRef()
+ if currentEnd is not None:
+ currentEnd.exits.remove(self)
+
+ newEnd.exits.append(self)
+ self._endNodeRef = weakref.ref(newEnd)
class KPPathLayer(KPLayer):
@@ -176,10 +208,20 @@ class KPPathLayer(KPLayer):
self.paths = []
def _visibilityChanged(self, value):
- for obj in self.objects:
- item = obj.qtItem
+ for objList in (self.nodes, self.paths):
+ for obj in objList:
+ item = obj.qtItem
+ if item:
+ item.setVisible(value)
+
+ def setActivated(self, value):
+ KPLayer.setActivated(self, value, self.nodes)
+
+ flag = QtGui.QGraphicsItem.ItemIsSelectable
+ for path in self.paths:
+ item = path.qtItem
if item:
- item.setVisible(value)
+ item.setFlag(flag, value)
@@ -189,7 +231,8 @@ class KPMap(object):
def __init__(self):
self.nextLayerNumber = 1
- self.layers = [self.createNewTileLayer('Test') for x in range(4)]
+ self.pathLayer = self._createPathLayer()
+ self.layers = [self.pathLayer]
self.layerModel = KPMap.LayerModel(self.layers)
self.nodes = []
self.paths = []
@@ -259,6 +302,11 @@ class KPMap(object):
return False
+ def _createPathLayer(self):
+ layer = KPPathLayer()
+ layer.name = 'Paths'
+ return layer
+
def createNewTileLayer(self, tilesetName):
layer = KPTileLayer()
layer.name = "Tilemap - Layer %d" % self.nextLayerNumber