diff options
| author | Alexander M Pickering <alex@cogarr.net> | 2025-01-26 14:31:52 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2025-01-26 14:31:52 -0600 |
| commit | c39ff632b46c179709101c5b50a061ebd723689f (patch) | |
| tree | 23060311477b996cd11c50851e7dfb889d339346 /src/controllers/fish.moon | |
| parent | c1030d5ddbf34b1b19fa7fd169f3cf5a7b7f98f3 (diff) | |
| download | ggj25-c39ff632b46c179709101c5b50a061ebd723689f.tar.gz ggj25-c39ff632b46c179709101c5b50a061ebd723689f.tar.bz2 ggj25-c39ff632b46c179709101c5b50a061ebd723689f.zip | |
final commit
Diffstat (limited to 'src/controllers/fish.moon')
| -rw-r--r-- | src/controllers/fish.moon | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/controllers/fish.moon b/src/controllers/fish.moon index 1516574..3c829f3 100644 --- a/src/controllers/fish.moon +++ b/src/controllers/fish.moon @@ -2,12 +2,16 @@ ecs = require("ecs") world = require("world") controller = {} + + + class FishControllerComponent extends ecs.Component new: () => print("Fish controller started") @node = am.group! join: (entity) => super(entity) + @ent = entity graphic = entity\get("graphic") assert(graphic, "Fish controller must have a graphic") pred_component = entity\get("pred") @@ -27,7 +31,7 @@ class FishControllerComponent extends ecs.Component while comp.state == "swimming" comp.state = "waiting" start_wait = world.sync_time! - while world.sync_time! - start_wait < 4 + while world.sync_time! - start_wait < 8 --TODO: look for nearby hooks and get caught coroutine.yield! if comp.state == "waiting" @@ -41,12 +45,33 @@ class FishControllerComponent extends ecs.Component pick_next_location: () => -- Pick somewhere to swim based on where we are? -- This can only be done on the host. + --TODO: spawn fish on all sides. + -- everything has to be floats so math.random returns a float. if @net.properties.pos.x > 10 -- pick somewhere to the right @net.properties.next_loc = vec2( - math.random(10.3,12), - math.random(-10,10) + math.random(11.1,15), + math.random(-10.1,10) + ) + elseif @net.properties.pos.x < -10 + @net.properties.next_loc = vec2( + math.random(-15.1,-11) + math.random(-10.1,10) ) - @net.properties.next_loc_time = world.sync_time! + elseif @net.properties.pos.y > 10 + @net.properties.next_loc = vec2( + math.random(-10.1,10) + math.random(11.1,15) + ) + elseif @net.properties.pos.y < -10 + @net.properties.next_loc = vec2( + math.random(-10.1,10) + math.random(-15.1,-11) + ) + else + --If none of these apply, we're stuck on land somehow, delete ourselves + @entity\destroy! + + @net.properties.next_loc_time = world.sync_time! --@net.properties.next_loc = @net.properties.pos + vec2(0,1) --@net.properties.next_loc_time = world.sync_time! print("Picking next location, it was ", @net.properties.next_loc) |
