77 lines
2.2 KiB
GDScript
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)
|
|
#)
|
|
#)
|