Exemplo n.º 1
0
    public override void SetTarget(WorldObject newTarget, bool ordered)
    {
        base.SetTarget(newTarget, ordered);
        StrategicPoint stratPoint = newTarget as StrategicPoint;

        if (stratPoint && (!stratPoint.occupied || stratPoint.IsOwnedBy(GetSpecies())))
        {
            StartCoroutine(TargetStratPoint());
        }
    }
Exemplo n.º 2
0
    private IEnumerator TargetStratPoint()
    {
        yield return(null);

        Deselect();
        player.userInput.SelectedObjects.Remove(this as WorldObject);
        player.units.selectedUnits.Remove(this as Unit);
        StrategicPoint stratPoint = target as StrategicPoint;

        StartMoving(stratPoint.transform.position);
        while (target && target as StrategicPoint == stratPoint && (!mainCollider.bounds.Intersects(target.mainCollider.bounds) || stratPoint.occupied && !stratPoint.IsOwnedBy(GetSpecies())))
        {
            yield return(null);
        }
        if (target && target as StrategicPoint == stratPoint && mainCollider.bounds.Intersects(target.mainCollider.bounds))
        {
            if (selected)
            {
                Deselect();
                player.userInput.SelectedObjects.Remove(this as WorldObject);
                player.units.RemoveFromSelectedUnits(this as Unit);
            }
            if (stratPoint.occupied)
            {
                stratPoint.ChangeLocalPopulation(currPopCount);
            }
            else
            {
                stratPoint.Occupy(player, currPopCount);
            }
            player.RemoveFromWOsDick(this as WorldObject);
            Destroy(gameObject);
        }
    }