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
|