PNGTuber-Plus/scripts/autoload/input_handler.gd
2025-04-30 21:31:31 +02:00

77 lines
2.2 KiB
GDScript

# Handles background inputs (inputs when unfocused)
extends Node
signal key_pressed(key: Key)
signal key_released(key: Key)
signal all_keys_released
#background input capture
signal emptiedCapture
signal pressedKey
var costumeKeys = ["1","2","3","4","5","6","7","8","9","0"]
var pressed_keys: Array[Key] = []
func should_fire_signal() -> bool:
return get_viewport().gui_get_focus_owner() == null or not DisplayServer.window_is_focused()
func _process(_delta):
# This is a Dictionary[Key, bool] but I can't return typed dicts nor cast them
var keys = BackgroundInputCapture.get_keys()
for key in keys:
if keys[key]:
pressed_keys.append(key)
if should_fire_signal():
key_pressed.emit(key)
else:
pressed_keys.erase(key)
if should_fire_signal():
key_released.emit(key)
#process_key_presses(keys)
#bgInputSprite(keys)
#
#func process_key_presses(keys_pressed: Dictionary[Key, bool]):
#if Global.main.fileSystemOpen:
#return
#
#var keyStrings = keys_pressed.map(
#func(i) -> String: return OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i)
#)
#
#if keyStrings.size() <= 0:
#emit_signal("emptiedCapture")
#return
#
#if settingsMenu.awaitingCostumeInput >= 0:
#
#if keyStrings[0] == "Keycode1":
#if !settingsMenu.hasMouse:
#emit_signal("pressedKey")
#return
#
#var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput]
#costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0]
#Saving.settings["costumeKeys"] = costumeKeys
#Global.pushUpdate("Changed costume " + str(settingsMenu.awaitingCostumeInput+1) + " hotkey from \"" + currentButton + "\" to \"" + keyStrings[0] + "\"")
#emit_signal("pressedKey")
#
#for key in keyStrings:
#var i = costumeKeys.find(key)
#if i >= 0:
#changeCostume(i+1)
#
#
## Handles background input for sprites
#func bgInputSprite(keys_pressed: Dictionary[Key, bool]):
#if fileSystemOpen:
#return
#
#if keys_pressed.size() <= 0:
#emit_signal("all_keys_released")
#return
#
#spriteVisToggles.emit(
#keys_pressed.map(
#func(i) -> String: return OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i)
#)
#)