// Adds a new Status public GameObject add_status(string Status_name, Unit unit) { // Instantiate a status object GameObject new_status = Instantiate(status, unit.gameObject.transform); // Get the specified statusAbstract based on the Status_name StatusAbstract statusAbstract = get_StatusAbstract_byName(Status_name); // Assign statusAbstract parameters to a status new_status assign_status_parameters(ref statusAbstract, ref new_status, ref unit); new_status.GetComponent <Status>().unit = unit; // Return the new_status to the Unit, so it knows what new Status it has return(new_status); }
public void AjouterStatus(StatusAbstract status) { if (listeStatus.ContainsKey(status.id)) { if (status.isAddable()) { listeStatus[status.id].add(status); } } else { status.onStart(); listeStatus.Add(status.id, status); } StatusHolder.instance.afficherStatus(listeStatus); }
// Moves over the parameters of StatusAbstract to NewStatus of the unit. ADD new fields as they come private void assign_status_parameters(ref StatusAbstract StatusAbstract, ref GameObject NewStatus, ref Unit unit) { // Get a handle on the script of the NewStatus Status new_status = NewStatus.GetComponent <Status>(); // Set handlers new_status.unit = unit; // Populate data new_status.universal = StatusAbstract.universal; new_status.stat_gen = StatusAbstract.stat_gen; new_status.buff_duration = StatusAbstract.buff_duration; new_status.sub_dmg_receive = StatusAbstract.sub_dmg_receive; new_status.sub_heal_receive = StatusAbstract.sub_heal_receive; // Subscribe to delegates new_status.subscribe(); }