summaryrefslogtreecommitdiff
path: root/src/prefab/cabin.moon
blob: b56ba1ca3f5a9692398b9bd7acc4eb4df1ce26d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
		tutorial_keys = false
		tutorial_mouse = false
		tutorial_visual = false
		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) ->
			tuv = fuv
			if not tutorial_keys
				tuv = sprites.help_1
				tutorial_keys = true
			elseif not tutorial_mouse
				tuv = sprites.help_2
				tutorial_mouse = true
			elseif not tutorial_visual
				tuv = sprites.help_3
				tutorial_visual = true
			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(tuv.s1, tuv.t1)
			normal_view[offset + 1] = vec2(tuv.s1, tuv.t2)
			normal_view[offset + 2] = vec2(tuv.s2, tuv.t2)
			normal_view[offset + 3] = vec2(tuv.s2, tuv.t2)
			normal_view[offset + 4] = vec2(tuv.s2, tuv.t1)
			normal_view[offset + 5] = vec2(tuv.s1, tuv.t1)

		--left wall
		j = 1
		--wall(geom_view, normal_view, j, vec2(-2,-2),vec2(-2,0), sprites.wall_inside_normal)
		--lamp = world.level.add_lamp(vec4(0,0,1,2))
		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