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