// Adds a new Skill public Skill add_skill(string Skill_name, Unit unit) { GameObject new_skill; // Instantiate a skill object if (unit.is_player()) { new_skill = Instantiate(skill, player_skills_holder.transform); } else { new_skill = Instantiate(skill /*, unit.gameObject.transform*/); } // Get the specified skillAbstract based on the Skill_name SkillAbstract skillAbstract = get_SkillAbstract_byName(Skill_name, unit); // Assign skillAbstract parameters to a skill new_skill assign_skill_parameters(ref skillAbstract, ref new_skill); // Assign owner unit new_skill.GetComponent <Skill>().owner_unit = unit; // Return the new_skill to the Unit, so it knows what new Skill it has return(new_skill.GetComponent <Skill>()); }
// Moves over the parameters of SkillAbstract to NewSkill of the unit private void assign_skill_parameters(ref SkillAbstract SkillAbstract, ref GameObject NewSkill) { // Get a handle on the script of the NewSkill Skill new_skill = NewSkill.GetComponent <Skill>(); // Populate data new_skill.universal = SkillAbstract.universal; new_skill.general = SkillAbstract.general; new_skill.cost = SkillAbstract.cost; new_skill.gain = SkillAbstract.gain; new_skill.status = SkillAbstract.status; new_skill.charge = SkillAbstract.charge; new_skill.skill_advanced = SkillAbstract.skill_advanced; new_skill.damage_info = SkillAbstract.damage_info; new_skill.prerequisite = SkillAbstract.prerequisite; new_skill.pooling = SkillAbstract.pooling; new_skill.picking = SkillAbstract.picking; }