|  |  |  | extends CharacterBody3D | 
					
						
							|  |  |  | class_name Character | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @onready var collision = (%Collision) | 
					
						
							|  |  |  | @onready var status = (%Status as Status) | 
					
						
							|  |  |  | @onready var view = (%View as View) | 
					
						
							|  |  |  | @onready var buff = (%Buff as Buff) | 
					
						
							|  |  |  | @onready var skill = (%Skill as Skill) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var character_manager : CharacterManager | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init(mgr:CharacterManager,id:int,cfg:CharacterCfg,team:Enum.ETeam): | 
					
						
							|  |  |  | 	character_manager = mgr | 
					
						
							|  |  |  | 	status.id = id | 
					
						
							|  |  |  | 	status.team = team | 
					
						
							|  |  |  | 	status.cfg = cfg | 
					
						
							|  |  |  | 	build_view(cfg) | 
					
						
							|  |  |  | 	build_battle(cfg) | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | func build_view(cfg:CharacterCfg): | 
					
						
							|  |  |  | 	var half_height = Setting.pixel_size * Setting.sprite_scale * cfg.sprite_harf_height | 
					
						
							|  |  |  | 	var width = Setting.pixel_size * Setting.sprite_scale * cfg.sprite_width | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	collision.position = Vector3(0,half_height,0) | 
					
						
							|  |  |  | 	collision.scale = Vector3(width,half_height*2,width) | 
					
						
							|  |  |  | 	view.position = Vector3(0,half_height,0) | 
					
						
							|  |  |  | 	view.init(cfg.sprite_frames) | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | func build_battle(cfg:CharacterCfg): | 
					
						
							|  |  |  | 	status.hp = cfg.hp_max | 
					
						
							|  |  |  | 	status.hp_max = cfg.hp_max | 
					
						
							|  |  |  | 	status.shield = cfg.shield_max | 
					
						
							|  |  |  | 	status.shield_max = cfg.shield_max | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #==getter== | 
					
						
							|  |  |  | func manager()->CharacterManager:return character_manager | 
					
						
							|  |  |  | func id()->int:return status.id | 
					
						
							|  |  |  | func team()->Enum.ETeam:return status.team | 
					
						
							|  |  |  | func pos()->Vector2:return Vector2(position.x,position.z) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #==interface== | 
					
						
							|  |  |  | func set_pos(pos:Vector3):position = pos | 
					
						
							|  |  |  | func add_buff(buff_name:String,duration:float):buff.add_buff(buff_name,duration) | 
					
						
							|  |  |  | func set_hit_move(hit_back_dir:Vector2,hit_back_speed:float,hit_up_speed:float): | 
					
						
							|  |  |  | 	status.hit_back_dir = hit_back_dir | 
					
						
							|  |  |  | 	status.hit_back_speed = hit_back_speed | 
					
						
							|  |  |  | 	status.hit_up_speed = hit_up_speed | 
					
						
							|  |  |  | func cancel_skill():skill.cancel_skill() | 
					
						
							|  |  |  | func set_view_trigger(trigger_name:String):status.set("trigger_%s"%trigger_name,true) |