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.
50 lines
1.4 KiB
GDScript
50 lines
1.4 KiB
GDScript
extends Node3D
|
|
class_name PlayerAction
|
|
|
|
@onready var test_bullet: CharacterCfg = load("res://config/character/bullet01.tres") as CharacterCfg
|
|
@onready var character: Character = (get_owner() as Character)
|
|
@onready var status: Status = (%Status as Status)
|
|
@onready var combo: Combo = (%Combo as Combo)
|
|
|
|
var is_lock_pressed: bool
|
|
|
|
|
|
func _process(delta) -> void:
|
|
var has_target: bool = status.target != 0
|
|
if is_lock_pressed == has_target:
|
|
return
|
|
if is_lock_pressed:
|
|
var enemy_list: Array[Character] = Global.character_mgr.get_enemy_list(character.id())
|
|
if enemy_list:
|
|
character.set_target(enemy_list[0].id())
|
|
else:
|
|
character.set_target(0)
|
|
|
|
|
|
func check_action(key: String, is_pressed: bool) -> bool:
|
|
if is_pressed and check_action_pressed(key):
|
|
return true
|
|
match key:
|
|
"lock": lock(is_pressed)
|
|
"switch": switch(is_pressed)
|
|
_: return false
|
|
return true
|
|
|
|
|
|
func check_action_pressed(key: String) -> bool:
|
|
match key:
|
|
"weapon_pre": combo.weapon_index_change(-1)
|
|
"weapon_next": combo.weapon_index_change(1)
|
|
"test_1":
|
|
Global.character_mgr.create_character(ResourceManager.cfg_character_monster_test, Enum.ETeam.Monster, Vector3(5.5, 0, 2))
|
|
_: return false
|
|
return true
|
|
|
|
|
|
func lock(is_pressed: bool):
|
|
is_lock_pressed = is_pressed
|
|
|
|
|
|
func switch(is_pressed: bool):
|
|
character.set_status("is_switch", is_pressed)
|