summaryrefslogtreecommitdiff
path: root/src/bobber.moon
blob: 6f52c6b4ac201914f48bbb1b2ab8a70c2cecb5da (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
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}