Mercurial > hg > tilerswift
changeset 65:a53572bf5a26
Tile: use descriptors for tile property
The real reason I want to do this is so that later when editing tiles,
I can ensure that the raw tile bytes match the modified tile rows.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Sun, 08 Sep 2019 21:10:03 -0400 |
parents | 10476f40ec9d |
children | 21a2bde995be |
files | tilerswift |
diffstat | 1 files changed, 18 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tilerswift +++ b/tilerswift @@ -1,5 +1,6 @@ #!/usr/bin/python3 import sys + from PyQt5 import QtCore, QtGui, QtWidgets from colors import NES_PALETTE @@ -41,11 +42,10 @@ 1, ] - def __init__(self, tile): + def __init__(self, raw_tile): super().__init__() - self.raw_tile = tile - self.tile = self.parse_tile(self.raw_tile) + self.raw_tile = raw_tile self.img_data = bytes(sum(self.tile, [])) self.set_palette(self.default_palette) @@ -66,6 +66,21 @@ image.setColorTable(self.palette_to_qt()) self.pixmap = QtGui.QPixmap(image) + def get_tile(self): + if getattr(self, "_tile", None) is None: + self._tile = self.parse_tile(self.raw_tile) + return self._tile + + def set_tile(self, tile): + del self._tile + self.raw_tile = self.unparse_tile(tile) + + def del_tile(self): + del self._tile + del self.raw_tile + + tile = property(get_tile, set_tile, del_tile, "A tile parsed as an 8x8 array of ints") + @classmethod def parse_tile(cls, tile): """Given a raw tile's bytes, convert it to an 8x8 array of integers."""