//################ UPDATE METHODS ################ void Update() { //If castle damage, move all troops there if (moveMinusOne && aiCastle.health == startHealth - 1) { MoveAllAIHome(); moveMinusOne = false; } else if (moveSeventyFive && aiCastle.health == startHealth * 0.75f) { MoveAllAIHome(); moveSeventyFive = false; } else if (moveFifty && aiCastle.health == startHealth * 0.5f) { MoveAllAIHome(); moveFifty = false; } else if (moveTwentyFive && aiCastle.health == startHealth * 0.25f) { MoveAllAIHome(); moveTwentyFive = false; } //At start site, move at aiCost to close to AI if (aiStartSite.GetTroops().Count >= aiCost) { int random = Random.Range(0, sitesCloseToAI.Count); aiStartSite.MoveTroops(sitesCloseToAI[random].transform); } //For all sites, build at buildCost, move at moveCost foreach (BuildSiteController aiSite in GetAISites()) { if (aiSite.GetTroops().Count >= aiCost) //If count = aiCost, build { if (aiSite.CanBuild()) { aiSite.CreateTower(); for (int i = 0; i < aiCost; i++) { Destroy(aiSite.GetTroops()[i].gameObject); } } else if (aiSite.GetTroops().Count >= aiMoveCost) //If moveCost, move to random { List <BuildSiteController> noneAISites = GetNoneAISites(); if (noneAISites.Count > 0) { int random = Random.Range(0, noneAISites.Count); aiSite.MoveTroops(noneAISites[random].transform); } } } } }
//---- SUCCESS/FAIL METHODS ---- void PendingTowerSuccess() { List <Transform> paymentTroops = pendingTowerOnSite.GetTroops(); for (int i = 0; i < towerCost; i++) { Destroy(paymentTroops[i].gameObject); } pendingTowerOnSite.CreateTower(); Destroy(newTowerPicture); pendingTowerOnSite.GetComponent <SpriteRenderer>().enabled = false; //Un hightlight pendingTowerOnSite = null; potentialMove = null; }
// ################ UPDATE METHODS ################ void Update() { if (!gameOver) { //---- PENDING MOVE becomes PENDING TOWER if (potentialMove && potentialMove.tag == "BuildSite" && !pendingTowerOnSite) { BuildSiteController site = potentialMove.GetComponent <BuildSiteController>(); if (site.CanBuild() && site.GetOwner() == BuildSiteController.Owner.Player && site.GetTroops().Count >= towerCost) { PendingTowerAt(site); } } //---- PENDING AND MOUSE DOWN ---- if ((potentialMove || pendingTowerOnSite) && Input.GetMouseButtonDown(0)) { Transform clickedObject = MouseHit().transform; if (potentialMove) { if (MouseDownOn("BuildSite")) { // Get controller BuildSiteController clickedSite = MouseHit().transform .GetComponent <BuildSiteController>(); if (clickedSite.transform != potentialMove) { MoveSuccess(clickedSite.transform); } else { MoveFailed(); } } } if (pendingTowerOnSite) { if (MouseDownOn("PlayerTower") && ParentSiteCtrl(clickedObject) == pendingTowerOnSite) { PendingTowerSuccess(); } else { PendingTowerFail(); } } } //---- PENDING AND MOUSE UP ---- else if ((potentialMove || pendingTowerOnSite) && Input.GetMouseButtonUp(0)) { Transform upedObject = MouseHit().transform; if (potentialMove) { if (MouseUpOn("BuildSite") && upedObject != potentialMove) //If upedObject != potentialMove { MoveSuccess(MouseHit().transform); } else if (MouseUpOnNothing() || upedObject != potentialMove) { MoveFailed(); } } if (pendingTowerOnSite) { if (MouseUpOn("PlayerTower") && ParentSiteCtrl(upedObject) == pendingTowerOnSite) { PendingTowerSuccess(); } else if (MouseUpOnNothing() || ParentSiteCtrl(upedObject) != pendingTowerOnSite) { PendingTowerFail(); } } } //---- BUILD SITE CLICKED ---- else if (MouseDownOn("BuildSite")) { BuildSiteController clickedSite = MouseHit().transform.GetComponent <BuildSiteController>(); if (clickedSite.GetOwner() == BuildSiteController.Owner.Player) //If friendly troops on site { PotentialMoveFrom(clickedSite.transform); GetComponent <AudioSource>().Play(); } if (clickedSite.CanBuild()) //If site empty { if (clickedSite.GetTroops().Count >= towerCost && clickedSite.GetOwner() == BuildSiteController.Owner.Player) { PendingTowerAt(clickedSite); GetComponent <AudioSource>().Play(); } } } //---- MOVE ALL CLICKED ---- else if (MouseDownOn("MoveAll") && aiBrain.GetPlayerSites().Count > 0) { PotentialMoveFrom(MouseHit().transform); GetComponent <AudioSource>().Play(); } //---- LINE ---- if (Input.GetMouseButtonUp(0)) //if line, destroy { if (newLine != null) { Destroy(newLine); } } //---- DRAG ---- if (Input.GetMouseButton(0) && newLine) //line follow mouse { Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition); newLine.GetComponent <LineRenderer>().SetPosition(1, pos); } } }