public void Test_LoseTarget() { MinionPool.KeepOnLoad = false; MinionPool.Reset(); Minion enemy = MinionPool.Instance.GetMinion(); enemy.gameObject.SetActive(true); SphereCollider enemyCollider = enemy.AttackableInterface.GetComponent <SphereCollider>(); enemy.transform.SetPositionAndRotation(new Vector3(8, 0, -8), Quaternion.identity); enemyCollider.radius = 0.1f; GameObject tower = new GameObject(); TowerAggro towerAggro = tower.AddComponent <TowerAggro>(); SphereCollider towerCollider = tower.AddComponent <SphereCollider>(); towerCollider.radius = 4; towerAggro.Start(); towerAggro.OnTriggerEnter(enemyCollider); towerAggro.OnTriggerExit(enemyCollider); Assert.That(towerAggro.Targets.Count, Is.EqualTo(0)); }
public IEnumerator Test_ProjectileBehavior() { SceneManager.LoadScene("Test_Attacks"); yield return(null); GameObject tower = GameObject.Find("test_tower"); TowerAggro towerAgg = tower.GetComponentInChildren <TowerAggro>(); Minion enemy = MinionPool.Instance.GetMinion(); Vector3 enemyPosition = new Vector3(2, 0, 0); enemy.transform.position = enemyPosition; enemy.gameObject.SetActive(true); towerAgg.Targets.Add(enemy); yield return(new WaitForSeconds(6)); Projectile[] p = GameObject.FindObjectsOfType <Projectile>(); Assert.That(p.Length, Is.EqualTo(1)); Assert.That(enemy.AttackableInterface.HP, Is.EqualTo(10)); yield return(new WaitForSeconds(3)); Assert.That(enemy.AttackableInterface.HP, Is.EqualTo(9)); Assert.That(enemy.transform.position, Is.EqualTo(enemyPosition)); enemy.Deactivate(); }
// Start is called before the first frame update void Start() { if ((aggro = GetComponent <TowerAggro>()) == null) { Debug.LogError("No TowerAggro script on object " + gameObject.name + "!"); } if ((garrison = GetComponent <TowerGarrison>()) == null) { Debug.LogError("No TowerGarrison script on object" + gameObject.name + "!"); } effect = transform.GetChild(0).GetChild(0).GetChild(0).GetComponent <SpriteRenderer>(); effect.enabled = false; StartCoroutine(Attack()); }
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); }
public void Test_CompareDistance_PosOne2() { MinionPool.KeepOnLoad = false; MinionPool.Reset(); Minion enemy1 = MinionPool.Instance.GetMinion(); Minion enemy2 = MinionPool.Instance.GetMinion(); enemy1.gameObject.SetActive(true); enemy2.gameObject.SetActive(true); enemy1.transform.SetPositionAndRotation(new Vector3(8, 0, -8), Quaternion.identity); enemy2.transform.SetPositionAndRotation(new Vector3(-4, 0, 4), Quaternion.identity); GameObject tower = new GameObject(); TowerAggro towerAggro = tower.AddComponent <TowerAggro>(); int distanceSortValue = towerAggro.CompareDistances(enemy1, enemy2); Assert.That(distanceSortValue, Is.EqualTo(1)); }
/// <summary> /// Remove this Attackable from the passed Tower. /// </summary> /// <param name="tower"></param> public void UnTagTower(TowerAggro tower) { AggroTowers.Remove(tower.ID); }
/// <summary> /// Add a tower to the Tower tracking for this Attackable. /// </summary> /// <param name="tower"></param> public void TagTower(TowerAggro tower) { AggroTowers.Add(tower.ID, tower); }
// Use this for initialization public void Start() { aggro = GetComponent <TowerAggro>(); projectileSpawnPosition = transform.parent.GetComponentInChildren <ProjectileSpawn>().transform.position; }