forked from team-sg/hero-mark-2
56 lines
1.6 KiB
GDScript
56 lines
1.6 KiB
GDScript
tool
|
|
extends "res://objects/enemy/enemy.gd"
|
|
|
|
signal letter_chosen(letter)
|
|
signal backspace()
|
|
|
|
enum Glyph {
|
|
A, B, C, D, E, F, G, H,
|
|
I, J, K, L, M, N, O, P,
|
|
Q, R, S, T, U, V, W, X,
|
|
Y, Z, _0, _1, _2, _3, _4, _5,
|
|
_6, _7, _8, _9, Backspace
|
|
}
|
|
const GLYPH_STRINGS = [
|
|
"A", "B", "C", "D", "E", "F", "G", "H",
|
|
"I", "J", "K", "L", "M", "N", "O", "P",
|
|
"Q", "R", "S", "T", "U", "V", "W", "X",
|
|
"Y", "Z", "0", "1", "2", "3", "4", "5",
|
|
"6", "7", "8", "9", ""
|
|
]
|
|
|
|
export (Glyph) var glyph: int = 0 setget _set_glyph
|
|
|
|
onready var sprite: Sprite = $Sprite
|
|
onready var _seed: float = randf() * 250.0
|
|
|
|
func _set_glyph(value: int) -> void:
|
|
glyph = value
|
|
get_node("Sprite").frame = value
|
|
|
|
func _ready() -> void:
|
|
if Engine.editor_hint:
|
|
return
|
|
# connect to node in "gets_letters" group so don't have to do the shit manually
|
|
for node in get_tree().get_nodes_in_group("gets_letters"):
|
|
if node.has_method("_on_letter_chosen"):
|
|
connect("letter_chosen", node, "_on_letter_chosen")
|
|
if node.has_method("_on_backspace"):
|
|
connect("backspace", node, "_on_backspace")
|
|
|
|
func _process(delta: float) -> void:
|
|
if Engine.editor_hint:
|
|
return
|
|
sprite.position.x = 4.0 + sin(float(Time.get_ticks_msec()) / 250.0 + _seed)
|
|
sprite.position.y = 5.0 + sin(float(Time.get_ticks_msec()) / 125.0 + _seed)
|
|
|
|
func die() -> void:
|
|
emit_signal("letter_chosen", GLYPH_STRINGS[glyph])
|
|
if glyph == Glyph.Backspace:
|
|
emit_signal("backspace")
|
|
|
|
func _on_Hitbox_area_entered(area):
|
|
emit_signal("letter_chosen", GLYPH_STRINGS[glyph])
|
|
if glyph == Glyph.Backspace:
|
|
emit_signal("backspace")
|
|
._on_Hitbox_area_entered(area)
|