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