diff options
| author | Elizabeth Hunt <elizabeth@simponic.xyz> | 2024-09-14 22:33:35 -0700 |
|---|---|---|
| committer | Elizabeth Hunt <elizabeth@simponic.xyz> | 2024-09-14 22:33:35 -0700 |
| commit | f7e7121fce7bd3f7fdabe836955e43b3d194c1c6 (patch) | |
| tree | 7092421f8a594f62164192d27df69220edda223c /kennel/engine/components | |
| parent | 8ec7f5368232d59f344e1067e1bad5e48dbcb7ae (diff) | |
| download | kennel.hatecomputers.club-f7e7121fce7bd3f7fdabe836955e43b3d194c1c6.tar.gz kennel.hatecomputers.club-f7e7121fce7bd3f7fdabe836955e43b3d194c1c6.zip | |
add a spritesheet component
Diffstat (limited to 'kennel/engine/components')
| -rw-r--r-- | kennel/engine/components/component.py | 1 | ||||
| -rw-r--r-- | kennel/engine/components/sprite_sheet.py | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/kennel/engine/components/component.py b/kennel/engine/components/component.py index 90506b9..7fd7757 100644 --- a/kennel/engine/components/component.py +++ b/kennel/engine/components/component.py @@ -6,6 +6,7 @@ class ComponentType(str, Enum): POSITION = "POSITION" CONTROLLABLE = "CONTROLLABLE" MARKOV = "MARKOV" + SPRITESHEET = "SPRITESHEET" class Component: 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, + } |
