summaryrefslogtreecommitdiff
path: root/src/prefab
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/prefab
parent89a8f94ac0206412c1a2d7b8766d97dbdbd36253 (diff)
downloadggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.tar.gz
ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.tar.bz2
ggj25-b174b8c00026253fd40ec262e430b0bb764e31ea.zip
work
Diffstat (limited to 'src/prefab')
-rw-r--r--src/prefab/cabin.moon63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/prefab/cabin.moon b/src/prefab/cabin.moon
new file mode 100644
index 0000000..915ea92
--- /dev/null
+++ b/src/prefab/cabin.moon
@@ -0,0 +1,63 @@
+world = require("world")
+sprites = require("world.sprites")
+ecs = require("ecs")
+
+class CabinGraphicsComponent extends world.GraphicsComponent
+ --
+ -- #####
+ -- # #
+ -- ##/##
+ -- 3x3 floor, 1x3 * 3 walls, 1x1 * 2 door side walls, 1x1 door
+ buf_size: () =>
+ (6*9) + (6*9) + (6* 2) + (6 * 1)
+
+ populate_buf: (geom_view, normal_view, offset) =>
+ z1 = -0.01
+ z2 = -1
+ iuv = sprites.wall_inside_normal
+ ouv = sprites.wall_outside_normal
+ fuv = sprites.floor_normal
+ wall = (geom, uv, offset, start, finish, texture) ->
+ geom[offset + 0] = vec3(start.x, start.y, z1)
+ geom[offset + 1] = vec3(start.x, start.y, z2)
+ geom[offset + 2] = vec3(finish.x, finish.y, z2)
+ geom[offset + 3] = vec3(finish.x, finish.y, z2)
+ geom[offset + 4] = vec3(finish.x, finish.y, z1)
+ geom[offset + 5] = vec3(start.x, start.y, z1)
+ uv[offset+0] = vec2(texture.s1,texture.t1)
+ uv[offset+1] = vec2(texture.s1,texture.t2)
+ uv[offset+2] = vec2(texture.s2,texture.t2)
+ uv[offset+3] = vec2(texture.s2,texture.t2)
+ uv[offset+4] = vec2(texture.s2,texture.t1)
+ uv[offset+5] = vec2(texture.s1,texture.t1)
+
+ floor = (geom, uv, offset, start, finish) ->
+ geom[offset + 0] = vec3(start.x,start.y,z1)
+ geom[offset + 1] = vec3(start.x,finish.y,z1)
+ geom[offset + 2] = vec3(finish.x,finish.y,z1)
+ geom[offset + 3] = vec3(finish.x,finish.y,z1)
+ geom[offset + 4] = vec3(finish.x,start.y,z1)
+ geom[offset + 5] = vec3(start.x,start.y,z1)
+ normal_view[offset + 0] = vec2(fuv.s1, fuv.t1)
+ normal_view[offset + 1] = vec2(fuv.s1, fuv.t2)
+ normal_view[offset + 2] = vec2(fuv.s2, fuv.t2)
+ normal_view[offset + 3] = vec2(fuv.s2, fuv.t2)
+ normal_view[offset + 4] = vec2(fuv.s2, fuv.t1)
+ normal_view[offset + 5] = vec2(fuv.s1, fuv.t1)
+
+ --left wall
+ j = 1
+ wall(geom_view, normal_view, j, vec2(-2,-2),vec2(-2,0), sprites.wall_inside_normal)
+ j += 6
+ for floorx = 1,3
+ for floory = 1,3
+ floor(geom_view, normal_view, j, vec2(-2 + (2*floorx), -2 + (2*floory)), vec2(2*floorx, 2*floory))
+ j += 6
+
+
+
+cabin = ecs.Entity("cabin",{
+ graphic: CabinGraphicsComponent("graphic")
+})
+
+cabin