Blinker.gd 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. extends LabelWithFont
  2. class_name Blinker
  3. var active = true
  4. const BLINK_PERIOD = 1
  5. var V_OFFSET = 40
  6. var waiting = false
  7. var action_to_wait_for
  8. var timer
  9. var n
  10. signal action_pressed
  11. func _init(_text,action = null):
  12. visible = false
  13. font_path = "res://fonts/Now FL/Now-SemiBold.otf"
  14. font_size = 25
  15. text = _text
  16. if action:
  17. action_to_wait_for = action
  18. waiting = true
  19. func _process(delta):
  20. if waiting:
  21. if Input.is_action_just_pressed(action_to_wait_for):
  22. emit_signal("action_pressed")
  23. self_destruct()
  24. func _ready():
  25. timer = Timer.new()
  26. timer.wait_time = BLINK_PERIOD
  27. timer.connect("timeout",self,'on_timeout')
  28. add_child(timer)
  29. timer.start()
  30. n = Node2D.new()
  31. n.z_index = 6
  32. n.z_as_relative = false
  33. get_parent().add_child(n)
  34. get_parent().remove_child(self)
  35. n.add_child(self)
  36. rect_position = Vector2(get_viewport().size.x/2.0 - rect_size.x/2.0, V_OFFSET)
  37. func deactivate():
  38. active = false
  39. visible = false
  40. func activate():
  41. active = true
  42. func on_timeout():
  43. if active:
  44. visible = !visible
  45. func self_destruct():
  46. print("self-destruction of blinker with text ", text)
  47. n.queue_free()