33 lines
977 B
GDScript
33 lines
977 B
GDScript
class_name InputIntent
|
|
extends RefCounted
|
|
|
|
var symbol: StringName
|
|
var rhythm_action: StringName
|
|
var event_type: StringName
|
|
var timestamp_ms := 0.0
|
|
var judgement: Dictionary = {}
|
|
|
|
|
|
static func create(next_symbol: StringName, next_rhythm_action: StringName, next_event_type: StringName, next_timestamp_ms: float) -> RefCounted:
|
|
var script: Script = load("res://scenes/components/input_intent.gd")
|
|
var intent: RefCounted = script.new()
|
|
intent.symbol = next_symbol
|
|
intent.rhythm_action = next_rhythm_action
|
|
intent.event_type = next_event_type
|
|
intent.timestamp_ms = next_timestamp_ms
|
|
return intent
|
|
|
|
|
|
func is_pressed() -> bool:
|
|
return event_type == &"pressed"
|
|
|
|
|
|
func is_released() -> bool:
|
|
return event_type == &"released"
|
|
|
|
|
|
func with_judgement(next_judgement: Dictionary) -> RefCounted:
|
|
var copy: RefCounted = load("res://scenes/components/input_intent.gd").create(symbol, rhythm_action, event_type, timestamp_ms)
|
|
copy.judgement = next_judgement.duplicate()
|
|
return copy
|