extends Node2D signal transition_halfway var just_called = false var keyboard = true setget set_keyboard var USE_TOUCH = OS.has_touchscreen_ui_hint() func halfway(): emit_signal("transition_halfway") func exit(): get_tree().quit() func transition(to = null): if just_called == false: just_called = true get_tree().paused = true $transitionAnimation.stop(true) $transitionAnimation.play("fadeinout") if to: get_tree().change_scene(to) yield(self, "transition_halfway") set_input_prompts() get_tree().paused = false just_called = false func _ready(): set_input_prompts() set_process_input(not USE_TOUCH) func turn_off(): get_tree().call_group("keyboard", "hide") get_tree().call_group("gamepad", "hide") get_tree().call_group("not_mobile", "hide") func _input(event: InputEvent) -> void: if event is InputEventJoypadButton or event is InputEventJoypadMotion and keyboard == true: self.keyboard = false elif event is InputEventKey and keyboard == false: self.keyboard = true func set_keyboard(new_keyboard): keyboard = new_keyboard set_input_prompts() func set_input_prompts(): if USE_TOUCH: get_tree().call_group("not_mobile", "hide") get_tree().call_group("mobile", "show") get_tree().call_group("keyboard", "hide") get_tree().call_group("gamepad", "hide") elif keyboard == true: get_tree().call_group("not_mobile", "show") get_tree().call_group("gamepad", "hide") get_tree().call_group("mobile", "hide") get_tree().call_group("keyboard", "show") elif keyboard == false: get_tree().call_group("not_mobile", "show") get_tree().call_group("keyboard", "hide") get_tree().call_group("mobile", "hide") get_tree().call_group("gamepad", "show") func instance_scene_on_main(scene, position): var main = get_tree().current_scene var instance = scene.instance() main.call_deferred("add_child", instance) # main.add_child(instance) instance.global_position = position return instance