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.
		
		
		
		
		
			
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			GDScript
		
	
| extends Node3D
 | |
| class_name PlayerInput
 | |
| 
 | |
| @onready var status = (%Status as Status)
 | |
| @onready var combo = (%Combo as Combo)
 | |
| @onready var action = (%PlayerAction as PlayerAction)
 | |
| 
 | |
| var action_map = {}
 | |
| var switch_action_list = ["attack_heavy","attack_light","jump","interact"]
 | |
| var skill_action_list = ["skill1","skill2","skill3","skill4"]
 | |
| 
 | |
| func _ready():
 | |
| 	SignalManager.connect("input_action_pressed",on_input_action_pressed)
 | |
| 	SignalManager.connect("input_action_released",on_input_action_released)
 | |
| 	SignalManager.connect("input_action_move",on_input_action_move)
 | |
| 
 | |
| func on_input_action_pressed(action_name:String):
 | |
| 	if action_name in action_map:
 | |
| 		return
 | |
| 	action_map[action_name] = true
 | |
| 		
 | |
| 	action_name = get_switch_action(action_name)
 | |
| 	action_name = get_skill_action(action_name)
 | |
| 	Global.ui_mgr.input_action(action_name,true)
 | |
| 	if Global.is_control_pause:
 | |
| 		return
 | |
| 	if not action.check_action(action_name,true):
 | |
| 		combo.add_input_action(action_name)
 | |
| 	
 | |
| func on_input_action_released(action_name:String):
 | |
| 	if not action_name in action_map:
 | |
| 		return
 | |
| 	action_map.erase(action_name)
 | |
| 		
 | |
| 	action_name = get_switch_action(action_name)
 | |
| 	action_name = get_skill_action(action_name)
 | |
| 	Global.ui_mgr.input_action(action_name,false)
 | |
| 	if Global.is_control_pause:
 | |
| 		return
 | |
| 	action.check_action(action_name,false)
 | |
| 
 | |
| func on_input_action_move(input_dir):
 | |
| 	Global.ui_mgr.input_dir(input_dir)
 | |
| 	if Global.is_control_pause:
 | |
| 		return
 | |
| 	status.input_dir = input_dir
 | |
| 
 | |
| func get_switch_action(action_name:String)->String:
 | |
| 	if not action_name in switch_action_list:
 | |
| 		return action_name
 | |
| 	if not status.is_switch:
 | |
| 		return action_name
 | |
| 	if status.target:
 | |
| 		return "lock_%s"%action_name
 | |
| 	else:
 | |
| 		return "free_%s"%action_name
 | |
| 		
 | |
| func get_skill_action(action_name:String)->String:
 | |
| 	if not action_name in skill_action_list:
 | |
| 		return action_name
 | |
| 	var index = skill_action_list.find(action_name)
 | |
| 	action_name = switch_action_list[index]
 | |
| 	if status.target:
 | |
| 		return "lock_%s"%action_name
 | |
| 	else:
 | |
| 		return "free_%s"%action_name
 |