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 |