Files
Fighting_Rthythm_game/scenes/combat/combo_window.gd
2026-07-02 05:11:24 -07:00

56 lines
1.0 KiB
GDScript

class_name ComboWindow
extends RefCounted
signal window_cleared(reason: String)
const SIZE := 4
var slots: Array[String] = []
var pending_clear_reason := ""
func record(input: String) -> void:
if input.is_empty():
return
slots.append(input)
if slots.size() >= SIZE:
pending_clear_reason = "full"
func get_slots() -> Array[String]:
return slots.duplicate()
func has_pending_clear() -> bool:
return not pending_clear_reason.is_empty()
func consume_pending_clear_reason() -> String:
var reason := pending_clear_reason
pending_clear_reason = ""
return reason
func get_pattern() -> String:
var pattern := ""
for slot: String in slots:
if slot != "Ø":
pattern += slot
return pattern
func get_contiguous_pattern() -> String:
var pattern := ""
for index: int in range(slots.size() - 1, -1, -1):
var slot := slots[index]
if slot == "Ø":
break
pattern = slot + pattern
return pattern
func clear(reason := "") -> void:
slots.clear()
pending_clear_reason = ""
window_cleared.emit(reason)