You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.8 KiB
GDScript

8 months ago
@tool
extends Sprite2D
class_name InputItem
@export var input_action: String:
set(value):
input_action = value
_on_input_action_set()
8 months ago
@export var detail_rate: float:
set(value):
detail_rate = value
modulate.a = value
func _ready() -> void:
SignalManager.input_device_change.connect(_on_input_device_change)
func _on_input_device_change() -> void:
_on_input_action_set()
func _on_input_action_set():
var actions = InputMap.get_actions()
for action in actions:
if not action == input_action:
continue
var events = InputMap.action_get_events(action)
for event in events:
if event is InputEventJoypadButton:
if not Global.controller_type == Enum.EControllerType.Joypad:
continue
match event.button_index:
JOY_BUTTON_A: frame = 1
JOY_BUTTON_B: frame = 2
JOY_BUTTON_X: frame = 3
JOY_BUTTON_Y: frame = 4
JOY_BUTTON_LEFT_STICK: frame = 5
JOY_BUTTON_RIGHT_STICK: frame = 6
JOY_BUTTON_LEFT_SHOULDER: frame = 7
JOY_BUTTON_RIGHT_SHOULDER: frame = 8
JOY_BUTTON_BACK: frame = 9
JOY_BUTTON_START: frame = 10
JOY_BUTTON_GUIDE: frame = 11
_: continue
return
elif event is InputEventKey:
if not Global.controller_type == Enum.EControllerType.Keyboard:
continue
match event.physical_keycode:
KEY_F1: frame = 12
KEY_F2: frame = 13
KEY_F3: frame = 14
KEY_F4: frame = 15
KEY_F5: frame = 16
KEY_F6: frame = 17
KEY_F7: frame = 18
KEY_F8: frame = 19
KEY_F9: frame = 20
KEY_F10: frame = 21
KEY_F11: frame = 22
KEY_F12: frame = 23
KEY_QUOTELEFT: frame = 24
KEY_1: frame = 25
KEY_2: frame = 26
KEY_3: frame = 27
KEY_4: frame = 28
KEY_5: frame = 29
KEY_6: frame = 30
KEY_7: frame = 31
KEY_8: frame = 32
KEY_9: frame = 33
KEY_0: frame = 34
KEY_TAB: frame = 36
KEY_Q: frame = 37
KEY_W: frame = 38
KEY_E: frame = 39
KEY_R: frame = 40
KEY_T: frame = 41
KEY_Y: frame = 42
KEY_U: frame = 43
KEY_I: frame = 44
KEY_O: frame = 45
KEY_P: frame = 46
KEY_CAPSLOCK: frame = 48
KEY_A: frame = 49
KEY_S: frame = 50
KEY_D: frame = 51
KEY_F: frame = 52
KEY_G: frame = 53
KEY_H: frame = 54
KEY_J: frame = 55
KEY_K: frame = 56
KEY_L: frame = 57
KEY_SHIFT: frame = 60
KEY_Z: frame = 61
KEY_X: frame = 62
KEY_C: frame = 63
KEY_V: frame = 64
KEY_B: frame = 65
KEY_N: frame = 66
KEY_M: frame = 67
KEY_CTRL: frame = 72
KEY_ALT: frame = 73
KEY_SPACE: frame = 74
KEY_UP: frame = 75
KEY_DOWN: frame = 76
KEY_LEFT: frame = 77
KEY_RIGHT: frame = 78
KEY_ESCAPE: frame = 79
KEY_ENTER: frame = 80
_: continue
return
else:
break
frame = 0