diff options
| author | Alexander M Pickering <alex@cogarr.net> | 2025-01-25 20:40:09 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2025-01-25 20:40:09 -0600 |
| commit | b174b8c00026253fd40ec262e430b0bb764e31ea (patch) | |
| tree | 173d294b98fe14727aef9cd42542f41a940f5ffa /src/bobber.moon | |
| parent | 89a8f94ac0206412c1a2d7b8766d97dbdbd36253 (diff) | |
| download | ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.tar.gz ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.tar.bz2 ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.zip | |
work
Diffstat (limited to 'src/bobber.moon')
| -rw-r--r-- | src/bobber.moon | 78 |
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} |
