diff options
Diffstat (limited to 'src/islandgen.moon')
| -rw-r--r-- | src/islandgen.moon | 153 |
1 files changed, 109 insertions, 44 deletions
diff --git a/src/islandgen.moon b/src/islandgen.moon index 95e8b07..1fdd3eb 100644 --- a/src/islandgen.moon +++ b/src/islandgen.moon @@ -3,6 +3,10 @@ shim = require("shader_shim") world = require("world") color = require("color") win = require("window") +settings = require("settings") +sprites = require("world.sprites") +ecs = require("ecs") +fish = require("spawn_fish") gen = {} -- Generate roughly rectangular islands @@ -69,50 +73,111 @@ gen.generate = (seed) -> if i < 25 gview[gi+1] = 1 -gen.protogen = (seed) -> - geom = am.buffer(6 * 3 * 4) - gview = geom\view("vec3") - z = 0 - gview[1] = vec3(-10,-10,z) - gview[2] = vec3(-10,10,z) - gview[3] = vec3(10,10,z) - gview[4] = vec3(10,10,z) - gview[5] = vec3(10,-10,z) - gview[6] = vec3(-10,-10,z) - aspect = win.width / win.height - s_mv = mat4( - 1, 0, 0, 0, - 0, aspect, 0, 0, - 0, 0, 1, 0, - -0.5, 0.5, 0, 4 - ) - node = shim.land\append(am.depth_test("less")\append(am.bind({ - MV: s_mv - P: mat4(1) - land: gview - lamp1: vec4(0,0,0,0.1) - lamp2: vec4(0,0,0,0) - lamp3: vec4(0,0,0,0) - time: am.current_time! - background: color.am_color.background - shadow: color.am_color.shadow - midground: color.am_color.midground - foreground: color.am_color.foreground - highlight: color.am_color.highlight - outline: color.am_color.outline - black: color.am_color.black - world_x: 5 - world_y: 5 - })\append(am.draw("triangles")))) - node\action(() => - bind = self("bind") - bind.time = am.current_time! - bind.world_x = world.world_x - bind.world_y = world.world_y - print(world.world_x, world.world_y) - bind.lamp1 = vec4(math.sin(am.current_time!), 0, 0, math.cos(am.current_time! * 3) + math.pi) - ) +aspect = win.width / win.height +aspect_inv = win.height / win.width +class IslandGraphicsComponent extends world.GraphicsComponent + action: (bind) => + bind.time = am.current_time! % 1000 -- loop back around so noise doesn't look wonky after a while + --bind.lamp1 = vec4(world.world_x + 3.35, world.world_y + 1.9, 0, 2.2) --no idea why these magic numbers + --bind.lamp1 = vec4(world.world_x + (0.5 * 4 * aspect) - 0.3, world.world_y + (0.5 * 4 * (aspect_inv)) + 0.7, 0, 2.2) --no idea why these magic numbers + --bind.lamp2 = vec4(0,0,0,3) + buf_size: () => + 6 + populate_buf: (geom_view, normal_view, offset) => + z = 0 + size = 10 + --@lamp = world.level.add_lamp(vec4(0,0,0,3)) + geom_view[1] = vec3(-size,-size,z) + geom_view[2] = vec3(-size,size,z) + geom_view[3] = vec3(size,size,z) + geom_view[4] = vec3(size,size,z) + geom_view[5] = vec3(size,-size,z) + geom_view[6] = vec3(-size,-size,z) + normal_view[1] = vec2(sprites.rocks_normal.s1, sprites.rocks_normal.t1) + normal_view[2] = vec2(sprites.rocks_normal.s1, sprites.rocks_normal.t2) + normal_view[3] = vec2(sprites.rocks_normal.s2, sprites.rocks_normal.t2) + normal_view[4] = vec2(sprites.rocks_normal.s2, sprites.rocks_normal.t2) + normal_view[5] = vec2(sprites.rocks_normal.s2, sprites.rocks_normal.t1) + normal_view[6] = vec2(sprites.rocks_normal.s1, sprites.rocks_normal.t1) + +class WaterGraphicsComponent extends world.GraphicsComponent + action: (bind) => + bind.time = am.current_time! % 1000 + buf_size: () => + 24 + populate_buf: (geom_view, normal_view, offset) => + z = 1 + island_size = 10 - 1 + water_size = 20 + uv = sprites.sea_normal + --down + geom_view[1] = vec3(-water_size,-water_size,z) + geom_view[2] = vec3(-island_size,-island_size,z) + geom_view[3] = vec3(island_size,-island_size,z) + geom_view[4] = vec3(island_size,-island_size,z) + geom_view[5] = vec3(water_size,-water_size,z) + geom_view[6] = vec3(-water_size,-water_size,z) + --left + geom_view[7] = vec3(-water_size,-water_size,z) + geom_view[8] = vec3(-island_size,island_size,z) + geom_view[9] = vec3(-island_size,-island_size,z) + geom_view[10] = vec3(-water_size,-water_size,z) + geom_view[11] = vec3(-water_size,water_size,z) + geom_view[12] = vec3(-island_size,island_size,z) - node + --top + geom_view[13] = vec3(-water_size,water_size,z) + geom_view[14] = vec3(water_size,water_size,z) + geom_view[15] = vec3(-island_size,island_size,z) + geom_view[16] = vec3(-island_size,island_size,z) + geom_view[17] = vec3(water_size,water_size,z) + geom_view[18] = vec3(island_size,island_size,z) + + --right + geom_view[19] = vec3(island_size,island_size,z) + geom_view[20] = vec3(water_size,water_size,z) + geom_view[21] = vec3(island_size,-island_size,z) + geom_view[22] = vec3(water_size,water_size,z) + geom_view[23] = vec3(water_size,-water_size,z) + geom_view[24] = vec3(island_size,-island_size,z) + + normal_view[1] = vec2(uv.s1,uv.t1) + normal_view[2] = vec2(uv.s1,uv.t1) + normal_view[3] = vec2(uv.s2,uv.t1) + normal_view[4] = vec2(uv.s2,uv.t1) + normal_view[5] = vec2(uv.s2,uv.t1) + normal_view[6] = vec2(uv.s1,uv.t1) + normal_view[7] = vec2(uv.s1,uv.t1) + normal_view[8] = vec2(uv.s1,uv.t2) + normal_view[9] = vec2(uv.s1,uv.t1) + normal_view[10] = vec2(uv.s1,uv.t1) + normal_view[11] = vec2(uv.s1,uv.t2) + normal_view[12] = vec2(uv.s1,uv.t2) + normal_view[13] = vec2(uv.s1,uv.t2) + normal_view[14] = vec2(uv.s2,uv.t2) + normal_view[15] = vec2(uv.s1,uv.t2) + normal_view[16] = vec2(uv.s1,uv.t2) + normal_view[17] = vec2(uv.s2,uv.t2) + normal_view[18] = vec2(uv.s2,uv.t2) + normal_view[19] = vec2(uv.s2,uv.t2) + normal_view[20] = vec2(uv.s2,uv.t2) + normal_view[21] = vec2(uv.s2,uv.t1) + normal_view[22] = vec2(uv.s2,uv.t2) + normal_view[23] = vec2(uv.s2,uv.t1) + normal_view[24] = vec2(uv.s2,uv.t1) + setup: (node) => + bind = node("bind") + print("Found bind node:",node) + for k,v in pairs(color.am_lake_color) + bind[k] = v + bind.water = 2 + +gen.protogen = (seed) -> + ecs.Entity(nil, { + IslandGraphicsComponent("island") + }) + ecs.Entity(nil, { + WaterGraphicsComponent("water") + }) gen |
