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.
115 lines
2.8 KiB
GDScript
115 lines
2.8 KiB
GDScript
@tool
|
|
extends Sprite2D
|
|
class_name InputItem
|
|
|
|
@export var input_action: String:
|
|
set(value):
|
|
input_action = value
|
|
_on_input_action_set()
|
|
|
|
@export var detail_rate: float:
|
|
set(value):
|
|
detail_rate = value
|
|
modulate.a = value
|
|
|
|
func _ready() -> void:
|
|
if not Engine.is_editor_hint():
|
|
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 |