|  |  |  | extends Node3D | 
					
						
							|  |  |  | class_name Core | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @onready var character = (get_owner() as Character) | 
					
						
							|  |  |  | @onready var status = (%Status as Status) | 
					
						
							|  |  |  | @onready var skill = (%Skill as Skill) | 
					
						
							|  |  |  | @onready var move = (%Move as Move) | 
					
						
							|  |  |  | @onready var combo = (%Combo as Combo) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var active_core_action_list = [ | 
					
						
							|  |  |  | 	"free_attack_heavy","free_attack_light","free_jump","free_interact", | 
					
						
							|  |  |  | 	"lock_attack_heavy","lock_attack_light","lock_jump","lock_interact", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func _ready(): | 
					
						
							|  |  |  | 	# test | 
					
						
							|  |  |  | 	for i in range(8): | 
					
						
							|  |  |  | 		status.core_active_list.append(null) | 
					
						
							|  |  |  | 	set_active_core(0,load("res://config/core/free01.tres")) | 
					
						
							|  |  |  | 	set_active_core(1,load("res://config/core/free02.tres")) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func _process(delta): | 
					
						
							|  |  |  | 	pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func set_active_core(index:int,core:CoreCfg): | 
					
						
							|  |  |  | 	match core.type: | 
					
						
							|  |  |  | 		Enum.ECoreType.Free:pass | 
					
						
							|  |  |  | 		Enum.ECoreType.Lock:index+=4 | 
					
						
							|  |  |  | 		Enum.ECoreType.Passive:return | 
					
						
							|  |  |  | 	if index<0 or index>=8: | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	var core_pre = status.core_active_list[index] | 
					
						
							|  |  |  | 	if core_pre: | 
					
						
							|  |  |  | 		on_remove_active_core(index,core_pre) | 
					
						
							|  |  |  | 	status.core_active_list[index] = core | 
					
						
							|  |  |  | 	on_add_active_core(index,core) | 
					
						
							|  |  |  | 	status.emit_status("core_active_list") | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | func on_add_active_core(index:int,core:CoreCfg): | 
					
						
							|  |  |  | 	for skill in core.skill_list: | 
					
						
							|  |  |  | 		var action = active_core_action_list[index] | 
					
						
							|  |  |  | 		combo.add_skill(action,skill) | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | func on_remove_active_core(index:int,core:CoreCfg): | 
					
						
							|  |  |  | 	for skill in core.skill_list: | 
					
						
							|  |  |  | 		var action = active_core_action_list[index] | 
					
						
							|  |  |  | 		combo.remove_skill(action,skill) | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | func add_passive_core(core:CoreCfg): | 
					
						
							|  |  |  | 	match core.type: | 
					
						
							|  |  |  | 		Enum.ECoreType.Free:return | 
					
						
							|  |  |  | 		Enum.ECoreType.Lock:return | 
					
						
							|  |  |  | 	status.core_passive_list.append(core) | 
					
						
							|  |  |  | 	status.emit_status("core_passive_list") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func remove_passive_core(core:CoreCfg): | 
					
						
							|  |  |  | 	match core.type: | 
					
						
							|  |  |  | 		Enum.ECoreType.Free:return | 
					
						
							|  |  |  | 		Enum.ECoreType.Lock:return | 
					
						
							|  |  |  | 	status.core_passive_list.filter(func(c):return c!=core) | 
					
						
							|  |  |  | 	status.emit_status("core_passive_list") |