summaryrefslogtreecommitdiff
path: root/src/bobber.moon
diff options
context:
space:
mode:
authorAlexander M Pickering <alex@cogarr.net>2025-01-25 20:40:09 -0600
committerAlexander M Pickering <alex@cogarr.net>2025-01-25 20:40:09 -0600
commitb174b8c00026253fd40ec262e430b0bb764e31ea (patch)
tree173d294b98fe14727aef9cd42542f41a940f5ffa /src/bobber.moon
parent89a8f94ac0206412c1a2d7b8766d97dbdbd36253 (diff)
downloadggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.tar.gz
ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.tar.bz2
ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.zip
work
Diffstat (limited to 'src/bobber.moon')
-rw-r--r--src/bobber.moon78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/bobber.moon b/src/bobber.moon
new file mode 100644
index 0000000..6f52c6b
--- /dev/null
+++ b/src/bobber.moon
@@ -0,0 +1,78 @@
+world = require("world")
+sprites = require("world.sprites")
+ecs = require("ecs")
+
+class BobberGraphicsComponent extends world.GraphicsComponent
+ @loctbl = {
+ {-1,-1}
+ {-1,1}
+ {1,1}
+ {1,1}
+ {1,-1}
+ {-1,-1}
+ }
+ buf_size: () =>
+ 6
+ populate_buf: (geom_view, normal_view, offset) =>
+ @buf = geom_view
+ h = 0.1
+ uv = sprites.player_normal
+ utbl = {
+ [-1]: {uv.s1, uv.t1}
+ [1]: {uv.s2, uv.t2}
+ }
+ z = -0.1
+ print("Bobber created at", @properties.pos)
+ for i = 1,6
+ loctbl = @@loctbl[i]
+ geom_view[i] = vec3(@@loctbl[i][1] * h, @@loctbl[i][2] * h, z) + vec3(@properties.pos.x, @properties.pos.y, z)
+ normal_view[i] = vec2(utbl[@@loctbl[i][1]][1], utbl[@@loctbl[i][2]][2])
+
+class BobberPhysicsComponent extends world.PhysicsComponent
+ new: (name, properties, shape, args) =>
+ super(name, properties)
+ join: (entity) =>
+ super(entity)
+ @gc = entity\get("graphics")
+
+
+class Bobber extends ecs.Entity
+ new: (name, position) =>
+ c = {
+ bobber: BobberGraphicsComponent("bobber",{pos: position})
+ pc: world.PhysicsComponent("pc",{},"circle", {position.x, position.y, 0.1})
+ }
+ super(name, c)
+ check: () =>
+ --print("Bobber is looking for fish")
+ bp = @get("pc")
+ for other, _ in pairs(bp\collisions!)
+ --print("Found entity in collisions:", other)
+ if other.component and other.component.entity
+ --print("And it's component.entity is:", other.component.entity)
+ @which = other.component.entity
+ return true
+ return false
+
+
+class BubblesGraphicsComponent extends world.GraphicsComponent
+ buf_size: () =>
+ 6
+ populate_buf: (geom_view, normal_view, offset) =>
+ h = 1
+ geom_view[1] = vec3(-h,-h,1)
+ geom_view[2] = vec3(-h,h,1)
+ geom_view[3] = vec3(-h,-h,1)
+ geom_view[4] = vec3(h,h,1)
+ geom_view[5] = vec3(h,-h,1)
+ geom_view[6] = vec3(-h,-h,1)
+ uv = sprites.player_normal
+ normal_view[1] = vec2(uv.s1,uv.t1)
+ normal_view[2] = vec2(uv.s1,uv.t2)
+ normal_view[3] = vec2(uv.s2,uv.t2)
+ normal_view[4] = vec2(uv.s2,uv.t2)
+ normal_view[5] = vec2(uv.s2,uv.t1)
+ normal_view[6] = vec2(uv.s1,uv.t1)
+ bind = @.node("bind")
+
+{:BobberGraphicsComponent, :BobberPhysicsComponent, :Bobber}