private void AddAbility(Ability a, int index) { AbilityDisplay ad = AbilityDisplay.Create(abilListRoot, a); ad.ChangeCDColor(Bullet.DamageTypeToColor(subject.DefaultDT)); ad.transform.SetSiblingIndex(index); }
// Change the Entity from which the HUD will pull values public void SetSubject(Entity subject) { //clear old subject data if (subject != null) { //clear old misc subject.damageTypeChanged -= ChangeDamageType; //clear old ability list subject.abilityAdded -= AddAbility; subject.abilityRemoved -= RemoveAbility; subject.abilitySwapped -= SwapAbilities; for (int i = 0; i < abilListRoot.childCount; i++) { Destroy(abilListRoot.GetChild(i).gameObject); } //clear old status list for (int i = 0; i < statListRoot.childCount; i++) { Destroy(statListRoot.GetChild(i).gameObject); } subject.statusAdded -= AddStatus; subject.statusRemoved -= RemoveStatus; } //set up new subject this.subject = subject; if (subject == null) { return; } //setup ability list for (int i = 0; i < subject.AbilityCap; i++) { if (subject.GetAbility(i) != null) { AbilityDisplay.Create(abilListRoot, subject.GetAbility(i)); } } subject.abilityAdded += AddAbility; subject.abilityRemoved += RemoveAbility; subject.abilitySwapped += SwapAbilities; //setup status list foreach (Status s in subject.GetStatusList()) { AddStatus(s); } subject.statusAdded += AddStatus; subject.statusRemoved += RemoveStatus; //misc subject.damageTypeChanged += ChangeDamageType; ChangeDamageType(subject.DefaultDT); //TODO other clearing and resetting of elements? }