aboutsummaryrefslogtreecommitdiff
path: root/kennel/engine/components
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth@simponic.xyz>2024-08-20 17:34:18 -0700
committerElizabeth Hunt <elizabeth@simponic.xyz>2024-08-20 17:34:18 -0700
commitb4140460014d1fc134df9127600f6da2346376e3 (patch)
tree5bee11079f3ab9e3fd5d2a68cee483c2c33557f4 /kennel/engine/components
parent6f223d2462df5e08856fb83fd76773a8af33acf9 (diff)
downloadkennel.hatecomputers.club-b4140460014d1fc134df9127600f6da2346376e3.tar.gz
kennel.hatecomputers.club-b4140460014d1fc134df9127600f6da2346376e3.zip
init commit with base ECS and Network System
Diffstat (limited to 'kennel/engine/components')
-rw-r--r--kennel/engine/components/__init__.py0
-rw-r--r--kennel/engine/components/component.py16
-rw-r--r--kennel/engine/components/controllable.py13
-rw-r--r--kennel/engine/components/position.py14
4 files changed, 43 insertions, 0 deletions
diff --git a/kennel/engine/components/__init__.py b/kennel/engine/components/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/kennel/engine/components/__init__.py
diff --git a/kennel/engine/components/component.py b/kennel/engine/components/component.py
new file mode 100644
index 0000000..c8ef2d0
--- /dev/null
+++ b/kennel/engine/components/component.py
@@ -0,0 +1,16 @@
+from enum import Enum
+from abc import abstractmethod
+
+
+class ComponentType(str, Enum):
+ POSITION = "POSITION"
+ CONTROLLABLE = "CONTROLLABLE"
+
+
+class Component:
+ def __init__(self, component_type: ComponentType):
+ self.component_type = component_type
+
+ @abstractmethod
+ def dict(self) -> dict:
+ pass
diff --git a/kennel/engine/components/controllable.py b/kennel/engine/components/controllable.py
new file mode 100644
index 0000000..49b0557
--- /dev/null
+++ b/kennel/engine/components/controllable.py
@@ -0,0 +1,13 @@
+from .component import Component, ComponentType
+
+
+class Controllable(Component):
+ def __init__(self, by: str):
+ super().__init__(ComponentType.CONTROLLABLE)
+ self.by = by
+
+ def __repr__(self) -> str:
+ return f"Controllable(by={self.by})"
+
+ def dict(self) -> dict:
+ return {"by": self.by}
diff --git a/kennel/engine/components/position.py b/kennel/engine/components/position.py
new file mode 100644
index 0000000..2a4da4a
--- /dev/null
+++ b/kennel/engine/components/position.py
@@ -0,0 +1,14 @@
+from .component import Component, ComponentType
+
+
+class Position(Component):
+ def __init__(self, x: float, y: float):
+ super().__init__(ComponentType.POSITION)
+ self.x = x
+ self.y = y
+
+ def __repr__(self) -> str:
+ return f"Position(x={self.x}, y={self.y})"
+
+ def dict(self) -> dict:
+ return {"x": self.x, "y": self.y}