summaryrefslogtreecommitdiff
path: root/src/controllers/fish.moon
diff options
context:
space:
mode:
Diffstat (limited to 'src/controllers/fish.moon')
-rw-r--r--src/controllers/fish.moon33
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)