aboutsummaryrefslogtreecommitdiff
path: root/kennel/engine/components/sprite_sheet.py
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth@simponic.xyz>2024-09-14 22:33:35 -0700
committerElizabeth Hunt <elizabeth@simponic.xyz>2024-09-14 22:33:35 -0700
commitf7e7121fce7bd3f7fdabe836955e43b3d194c1c6 (patch)
tree7092421f8a594f62164192d27df69220edda223c /kennel/engine/components/sprite_sheet.py
parent8ec7f5368232d59f344e1067e1bad5e48dbcb7ae (diff)
downloadkennel.hatecomputers.club-f7e7121fce7bd3f7fdabe836955e43b3d194c1c6.tar.gz
kennel.hatecomputers.club-f7e7121fce7bd3f7fdabe836955e43b3d194c1c6.zip
add a spritesheet component
Diffstat (limited to 'kennel/engine/components/sprite_sheet.py')
-rw-r--r--kennel/engine/components/sprite_sheet.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/kennel/engine/components/sprite_sheet.py b/kennel/engine/components/sprite_sheet.py
new file mode 100644
index 0000000..5730085
--- /dev/null
+++ b/kennel/engine/components/sprite_sheet.py
@@ -0,0 +1,48 @@
+from .component import Component, ComponentType
+
+
+class SpriteSpec:
+ def __init__(
+ self,
+ ms_per_frame: int,
+ top_x: int,
+ top_y: int,
+ end_x: int,
+ end_y: int,
+ frames: int,
+ ):
+ self.ms_per_frame = ms_per_frame
+ self.frames = frames
+ self.top_x = top_x
+ self.top_y = top_y
+ self.end_x = end_x
+ self.end_y = end_y
+
+
+class SpriteSheet(Component):
+ def __init__(
+ self,
+ source: str,
+ state_to_spritespec: dict[str, SpriteSpec],
+ initial_state: str,
+ ):
+ super().__init__(ComponentType.SPRITESHEET)
+ self.source = source
+ self.state_to_spritespec = state_to_spritespec
+
+ # these are only really used for client initialization
+ self.initial_state = initial_state
+ self.current_frame = 0
+ self.last_update = 0
+
+ def __repr__(self) -> str:
+ return f"SpriteSheet(source={self.source}, state_to_spritespec={self.state_to_spritespec}, initial_state={self.initial_state}, current_frame={self.current_frame}, last_update={self.last_update})"
+
+ def to_dict(self) -> dict:
+ return {
+ "source": self.source,
+ "current_frame": self.current_frame,
+ "last_update": self.last_update,
+ "current_state": self.initial_state,
+ "state_to_spritespec": self.state_to_spritespec,
+ }