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