Skip to content

Instantly share code, notes, and snippets.

@nicloay
Last active January 12, 2017 10:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nicloay/1086ce56435aa9aa2a3c65420f2486ea to your computer and use it in GitHub Desktop.
Save nicloay/1086ce56435aa9aa2a3c65420f2486ea to your computer and use it in GitHub Desktop.
local BoardData = require("level.modules.board_data")
local ANIMATION_TIME = 1
local ANIMATION_DISSAPEAR_TIME = 0.5
local SHADE_ALPHA = 0.8
local POINTER_DEALY = 1
local POINTER_MOVE_TIME = 1
local INITIAL_TIMEOUT_BEFORE_APPEAR = 1
function init(self)
gui.set_render_order(90)
self.info_stripe_node = gui.get_node("info_stripe")
self.left_part_node = gui.get_node("left_part")
self.right_part_node = gui.get_node("right_part")
self.shade_node = gui.get_node("shade")
self.pointer_node = gui.get_node("pointer")
self.pointer_sprite = gui.get_node("pointer_sprite")
self.pointer_start_position = gui.get_position(gui.get_node("pointer_from"))
self.pointer_end_position = gui.get_position(gui.get_node("pointer_to"))
set_node_status(self, false)
self.config = json.decode(gui.get_text(gui.get_node("config")))
self.show_pointer = false
self.pointer_counter = 0
self.data_appeared = false
end
function set_node_status(self, status)
gui.set_enabled(self.shade_node, status)
gui.set_enabled(self.pointer_node, status)
gui.set_enabled(self.left_part_node, status)
gui.set_enabled(self.right_part_node, status)
gui.set_enabled(self.info_stripe_node, status)
end
function update(self, dt)
if self.data_appeared == false and BoardData.turn_number == self.config.turn_number then
self.initial_timer = (self.initial_timer or 0) + dt
if self.initial_timer > INITIAL_TIMEOUT_BEFORE_APPEAR then
self.data_appeared = true
move_captions(self)
end
end
if self.show_pointer then
if BoardData.selected_cell then
self.pointer_counter = 0
else
self.pointer_counter = self.pointer_counter + dt
end
if self.pointer_counter > (POINTER_DEALY + POINTER_MOVE_TIME) then
move_pointer_and_hide(self)
self.pointer_counter = 0
end
end
if self.data_appeared and BoardData.target_cell and not self.destroy_in_progress then
print("im here", self.config.turn_number)
self_destroy(self)
end
end
function self_destroy(self)
self.destroy_in_progress = true
self.show_pointer = false
animate_disappear(self, self.stripe_data)
animate_disappear(self, self.left_data)
animate_disappear(self, self.right_data)
local disable = function()
msg.post(msg.url(), "disable")
end
gui.animate(self.shade_node, "color", self.start_shade_color, gui.EASING_LINEAR, ANIMATION_DISSAPEAR_TIME, 0, disable)
end
function get_node_data(self, node)
local result = {}
result.node = node
result.original_position = gui.get_position(node)
result.start_position = vmath.vector3(result.original_position)
result.size = gui.get_size(node)
return result
end
function animate_appear(self, data, on_done)
gui.set_position(data.node, data.start_position)
gui.animate(data.node, "position", data.original_position, gui.EASING_OUTBACK, ANIMATION_TIME, 0, on_done)
end
function animate_disappear(self, data, on_done)
gui.animate(data.node, "position", data.start_position, gui.EASING_INBACK, ANIMATION_DISSAPEAR_TIME, 0, on_done)
end
function move_captions(self)
set_node_status(self, true)
gui.set_enabled(self.pointer_node, false)
self.stripe_data = get_node_data(self, self.info_stripe_node)
self.stripe_data.start_position.y = -self.stripe_data.size.y / 2
animate_appear(self, self.stripe_data)
self.left_data = get_node_data(self, self.left_part_node)
self.left_data.start_position.x = -self.left_data.size.x / 2
animate_appear(self, self.left_data)
self.right_data = get_node_data(self, self.right_part_node)
self.right_data.start_position.x = gui.get_width() + self.right_data.size.x / 2
animate_appear(self, self.right_data)
show_shade(self)
end
function show_shade(self)
self.original_shade_color = gui.get_color(self.shade_node)
self.start_shade_color = vmath.vector4(self.original_shade_color)
self.start_shade_color.w = 0
gui.set_color(self.shade_node, self.start_shade_color)
gui.animate(self.shade_node, "color", self.original_shade_color, gui.EASING_LINEAR, ANIMATION_TIME / 2, ANIMATION_TIME / 2, function() self.show_pointer = true end )
end
function move_pointer_and_hide(self)
gui.set_enabled(self.pointer_node, true)
gui.set_position(self.pointer_node, self.pointer_start_position)
gui.set_color(self.pointer_sprite, vmath.vector4(1,1,1,0))
gui.animate(self.pointer_node, "position", self.pointer_end_position, gui.EASING_LINEAR, POINTER_MOVE_TIME, 0, show_pointer_with_delay)
gui.animate(self.pointer_sprite, "color", vmath.vector4(1), gui.EASING_INOUTCUBIC, POINTER_MOVE_TIME, 0, nil, gui.PLAYBACK_ONCE_PINGPONG )
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment