@abstract class_name NoteVisual extends Node2D

enum TYPE {
	TAP = 0,
	HOLD = 1
}

@abstract func reset() -> void

@abstract func in_use() -> bool

@abstract func update(beat: float) -> void

# ======= IMPLEMENTATION ======= #
var _lane: Lane = null

func _notification(what: int) -> void:
	match what:
		NOTIFICATION_PARENTED:
			_lane = get_parent() as Lane
		NOTIFICATION_UNPARENTED:
			_lane = null

static func _calculate_scroll(target_beat: float, current_beat: float) -> float:
	return Settings.get_note_scroll_speed() * (current_beat - target_beat)
