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.
76 lines
2.0 KiB
GDScript
76 lines
2.0 KiB
GDScript
extends Cfg
|
|
class_name CharacterCfg
|
|
|
|
#基本信息
|
|
@export var name: String
|
|
@export var type: Enum.ECharacterType
|
|
@export_group("动画")
|
|
@export var sprite_frames: SpriteFrames
|
|
@export var sprite_height: int
|
|
@export var sprite_width: int
|
|
@export_group("组件")
|
|
@export var move: CharacterMoveCfg
|
|
@export var shield: ShieldCfg
|
|
@export var stun: StunCfg
|
|
@export var mp: MpCfg
|
|
@export var ai: AICfg
|
|
@export var ai_behavior_tree: BehaviorTree
|
|
@export_group("战斗数值")
|
|
@export var hp_max: float
|
|
@export var attack: float
|
|
@export_group("自带技能参数")
|
|
@export var attack1: AttackCfg
|
|
@export var attack1_box: AttackBoxCfg
|
|
@export var attack2: AttackCfg
|
|
@export var attack2_box: AttackBoxCfg
|
|
@export var sub_character: CharacterCfg
|
|
@export var sub_character_auto_create: bool
|
|
@export_group("受击材质")
|
|
@export var material_on: Enum.EMaterial = Enum.EMaterial.None # 有护盾时材质
|
|
@export var material_off: Enum.EMaterial = Enum.EMaterial.None # 无护盾时材质
|
|
|
|
var core_cfg_list: Array[CoreCfg]
|
|
|
|
|
|
func get_attack1() -> AttackCfg: return attack1
|
|
|
|
|
|
func get_attack1_box() -> AttackBoxCfg: return attack1_box
|
|
|
|
|
|
func get_attack2() -> AttackCfg: return attack2
|
|
|
|
|
|
func get_attack2_box() -> AttackBoxCfg: return attack2_box
|
|
|
|
|
|
func get_particle() -> Resource:
|
|
var res_name: String = get_res_name()
|
|
var path_default: String = "res://scene/effect/particle/%s.tscn" % res_name
|
|
if ResourceLoader.exists(path_default):
|
|
return load(path_default)
|
|
return null
|
|
|
|
|
|
func get_ai() -> BehaviorTree:
|
|
if ai_behavior_tree:
|
|
return ai_behavior_tree
|
|
return null
|
|
|
|
|
|
func get_core_cfg_list() -> Array[CoreCfg]:
|
|
if core_cfg_list:
|
|
return core_cfg_list
|
|
core_cfg_list = []
|
|
var res_name: String = get_res_name()
|
|
var dir_path: String = "res://config/core"
|
|
var dir: DirAccess = DirAccess.open(dir_path)
|
|
for file in dir.get_files():
|
|
if not file.begins_with(res_name):
|
|
continue
|
|
var path: String = dir_path + "/" + file
|
|
var res = load(path)
|
|
if res is CoreCfg:
|
|
core_cfg_list.append(res)
|
|
return core_cfg_list
|