aboutsummaryrefslogtreecommitdiff
path: root/src/battle_menu.moon
blob: 84b8aa9df09ceb26c61d7c30a882668b678235fe (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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
world = require "world"
main = require "main"
color = require "color"
ui = require "ui"
bp = require "broadphase"
pass = require "a_pass"
import Pass from pass
action = require "action"

mod = ...

pip_width = 24

mod.time_pips = am.group!
pip_x_start = ((main.pips/2)+1) * -pip_width
pip_sprites = {}
ms_per_pip = 1000

mod.ability_selector = am.group!
mod.playerturn_up = 0

mod.set_playerturn_up = (time) =>
	mod.playerturn_up = time

mod.victory_g = am.group!
mod.victory_text = {}

mod.action_phase = am.group! --group used to animate characters during battle, also holds dammage values
mod.victory_show = false
mod.loaded_ability = nil

mod.load = () ->
	pip_trans = am.translate(pip_x_start,240 - (pip_width/2))
	for i = 1,main.pips
		pip_loc = am.translate(pip_width*i,0)
		pip_trans\append(pip_loc^ am.sprite("data/pip_frame.png",color.white))
		light_sprite = am.sprite("data/pip_dark.png",color.white)
		pip_loc\append(light_sprite)
		table.insert(pip_sprites,light_sprite)
	mod.time_pips\append(pip_trans)
	ability_buttons = {}
	ability_trans = am.group!
	main.root("screen")\append(mod.victory_g)
	for k,v in pairs({"V","I","C","T","O","R","Y"})
		n = am.scale(2)^am.translate((k-3.5)*20,0)^am.text(v,color.fg)
		n\action(coroutine.create(() ->
			while true
				for k,v in pairs(mod.victory_text)
					v.hidden = not mod.victory
				coroutine.yield!
		))
		n\action(am.series({
			am.delay(k*0.25),
			am.loop(() -> am.series({
				am.tween(n("translate"),1,{y:30},am.ease.sine),
				am.tween(n("translate"),1,{y:0},am.ease.sine)
			}))
		}))
		table.insert(mod.victory_text,n)
		mod.victory_g\append(n)
	mod.ability_selector\append(ability_trans)
	for i = 1,4
		trans_x = (-150 * (i-2))+32
		trans_y = 200
		--ui.create_button needs to be relative to global for hitboxes to work right
		ability_slot_button = ui.create_any_button(ability_trans,3,3,trans_x,trans_y)
		lpd = main.world.localplayer.data
		print("lpd was:",lpd)
		ability = lpd.abilities[i] or Pass
		print("Ability was",ability.__name)
		print("Sprite was",ability and ability.sprite)
		ability_slot_icon = am.sprite(ability and ability.sprite or "data/no_action.png", color.white, "left","top")\tag("icon")
		ability_slot_button.name = ability.__name
		ability_slot_button.ability = ability
		ability_slot_button.node\append(am.translate(trans_x + 16,trans_y - 16)^ ability_slot_icon)
		table.insert(ability_buttons, ability_slot_button)
	print("test")
	main.root("screen")\append(mod.time_pips)
	main.root("screen")\append(mod.ability_selector)
	main.root("screen")\append(mod.action_phase)
	mod.time_pips\action(coroutine.create(() ->
		print("Pips in action:",pip_sprites)
		while true
			if not mod.victory
				currtime = am.eval_js("new Date().getTime()")
				elapsed_time = currtime - main.world.time_ref
				npips = math.min(math.floor(elapsed_time/ms_per_pip),main.pips)
				for i = 1,npips
					pip_sprites[i].source = "data/pip_light.png"
				for i = npips+2,main.pips
					if i > 0 and i <= main.pips
						pip_sprites[i].source = "data/pip_dark.png"
			coroutine.yield!
	))
	touch_indicator = am.group!
	touch_cursor = am.sprite("data/cursor.png",vec4(1,1,1,1),"left","top")
	touch_loc = am.translate(0,0)^ touch_cursor
	touch_indicator\append(touch_loc)
	mod.ability_selector\append(touch_indicator)
	mod.ability_selector\action(coroutine.create(() ->
		while true
			if #main.win\active_touches! > 0
				touch = main.win\touch_position(1)
				touch_cursor.color = vec4(1,1,1,1)
				touch_loc.x = touch.x
				touch_loc.y = touch.y
				col_but = bp.check(touch.x, touch.y + 96)
				if #col_but > 0
					touch_cursor.color = vec4(0.5,0.5,0.5,0.5)
				if main.win\touch_began(1)
					print("Checking ability buttons:",ability_buttons, "against col but:",col_but)
					for _,button in ipairs(ability_buttons)
						if button == col_but[1]
							print("Found button")
							action.set_action(button.name)
							if mod.loaded_ability
								mod.loaded_ability\unload!
							button.ability\load!
							mod.loaded_ability = ability
			coroutine.yield!	
	))


mod.unload = () ->
	main.root("screen")\remove(mod.time_pips)
	main.root("screen")\remove(mod.ability_selector)
	main.root("screen")\remove(mod.action_phase)

mod