コード例 #1
0
    public IEnumerator TestMinionMovement_Turn_PositionAndRotation()
    {
        SceneManager.LoadScene("Test_MinionMovement_Turn");
        //MinionPool.Reset();

        yield return(null);

        Node origin = new Node(0, 0);
        Path path   = new Path(origin, NODE_DIRECTION.RIGHT); //1

        Branch testBranch = path.Branches[path.OuterBranchIDs[0]];

        testBranch.Add(NODE_DIRECTION.RIGHT);   //2
        testBranch.Add(NODE_DIRECTION.RIGHT);   //3
        testBranch.Add(NODE_DIRECTION.RIGHT);   //4
        testBranch.Add(NODE_DIRECTION.UP);      //5
        testBranch.Add(NODE_DIRECTION.UP);      //6
        testBranch.Add(NODE_DIRECTION.UP);      //7
        testBranch.Add(NODE_DIRECTION.UP);      //8

        Node startNode = testBranch.InNode;

        Assert.That(startNode.VectorLocation, Is.EqualTo(new Vector2Int(4, 4)));

        Minion minion = MinionPool.Instance.GetMinion();

        minion.Activate(startNode);

        float travelDuration = minion.MovementInterface.MoveInterval * Node.GetDistanceToOrigin(startNode) + 1f;

        yield return(new WaitForSeconds(travelDuration));

        Assert.That(minion.transform.position.RoundToVector2Int(), Is.EqualTo(origin.VectorLocation));
        Assert.That(minion.transform.rotation, Is.EqualTo(Quaternion.Euler(0, MovementController.GetDirectionRotation(NODE_DIRECTION.LEFT), 0)));
    }
コード例 #2
0
    void ChangeState(eAutoBattleState newState)
    {
        autoBattleState = newState;

        if (autoBattleState == eAutoBattleState.IN_BATTLE)
        {
            minion1.Activate(minion2);
            minion2.Activate(minion1);
        }
    }
コード例 #3
0
    public IEnumerator SpawnWave()
    {
        int waveSize = Mathf.RoundToInt(NextWaveSize);

        for (int i = 0; i < waveSize; i++)
        {
            Minion minion = MinionPool.Instance.GetMinion();
            minion.Activate(path.Branches[path.OuterBranchIDs[rand.Next(path.OuterBranchIDs.Count)]].InNode);

            // Don't spawn all minions at the same time. They need to come in waves. Not piles.
            yield return(new WaitForSeconds(0.5f + UnityEngine.Random.value));
        }
    }
コード例 #4
0
    public IEnumerator Test_TowerAttacks_MinionsDieCorrectly()
    {
        SceneManager.LoadScene("Test_TowerAttacks_Aggro");
        yield return(null);

        GameObject tower    = GameObject.Find("test_tower");
        TowerAggro towerAgg = tower.GetComponentInChildren <TowerAggro>();

        Node origin = new Node(0, 0);
        Path path   = new Path(origin, NODE_DIRECTION.RIGHT); //1

        Branch testBranch = path.Branches[path.OuterBranchIDs[0]];

        testBranch.Add(NODE_DIRECTION.RIGHT); //2
        testBranch.Add(NODE_DIRECTION.RIGHT); //3
        testBranch.Add(NODE_DIRECTION.RIGHT); //4
        testBranch.Add(NODE_DIRECTION.RIGHT); //5
        testBranch.Add(NODE_DIRECTION.RIGHT); //6
        testBranch.Add(NODE_DIRECTION.RIGHT); //7
        testBranch.Add(NODE_DIRECTION.RIGHT); //8
        testBranch.Add(NODE_DIRECTION.RIGHT); //9
        testBranch.Add(NODE_DIRECTION.RIGHT); //10

        Node startNode = testBranch.InNode;

        Minion minion = MinionPool.Instance.GetMinion();

        minion.Activate(startNode);

        float secondMinionSpawnDelay = 2.0f;

        yield return(new WaitForSeconds(secondMinionSpawnDelay));

        Minion minion2 = MinionPool.Instance.GetMinion();

        minion2.Activate(startNode);

        float travelDuration = minion.MovementInterface.MoveInterval * Node.GetDistanceToOrigin(startNode) + 1f - secondMinionSpawnDelay;

        yield return(new WaitForSeconds(travelDuration));

        Assert.That(towerAgg.Targets.Count, Is.EqualTo(0));
        Assert.That(!minion.Alive);
    }