Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
0
    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;
                    }
                }
            }
        }
    }