/// <summary> /// checks if the bot has enough money and is allowed to spawn ship. /// </summary> /// <param name="spawner"> the unit number corresponding to the desired ship to spawn</param> /// <returns>do you have enough money?</returns> public bool checkmoney(int spawner) { bool output = false; GameObject temp = unitcontrol.getshipbynumber(actualshiptobuy); if (temp) { int pointstodeploy = temp.GetComponent <_Ship>().PointsToDeploy; if (pointstodeploy <= money) { output = true; } else { output = false; } int maxships = UnitMovementcommandcontroller.getmaxshipnumbers(); int currentships = unitcontrol.teammembersout(team).Count; if (currentships >= (maxships - 1)) { output = false; } if ((crosslevelvar.campaign == false || (crosslevelvar.campaign == true && crosslevelvar.campaignlevel.objective != MainMenuCampaignControlScript.eMissionObjective.Survive)) && unitcontrol.checkiffactiondead(team) == true) { output = false; } if (output) { money -= pointstodeploy; } } return(output); }
/// <summary> /// Check if you have enough money to spawn the desired ship. /// </summary> /// <param name="money">money existing in bank</param> /// <param name="spawner">ship to spawn cost</param> /// <returns></returns> public bool checkmoney(int money, int spawner) { bool output = false; int pointstodeploy = unitcon.getshipbynumber(spawner).GetComponent <_Ship>().PointsToDeploy; if (pointstodeploy <= money) { output = true; } else { output = false; } int maxships = UnitMovementcommandcontroller.getmaxshipnumbers(); int currentships = unitcon.teammembersout(unitcon.team).Count; if (currentships >= (maxships - 1)) { output = false; } if (unitcon.running == false) { output = false; } if (output) { unitcon.takemoney(pointstodeploy); } if (unitcon.checkiffactiondead(unitcon.team) == true) { output = false; } return(output); }
/// <summary> // called every second to update the AIs orders to adapt to the situation. /// <summary> public void GiveOrderwait(int waittime) { if (TrueSyncManager.Time > 0 && randominst != null) { ships.Clear(); ships = unitcontrol.teammembersout(team); List <TSTransform> temp = unitcontrol.targetsout(team); List <GameObject> removableships = new List <GameObject>(); List <TSTransform> enemyremovable = new List <TSTransform>(); foreach (GameObject ship in ships) { if (ship == null || ship.gameObject == null) { removableships.Add(ship); } } foreach (GameObject remov in removableships) { ships.Remove(remov); } foreach (TSTransform ship in temp) { if (ship == null || ship.gameObject == null) { enemyremovable.Add(ship); } } foreach (TSTransform remov in enemyremovable) { temp.Remove(remov); } debugmaxcount = ships.Count.ToString() + " out of " + UnitMovementcommandcontroller.getmaxshipnumbers().ToString(); if (startpos == new TSVector(0, 0, 0) && ships.Count > 0) { startpos = ships[0].GetComponent <TSTransform>().position + new TSVector(1, 0, 0); } Target = getclosesttarget(); if (((ismission == false && ships.Count > 0) || (crosslevelvar.campaign == true && crosslevelvar.campaignlevel.objective == MainMenuCampaignControlScript.eMissionObjective.Survive)) && unitcontrol) { BuyShip(); } if (temp.Count != 0) { enemyships = temp.ToArray(); } if (ships != null && ships.Count != 0 && ships.Count > 4) { state = AIstate.attacking; } if (ships != null && ships.Count != 0 && ships.Count <= 3) { state = AIstate.retreating; } if (ships != null && ships.Count != 0 && ships.Count > 2 && ships.Count < 4) { state = AIstate.maintain; } if (ships != null && ships.Count != 0 && state == AIstate.retreating && TSVector.Distance(ships[0].GetComponent <TSTransform>().position, startpos) < 1000) { state = AIstate.holding; } if (ships != null && ships != null && ships.Count != 0 && ships[0] && Target != null && ships[0].gameObject != null && state == AIstate.holding && TSVector.Distance(ships[0].GetComponent <TSTransform>().position, Target.GetComponent <TSTransform>().position) < 1000) { state = AIstate.attacking; } if (ships != null && ships.Count != 0 && state == AIstate.maintain && ships.Count > 0 && TSVector.Distance(ships[0].GetComponent <TSTransform>().position, startpos) < 1000) { state = AIstate.retreating; } if (ships != null && ships.Count != 0 && state == AIstate.maintain && ships.Count > 0 && TSVector.Distance(ships[0].GetComponent <TSTransform>().position, startpos) > 1000) { state = AIstate.attacking; } if (ismission && timepassedactual > 30) { state = AIstate.attacking; } if (ismission && timepassedactual < 30) { state = AIstate.holding; } if (ismission && unitcontrol.crosslevelholder.campaignlevel.objective == MainMenuCampaignControlScript.eMissionObjective.Survive) { state = AIstate.attacking; } int i = 0; foreach (GameObject ship in ships) { if (Target != null && ship.gameObject != null && state == AIstate.attacking) { ship.GetComponent <_Ship>().asignMoveOrder(Target.GetComponent <TSTransform>().position, Target.gameObject, RightHand_triggerInstantOrder.calculate_average_speed(ships.ToArray()), false); } if (ship.gameObject != null && state == AIstate.retreating) { ship.GetComponent <_Ship>().asignMoveOrder(TargetPosition(i, startpos, ships.Count), null, RightHand_triggerInstantOrder.calculate_average_speed(ships.ToArray()), false); } if (ship.gameObject != null && state == AIstate.holding) { _Ship shipscript = ship.GetComponent <_Ship>(); if (shipscript.HullType == eHullType.Light) { shipscript.asignMoveOrder(startpos, null, RightHand_triggerInstantOrder.calculate_average_speed(ships.ToArray()), false); } else { shipscript.asignMoveOrder(ship.GetComponent <TSTransform>().position, null, RightHand_triggerInstantOrder.calculate_average_speed(ships.ToArray()), false); } } i++; } } }
/// <summary> /// Repeats every second to update the minimap. /// </summary> void Rep() { if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex != 0 && UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex != 1) { if (Blue) { // give the player an indicator or how many ships each color owns and the player name assosiated with those ships. if (Green.gameObject.GetActive() == true) { Green.text = getplayername(LobbyScreenController.getteam1(), 0) + "Green: " + unitcontrol.teammembersout(_Ship.eShipColor.Green).Count + " ships"; } if (Blue.gameObject.GetActive() == true) { Blue.text = getplayername(LobbyScreenController.getteam1(), 1) + "Blue: " + unitcontrol.teammembersout(_Ship.eShipColor.Blue).Count + " ships"; } if (White.gameObject.GetActive() == true) { White.text = getplayername(LobbyScreenController.getteam1(), 2) + "White: " + unitcontrol.teammembersout(_Ship.eShipColor.White).Count + " ships"; } if (Yellow.gameObject.GetActive() == true) { Yellow.text = getplayername(LobbyScreenController.getteam2(), 0) + "Yellow: " + unitcontrol.teammembersout(_Ship.eShipColor.Yellow).Count + " ships"; } if (Grey.gameObject.GetActive() == true) { Grey.text = getplayername(LobbyScreenController.getteam2(), 1) + "Grey: " + unitcontrol.teammembersout(_Ship.eShipColor.Grey).Count + " ships"; } if (Red.gameObject.GetActive() == true) { Red.text = getplayername(LobbyScreenController.getteam2(), 2) + "Red: " + unitcontrol.teammembersout(_Ship.eShipColor.Red).Count + " ships"; } } if (unitcontrol == null) { unitcontrol = GameObject.Find("Controllers").GetComponent <UnitMovementcommandcontroller>(); } // moves unused blips out of view. foreach (bliplinecontroller blip in allyblips) { blip.transform.localPosition = new Vector3(100000, 100000, 100000); } foreach (bliplinecontroller blip in enemyblips) { blip.transform.localPosition = new Vector3(100000, 100000, 100000); } foreach (bliplinecontroller blip in allyblips) { blip.targetgam = new Vector3(0, 0, 0); } List <GameObject> temp = unitcontrol.teammembersout(unitcontrol.team); if (temp != null && Ships_Left_Text != null) { Kills_Text.text = " ships : " + temp.Count.ToString() + " out of " + UnitMovementcommandcontroller.getmaxshipnumbers().ToString(); List <TSTransform> enemies = unitcontrol.targetsout(unitcontrol.team); for (int i = 0; i < enemies.Count; i++) { if (enemyblips[i] != null && enemyblips[i].gameObject != null && enemies[i] != null && enemies[i].gameObject != null) { enemyblips[i].transform.localPosition = new Vector3(0, enemies[i].transform.localPosition.x * 0.35f, enemies[i].transform.localPosition.z * 0.35f); } } } if (Time_Left_Text && ismission == false) { Time_Left_Text.text = unitcontrol.gettimeleft(); } else if (AIController && AIController.timepassedactual < 30) { Time_Left_Text.text = "Time til attack: " + (30 - TSMath.Round(AIController.timepassedactual)).ToString(); } else if (unitcontrol.crosslevelholder.campaign == true && unitcontrol.crosslevelholder.campaignlevel.objective == MainMenuCampaignControlScript.eMissionObjective.Survive) { Time_Left_Text.text = "Survive for: " + unitcontrol.gettimeleft(); } else if (Time_Left_Text) { Time_Left_Text.text = unitcontrol.gettimeleft(); } List <TSTransform> allies = unitcontrol.alliesout(); for (int i = 0; i < allies.Count; i++) { if (allyblip && allyblips[i].gameObject != null) { // asigns blip positions allyblips[i].source = allies[i]; allyblips[i].transform.localPosition = new Vector3(0, allies[i].transform.localPosition.x * 0.35f, allies[i].transform.localPosition.z * 0.35f); Vector3 tempa = allies[i].shipscript.fac.localtarget.ToVector() * 0.35f; allyblips[i].targetgam = new Vector3(0, tempa.x, tempa.z); } } if (Objectsholder == null) { Objectsholder = GameObject.Find("Objects"); } if (Cameratracking == null) { if (GameObject.Find("Camera (eye)") != null) { Cameratracking = GameObject.Find("Camera (eye)"); } else { Cameratracking = GameObject.Find("CenterEyeAnchor"); } } Vector3 playerloc = Objectsholder.transform.InverseTransformPoint(Cameratracking.transform.position); playerblip.transform.localPosition = new Vector3(0, playerloc.x * 0.35f, playerloc.z * 0.35f); } }