aboutsummaryrefslogtreecommitdiff
path: root/src/ecs/predicted.moon
diff options
context:
space:
mode:
authorAlex Pickering <alex@cogarr.net>2026-02-01 13:14:32 -0600
committerAlexander M Pickering <alex@cogarr.net>2026-02-01 13:14:32 -0600
commit3a975db66a3711f34e8b64bb27a8eaca79fdeca9 (patch)
treefcc12f8f9d638ff575c1963796de76b7628854b4 /src/ecs/predicted.moon
downloadggj26-master.tar.gz
ggj26-master.tar.bz2
ggj26-master.zip
Initial commitHEADmaster
Diffstat (limited to 'src/ecs/predicted.moon')
-rw-r--r--src/ecs/predicted.moon25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/ecs/predicted.moon b/src/ecs/predicted.moon
new file mode 100644
index 0000000..b8bdd28
--- /dev/null
+++ b/src/ecs/predicted.moon
@@ -0,0 +1,25 @@
+Component = require("ecs.component")
+
+class PredictedComponent extends Component
+ new: (name, properties, netc_name, calculate) =>
+ super(name, properties)
+ @netc_name = netc_name
+ assert(calculate and type(calculate) == "table", "Calculate must be a table, was " .. type(calculate))
+ @calculate = calculate
+ join: (entity) =>
+ @net = @entity\get(@netc_name)
+ @node = am.group!
+ @node\action(() ->
+ @forward!
+ )
+ @@node\append(@node)
+ super(entity)
+ leave: (entity) =>
+ @@node\remove(@node)
+ forward: () =>
+ for property, calculation in pairs(@calculate)
+ @properties[property] = calculation(@)
+
+
+
+PredictedComponent