Files

44 lines
1.3 KiB
GDScript

class_name P91BattleClock
extends RefCounted
var elapsed := 0.0
var result_elapsed := 0.0
var second_elapsed := 0.0
var second_result_time := 0.0
var third_elapsed := 0.0
var third_result_time := 0.0
var fourth_elapsed := 0.0
var fourth_result_time := 0.0
var fifth_elapsed := 0.0
var fifth_result_time := 0.0
func reset() -> void:
elapsed = 0.0
result_elapsed = 0.0
second_elapsed = 0.0
second_result_time = 0.0
third_elapsed = 0.0
third_result_time = 0.0
fourth_elapsed = 0.0
fourth_result_time = 0.0
fifth_elapsed = 0.0
fifth_result_time = 0.0
func advance(delta: float, encounter: Dictionary, impact_at: float, duration: float, paused: bool) -> Dictionary:
if paused or not encounter.get("playing", false):
return {"impact_requests": [], "phase_complete": false, "phase_progress": 0.0}
var previous := elapsed
elapsed += delta
var requests: Array[Dictionary] = []
if impact_at >= 0.0 and previous < impact_at and elapsed >= impact_at:
requests.append({
"encounter_id": encounter.get("id", &""),
"phase": encounter.get("phase", 0),
"impact_id": StringName("%s:phase_%d" % [encounter.get("id", &""), encounter.get("phase", 0)]),
})
return {
"impact_requests": requests,
"phase_complete": duration > 0.0 and elapsed >= duration,
"phase_progress": clampf(elapsed / duration, 0.0, 1.0) if duration > 0.0 else 0.0,
}