Beispiel #1
0
    /// <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);
    }
Beispiel #3
0
    /// <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++;
            }
        }
    }
Beispiel #4
0
 /// <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);
     }
 }