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.
		
		
		
		
		
			
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.2 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: 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
 |