|  |  |  | 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: PackedScene | 
					
						
							|  |  |  | @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()->PackedScene: | 
					
						
							|  |  |  | 	if ai_behavior_tree: | 
					
						
							|  |  |  | 		return ai_behavior_tree | 
					
						
							|  |  |  | 	var res_name: String     = get_res_name() | 
					
						
							|  |  |  | 	var path_default: String = "res://scene/ai/%s.tscn" % res_name | 
					
						
							|  |  |  | 	if ResourceLoader.exists(path_default): | 
					
						
							|  |  |  | 		return load(path_default) as PackedScene | 
					
						
							|  |  |  | 	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 |