Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement