diff --git a/sprito.py b/sprito.py new file mode 100644 index 0000000..6d19578 --- /dev/null +++ b/sprito.py @@ -0,0 +1,34 @@ +from casioplot import set_pixel + +class SpriteIndexed: + def __init__(self, w: int, h: int, data): + self.w = w + self.h = h + self.data = data + def draw(self, x: int, y: int, pallet: dict) -> None: + i = 0 + for yoff in range(self.h): + for xoff in range(self.w): + data_cell = self.data[i] + if data_cell and data_cell != " ": + set_pixel(x + xoff, y + yoff, pallet[data_cell]) + i += 1 + def to_raw(self, pallet: dict): + raw_data = [] + for i in range(len(self.data)): + data_cell = self.data[i] + if data_cell and data_cell != " ": + raw_data.append(pallet[data_cell]) + else: + raw_data.append(None) + return SpriteRaw(self.w, self.h, raw_data) + +class SpriteRaw(SpriteIndexed): + def draw(self, x: int, y: int) -> None: + i = 0 + for yoff in range(self.h): + for xoff in range(self.w): + data_cell = self.data[i] + if data_cell: + set_pixel(x + xoff, y + yoff, data_cell) + i += 1