summaryrefslogtreecommitdiff
path: root/src/tileset.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/tileset.py')
-rw-r--r--src/tileset.py136
1 files changed, 58 insertions, 78 deletions
diff --git a/src/tileset.py b/src/tileset.py
index c060f07..8d4bbb6 100644
--- a/src/tileset.py
+++ b/src/tileset.py
@@ -175,17 +175,17 @@ class KPTileObject(object):
class KPGroupModel(QtCore.QAbstractListModel):
"""Model containing all the grouped objects in a tileset"""
-
+
def __init__(self, groupItem):
self.container = groupItem
self.view = None
QtCore.QAbstractListModel.__init__(self)
-
-
+
+
def rowCount(self, parent=None):
return self.container.objectCount()
-
+
def groupItem(self):
"""Returns the group item"""
@@ -224,16 +224,16 @@ class KPGroupModel(QtCore.QAbstractListModel):
if not index.isValid(): return None
n = index.row()
-
+
if n < 0: return None
if n >= self.container.objectCount(): return None
-
+
item, depth = self.container.getItem(n)
if role == Qt.DecorationRole:
if isinstance(item, KPTileObject):
return item.icon
-
+
elif role == Qt.DisplayRole:
if isinstance(item, KPGroupItem):
return item.name
@@ -251,7 +251,7 @@ class KPGroupModel(QtCore.QAbstractListModel):
colour = 255
brush = QtGui.QBrush(QtGui.QColor(colour, colour, colour), Qt.Dense4Pattern)
-
+
return brush
elif (role == Qt.FontRole):
@@ -260,7 +260,7 @@ class KPGroupModel(QtCore.QAbstractListModel):
font.setBold(True)
return font
-
+
return None
@@ -268,7 +268,7 @@ class KPGroupModel(QtCore.QAbstractListModel):
class KPGroupItem(object):
"""Hierarchal object for making a 2D hierarchy recursively using classes"""
-
+
def __init__(self, name):
self.objects = []
@@ -278,7 +278,7 @@ class KPGroupItem(object):
self.name = name
self.alignment = Qt.AlignCenter
-
+
def getGroupList(self, returnList=[], depth=0):
"""Gets a list of group names and indices for the sorter menu"""
@@ -304,7 +304,7 @@ class KPGroupItem(object):
objCount += group.objectCount()
return objCount
-
+
def getItem(self, index, depth=0):
''' Retrieves an item of a specific index. The index is already checked for validity '''
@@ -342,7 +342,7 @@ class KPTileset(object):
@classmethod
def loadFromArc(cls, handleOrPath):
arc = WiiArchiveU8(handleOrPath)
-
+
img = arc.resolvePath('/BG_tex').children[0].data
grp = arc.resolvePath('/BG_grp').children[0].data
@@ -357,7 +357,7 @@ class KPTileset(object):
return cls(img, obj, meta, grp)
-
+
def __init__(self, imageBuffer, objectBuffer, objectMetadata, groupBuffer):
'''A Koopatlas Tileset class. To initialize, pass it image data,
object data, and group data as read from a Koopatlas tileset file.
@@ -372,7 +372,7 @@ class KPTileset(object):
getTile(TileIndex)
# Returns a tile image as a QPixmap
-
+
getObject(ObjectIndex)
# Returns a KPTileObject
@@ -410,9 +410,9 @@ class KPTileset(object):
tiles, which get put into KPTileset.tiles.'''
dest = self.RGB4A3Decode(imageBuffer)
-
+
self.tileImage = QtGui.QPixmap.fromImage(dest)
-
+
# Makes us some nice Tiles!
Xoffset = 4
Yoffset = 4
@@ -435,13 +435,13 @@ class KPTileset(object):
for xtile in xrange(0, 1024, 4):
for ypixel in xrange(ytile, ytile + 4):
for xpixel in xrange(xtile, xtile + 4):
-
+
if(xpixel >= 1024 or ypixel >= 512):
continue
newpixel = struct.unpack_from('>H', tex, i)[0]
# newpixel = (int(tex[i]) << 8) | int(tex[i+1])
-
+
if(newpixel >= 0x8000): # Check if it's RGB555
red = ((newpixel >> 10) & 0x1F) * 255 / 0x1F
@@ -465,24 +465,24 @@ class KPTileset(object):
'''Takes the object files from a Koopatlas Tileset and converts it into
KPTileObject classes, which get put into KPTileset.objects.'''
- # Load Objects
-
+ # Load Objects
+
meta = []
for i in xrange(len(metadata)/5):
meta.append(struct.unpack_from('>H3B', metadata, i * 5))
-
+
tilelist = []
rowlist = []
for entry in meta:
offset = entry[0]
row = 0
-
+
tex = QtGui.QPixmap(entry[1] * 24, entry[2] * 24)
tex.fill(Qt.transparent)
painter = QtGui.QPainter(tex)
-
-
+
+
for tilesA in xrange(entry[2]):
for tilesB in xrange(entry[1]):
untile = struct.unpack_from('>h', objstrings, offset)[0]
@@ -497,7 +497,7 @@ class KPTileset(object):
rowlist = []
painter.end()
-
+
self.objects.append(KPTileObject(tilelist, entry[2], entry[1], entry[3], tex))
@@ -515,7 +515,7 @@ class KPTileset(object):
def makeTree(self, grovyle, treecko):
-
+
for razorLeaf in grovyle:
@@ -540,98 +540,78 @@ class KPTileset(object):
'''Takes a tile index and returns a tile image as a QPixmap, or -1 if failed.'''
if index > 511:
- return false
-
+ return False
+
if index < 0:
- return false
+ return False
return self.tiles[index]
def getObject(self, index):
- '''Takes an object index and returns a KPTileObject, or false if failed.'''
-
+ '''Takes an object index and returns a KPTileObject, or False if failed.'''
+
if index < 0:
- return false
+ return False
return self.tiles[index]
def getObjectIcon(self, index):
'''Takes an object index or a KPTileObject and returns a QPixmap for the
- object, or false if failed.'''
-
- if isinstance(index, KPTileObject):
+ object, or False if failed.'''
+
+ if hasattr(index, 'icon'):
return index.icon
- if isinstance(index, int):
- try:
- return self.objects[index].icon
- except:
- return false
+ try:
+ return self.objects[index].icon
+ except:
+ pass
- return false
+ return False
def getObjectRender(self, index, size):
'''Takes an object index or a KPTileObject and returns a render map for the
- object, or false if failed.'''
-
- if isinstance(index, KPTileObject):
+ object, or False if failed.'''
+
+ if hasattr(index, 'render'):
return index.render(size)
- if isinstance(index, int):
- try:
- return self.objects[index].render(size)
- except:
- return false
+ try:
+ return self.objects[index].render(size)
+ except:
+ pass
- return false
+ return False
def getModel(self):
'''Returns the Group Model'''
-
+
return self.groupModel
def overrideTile(self, index, pixmap):
- '''Takes a 24x24 QPixmap and a tile index, and returns true if it succeeds.'''
+ '''Takes a 24x24 QPixmap and a tile index, and returns True if it succeeds.'''
if index > 511:
- return false
-
+ return False
+
if index < 0:
- return false
+ return False
if not isinstance(pixmap, QtGui.QPixmap):
- return false
+ return False
- if (QtGui.QPixmap.height() != 24) or (QtGui.QPixmap.width() != 24):
- return false
+ if (pixmap.height() != 24) or (pixmap.width() != 24):
+ return False
self.tiles[index] = pixmap
- return true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ return True