summaryrefslogtreecommitdiff
path: root/src/editorui.py
blob: 7f2a7f769cfcc76e8eb6707a89f31466c5f146bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from common import *

class KPMapScene(QtGui.QGraphicsScene):
	def drawBackground(self, painter, rect):
		painter.fillRect(rect, Qt.white)

		areaLeft, areaTop = rect.x(), rect.y()
		areaWidth, areaHeight = rect.width(), rect.height()
		areaRight, areaBottom = areaLeft+areaWidth, areaTop+areaHeight

		areaLeftT = areaLeft / 24
		areaTopT = areaTop / 24
		areaRightT = areaRight / 24
		areaBottomT = areaBottom / 24

		for layer in KP.map.layers:
			left, top = layer.cacheBasePos
			width, height = layer.cacheSize
			right, bottom = left+width, top+height

			if width == 0 and height == 0: continue

			if right < areaLeftT: continue
			if left > areaRightT: continue

			if bottom < areaTopT: continue
			if top > areaBottomT: continue

			# decide how much of the layer we'll actually draw
			drawLeft = max(areaLeftT, left)
			drawRight = min(areaRightT, right)

			drawTop = max(areaTopT, top)
			drawBottom = max(areaBottomT, bottom)

			srcY = drawTop - top
			destY = drawTop * 24

			baseSrcX = drawLeft - left
			baseDestX = drawLeft * 24

			rows = layer.cache
			tileset = KP.map.tilesets[layer.tileset]
			tileList = tileset.tiles

			for y in xrange(drawTop, drawBottom):
				srcX = baseSrcX
				destX = baseDestX
				row = rows[srcY]

				for x in xrange(drawLeft, drawRight):
					tile = row[srcX]
					if tile != -1:
						painter.drawPixmap(destX, destY, tileList[tile])
					
					srcX += 1
					destX += 24

				srcY += 1
				destY += 24

class KPEditorWidget(QtGui.QGraphicsView):
	pass