void DisplayEnemyWaves()
    {
        EnemySquadManager enemySquadManager = FindObjectOfType <EnemySquadManager>();

        for (int i = 0; i < enemySquadManager.CurrentEnemyWave.EnemyBoats.Length; ++i)
        {
            if (enemySquadManager.CurrentEnemyWave.EnemyBoats[i].name.Contains("Rock"))
            {
                StartCoroutine(InstantiateEnemyIcon(EnemyIcon.Rock, i,
                                                    enemySquadManager.CurrentEnemyWave.EnemyBoats.Length, i * 0.25f));
            }
            else if (enemySquadManager.CurrentEnemyWave.EnemyBoats[i].name.Contains("Paper"))
            {
                StartCoroutine(InstantiateEnemyIcon(EnemyIcon.Paper, i,
                                                    enemySquadManager.CurrentEnemyWave.EnemyBoats.Length, i * 0.25f));
            }
            else if (enemySquadManager.CurrentEnemyWave.EnemyBoats[i].name.Contains("Scissor"))
            {
                StartCoroutine(InstantiateEnemyIcon(EnemyIcon.Scissor, i,
                                                    enemySquadManager.CurrentEnemyWave.EnemyBoats.Length, i * 0.25f));
            }
            else
            {
            }
        }
    }
    public override Vector3 CalculateMove(Squad squad, List <Transform> context, EnemySquadManager squadManager)
    {
        List <Transform> filteredContext = (filter == null) ? context : filter.Filter(squad, context);

        //if no neighbors, return no adjustment
        if (filteredContext.Count == 0)
        {
            return(Vector3.zero);
        }

        //add all points together and average
        Vector3 avoidanceMove = Vector3.zero;
        int     nAvoid        = 0;

        for (int i = 0; i < filteredContext.Count; ++i)
        {
            if (Vector3.SqrMagnitude(filteredContext[i].position - squad.transform.position) < squadManager.SquareAvoidanceRadius)
            {
                ++nAvoid;
                avoidanceMove += (squad.transform.position - filteredContext[i].position);
            }
        }
        if (nAvoid > 0)
        {
            avoidanceMove /= nAvoid;
        }
        avoidanceMove.y = 0f;

        return(avoidanceMove);
    }
Exemple #3
0
    private void CreateSquads()
    {
        BattleManager battleManager   = Toolbox.Get <BattleManager>();
        List <Squad>  playerSquadDefs = battleManager.GetSquadsForOwner(PlayerType.Player);
        List <Squad>  enemySquadDefs  = battleManager.GetSquadsForOwner(PlayerType.Enemy1);

        playerSquads = new List <SquadGroup>();
        enemySquads  = new List <SquadGroup>();

        spawnSquadGroupsFromList(PlayerType.Player, playerSquadDefs);
        spawnSquadGroupsFromList(PlayerType.Enemy1, enemySquadDefs);

        enemySquadManager = GetComponent <EnemySquadManager>();
        enemySquadManager.resetTimer();
    }
Exemple #4
0
    public override Vector3 CalculateMove(Squad squad, List <Transform> context, EnemySquadManager squadManager)
    {
        List <Transform> filteredContext = (filter == null) ? context : filter.Filter(squad, context);

        //if no neighbors, return no adjustment
        if (filteredContext.Count == 0)
        {
            return(Vector3.zero);
        }

        //add all points together and average
        Vector3 cohesionMove = Vector3.zero;

        for (int i = 0; i < filteredContext.Count; ++i)
        {
            cohesionMove += filteredContext[i].position;
        }
        cohesionMove /= filteredContext.Count;

        //create offset from agent position
        cohesionMove -= squad.transform.position;

        return(cohesionMove);
    }
 public abstract Vector3 CalculateMove(Squad squad,
                                       List <Transform> context, EnemySquadManager squadManager);