private float ApplyDamageFromTeam(Team team, float damage) { List <Team> possibleTargets = new List <Team>(Planet.CurrentTeamsInPlanet); possibleTargets.Remove(team); Team targetTeam = possibleTargets[UnityEngine.Random.Range(0, possibleTargets.Count)]; List <ITroop> units = Planet.Troops[targetTeam]; ITroop unitReceiving = units[0]; float health = unitReceiving.GetHealth(); while (damage >= health) { damage -= health; unitReceiving.Kill(); // Update vars if (units.Count <= 1) { break; // If that was the last unit => skip } units = Planet.Troops[targetTeam]; unitReceiving = units[0]; health = unitReceiving.GetHealth(); } return(damage); }
private void Spawn() { if (m_toBeSpawnedTroopPrefab == null) { return; } GameObject go = Instantiate(m_toBeSpawnedTroopPrefab.gameObject, m_spawnTransform.position, m_spawnTransform.rotation) as GameObject; ITroop troop = go.GetComponent(typeof(ITroop)) as ITroop; troop.Init(TeamID); }
private void OnTriggerEnter(Collider other) { ITroop sensedEnemy = other.GetComponent(typeof(ITroop)) as ITroop; if (sensedEnemy != null) { if (sensedEnemy.TeamID == TeamID) { return; } if (sensedEnemy.HitPoint > 0 && sensedEnemy.IsWaitingTobeDeleted == false) { for (int i = 0; i < m_targetsList.Count; ++i) { if (m_targetsList[i].IsStatic) { m_targetsList.Insert(i, sensedEnemy); break; } } } } }