private void RemoveDeadCreepFromList(Creep _creep) //If the creep that died is in the current list... { if (DefenderCreepList.Contains(_creep)) { DefenderCreepList.Remove(_creep); //Remove it } }
public void GetTargetReferenceFromRallyPoint(GameObject other) { Creep newCreep = other.GetComponent <Creep>(); scrCreepEngagementHandler _newCreepEngagementHandler = newCreep.GetComponent <scrCreepEngagementHandler>(); if (newCreep._CreepHealth.CurrentHealth > 0f) //Extra check needed in case a creep that just died "slides" into the collider { DefenderCreepList.Add(newCreep); foreach (DefenderEngagementHandler _defender in Defenders) //Send all defenders to engage as none { if (_defender.defenderIsAlive && !_defender.thisDefenderIsEngagedAsMainTarget && !_defender.thisDefenderIsEngagedAsNoneTarget) { //print("Sent a defender as none target"); _defender.DefenderEngageNewTargetAsNone(newCreep); } } for (int i = 0; i < Defenders.Count; i++) //Send a defender to engage as main { if (!Defenders[i].thisDefenderIsEngagedAsMainTarget && Defenders[i].defenderIsAlive && _newCreepEngagementHandler.CurrentTarget == null) { //print("Sent a defender to engage new target: " + newCreep); Defenders[i].DefenderEngageNewTargetAsMain(Defenders[i], newCreep); return; //Only send one } } } }
public void LooseTargetReferenceFromRallyPoint(GameObject other) { Creep theCreep = other.GetComponent <Creep>(); if (DefenderCreepList.Contains(theCreep)) { LooseDefenderTarget?.Invoke(theCreep, Defenders); DefenderCreepList.Remove(theCreep); } //print("Lost a creep reference: " + other); }