extends Area3D

var player_inside: bool = false
var activated: bool = false

func _ready() -> void:
	set_process(true)
	body_entered.connect(_on_body_entered)
	body_exited.connect(_on_body_exited)

func _on_body_entered(body: Node) -> void:
	if body.name == "Player":
		player_inside = true

func _on_body_exited(body: Node) -> void:
	if body.name == "Player":
		player_inside = false

func _process(_delta: float) -> void:
	if not player_inside:
		return
	if Input.is_action_just_pressed("ui_accept"):
		GameFacts.set_fact("world.has_pressed_switch_2", true)
		GameClock.time_speed_modifier -= 0.25
		print("Switch 2 pressed! Time speed decreased: ", GameClock.time_speed_modifier)

# ------------------------------------------------------------------------------
# SCHEDULER INTERFACE
# ------------------------------------------------------------------------------

@export var scheduler_id: String = ""

func _enter_tree() -> void:
	if scheduler_id == "":
		var zone_name := "UNKNOWN"
		if owner:
			zone_name = owner.name.to_upper()
		elif get_parent():
			zone_name = get_parent().name.to_upper()
		scheduler_id = "%s.%s" % [zone_name, name]
	
	if GameManager and not Engine.is_editor_hint():
		GameManager.register_entity(scheduler_id, self)

func _exit_tree() -> void:
	if GameManager and not Engine.is_editor_hint():
		GameManager.unregister_entity(scheduler_id)

func get_scheduler_states() -> Dictionary:
	return {
		"active": { "description": "Switch is visible and interactable" },
		"inactive": { "description": "Switch is hidden and disabled" }
	}

func get_scheduler_facts() -> Array:
	return ["world.has_pressed_switch_2"]

func get_default_state() -> String:
	return "active"

func apply_scheduler_state(state_name: String, _params: Dictionary = {}) -> void:
	match state_name:
		"active":
			visible = true
			process_mode = Node.PROCESS_MODE_INHERIT
		"inactive":
			visible = false
			process_mode = Node.PROCESS_MODE_DISABLED
		_:
			push_warning("Switch2: Unknown state '%s'" % state_name)
