Esempio n. 1
0
 static void Scenario1(Panel myPanel, CageManager myCageManager)
 {
     myCageManager.colList[1].cages[0].curFloor = 20;
     myCageManager.colList[1].cages[1].curFloor = 3;
     myCageManager.colList[1].cages[2].curFloor = 13;
     myCageManager.colList[1].cages[3].curFloor = 15;
     myCageManager.colList[1].cages[4].curFloor = 6;
     requestQueue.Add(new Request("Destination", 0, 5, "Down"));
     requestQueue[0].assignment = "Assigned";
     myCageManager.colList[1].cages[0].destinationRequests.Add(requestQueue[0]);
     requestQueue.Add(new Request("Destination", 0, 15, "Up"));
     requestQueue[1].assignment = "Assigned";
     myCageManager.colList[1].cages[1].destinationRequests.Add(requestQueue[1]);
     requestQueue.Add(new Request("Destination", 0, 1, "Down"));
     requestQueue[2].assignment = "Assigned";
     myCageManager.colList[1].cages[2].destinationRequests.Add(requestQueue[2]);
     requestQueue.Add(new Request("Destination", 0, 2, "Down"));
     requestQueue[3].assignment = "Assigned";
     myCageManager.colList[1].cages[3].destinationRequests.Add(requestQueue[3]);
     requestQueue.Add(new Request("Destination", 0, 1, "Down"));
     requestQueue[4].assignment = "Assigned";
     myCageManager.colList[1].cages[4].destinationRequests.Add(requestQueue[4]);
     LoopTest(myPanel, myCageManager);
     requestQueue.Add(new Request("Pickup", 1, 20, "Up"));
     while (requestQueue.Count > 0)
     {
         LoopTest(myPanel, myCageManager);
     }
     myCageManager.GetCageStatus();
 }
Esempio n. 2
0
        public void buildCage()
        {
            if (resources.money < cagePrice)
            {
                alertManager.ShowMessage("Not enough money to purchase!");
                return;
            }

            if (cages.Count >= maxCages)
            {
                alertManager.ShowMessage("Maximum number of cages for this level reached.");
                return;
            }

            resources.money -= cagePrice;

            numberCages++;
            CageManager lastCageMgr = cages [cages.Count - 1];

            int x = (int)lastCageMgr.gameObject.transform.position.x + 2;
            int y = (int)lastCageMgr.gameObject.transform.position.y;

            GameObject c = Instantiate(cage, new Vector3(x, y, -.1f), Quaternion.identity) as GameObject;

            c.transform.SetParent(boardHolder);
            CageManager cm = c.GetComponent <CageManager>();

            cages.Add(cm);

            string msg = string.Format("Purchased Cage for ${0}", cagePrice);

            notifManager.ShowNotice(msg);
        }
Esempio n. 3
0
 static void Scenario4(Panel myPanel, CageManager myCageManager)
 {
     myCageManager.colList[0].cages[0].curFloor  = -4;
     myCageManager.colList[0].cages[1].curFloor  = 1;
     myCageManager.colList[0].cages[2].curFloor  = -3;
     myCageManager.colList[0].cages[3].curFloor  = -6;
     myCageManager.colList[0].cages[4].curFloor  = -1;
     myCageManager.colList[0].cages[2].status    = "Loading";
     myCageManager.colList[0].cages[3].status    = "Loading";
     myCageManager.colList[0].cages[4].status    = "Loading";
     myCageManager.colList[0].cages[2].direction = "Down";
     myCageManager.colList[0].cages[3].direction = "Up";
     myCageManager.colList[0].cages[4].direction = "Down";
     requestQueue.Add(new Request("Destination", 0, -5, "Down"));
     requestQueue[0].assignment = "Assigned";
     myCageManager.colList[0].cages[2].destinationRequests.Add(requestQueue[0]);
     requestQueue.Add(new Request("Destination", 0, 1, "Up"));
     requestQueue[1].assignment = "Assigned";
     myCageManager.colList[0].cages[3].destinationRequests.Add(requestQueue[1]);
     requestQueue.Add(new Request("Destination", 0, -6, "Down"));
     requestQueue[2].assignment = "Assigned";
     myCageManager.colList[0].cages[4].destinationRequests.Add(requestQueue[2]);
     LoopTest(myPanel, myCageManager);
     requestQueue.Add(new Request("Pickup", -3, 1, "Up"));
     while (requestQueue.Count > 0)
     {
         LoopTest(myPanel, myCageManager);
     }
     myCageManager.GetCageStatus();
 }
Esempio n. 4
0
 static void LoopTest(Panel testPanel, CageManager testManager)
 {
     RequestGenerator(testPanel);
     AssignElevator(testManager);
     MoveElevators(testManager);
     CleanUpQueue();
 }
Esempio n. 5
0
        public void AddMonster()
        {
            HideActionPanel();

            if (resources.money < monsterPrice)
            {
                alertManager.ShowMessage("You need more money to purchase a Monster.");
                return;
            }

            if (cages.Count <= monsterManagers.Count)
            {
                alertManager.ShowMessage("You need an empty cage before purchasing a new Monster.");
                return;
            }

            // find 1st empty cage
            CageManager emptyCageMgr = null;

            foreach (CageManager cm in cages)
            {
                if (cm.monster == null)
                {
                    emptyCageMgr = cm;
                    break;
                }
            }

            if (emptyCageMgr == null)
            {
                alertManager.ShowMessage("No empty cages available!");
                return;
            }

            // add monster to cage
            numberMonsters++;

            GameObject c = emptyCageMgr.gameObject;

            int x = (int)emptyCageMgr.gameObject.transform.position.x;
            int y = (int)emptyCageMgr.gameObject.transform.position.y;

            int        randomIndex   = Random.Range(0, (monsters.Length - 1));
            GameObject randomMonster = monsters[randomIndex];
            GameObject m             = Instantiate(randomMonster, new Vector3(x, y, -.05f), Quaternion.identity) as GameObject;

            m.transform.SetParent(c.transform);
            MonsterManager mm = m.GetComponent <MonsterManager>();

            mm.cageManager = emptyCageMgr.GetComponent <CageManager> ();
            monsterManagers.Add(mm);

            emptyCageMgr.monster = m;             // bookkeeping

            string msg = string.Format("Purchased 1 Monster for ${0}", monsterPrice);

            notifManager.ShowNotice(msg);
        }
Esempio n. 6
0
    // Methods //
    public void RequestElevator(int floorNumber, CageManager cageManager)
    {
        foreach (FloorButton button in floorButtons)
        {
            if (button.id == floorNumber)
            {
                button.status = "Active";
            }
        }

        Column myColumn = cageManager.GetColumn(1, floorNumber);

        Console.WriteLine("Floor requested. Please proceed to column " + myColumn.id);
    }
Esempio n. 7
0
        public void EndExperiment()
        {
            // find monster's home cage
            CageManager  cage  = boardManager.GetCages().Find(x => x.monster == gameObject);
            TableManager table = boardManager.GetTables().Find(x => x.monster == gameObject);

            Vector3 newPos = new Vector3(cage.gameObject.transform.position.x, cage.gameObject.transform.position.y, -.05f);

            gameObject.transform.position = newPos;

            table.monster = null;

            notifManager.ShowNotice("Experiment Complete!");
        }
Esempio n. 8
0
 // Assign each request to an elevator //
 static void AssignElevator(CageManager myCageManager)
 {
     foreach (Request request in requestQueue)
     {
         if (request.assignment == "Unassigned")
         {
             Column myColumn = myCageManager.GetColumn(request.pickup, request.destination);
             Console.WriteLine("Column " + myColumn.id + " is selected.");
             Cage myCage = myCageManager.GetCage(request.direction, myColumn.id - 1, request.pickup);
             request.assignment = "Assigned";
             myCage.pickupRequests.Add(request);
             Console.WriteLine("Cage " + myCage.id + " receives request for floor " + myCage.pickupRequests[0].pickup);
             myCage.pickupRequests.OrderBy(o => o.pickup);
         }
     }
 }
Esempio n. 9
0
        //Sets up the outer walls and floor (background) of the game board.
        void BoardSetup()
        {
            for (int y = 0; y < rows * 2; y = y + 2)
            {
                for (int x = 0; x < columns * 2; x = x + 2)
                {
                    GameObject instance = Instantiate(floorTile, new Vector3(x, y, 0f), Quaternion.identity) as GameObject;
                    instance.transform.SetParent(boardHolder);

                    // add cages to first few tiles
                    if (cages.Count < numberCages)
                    {
                        GameObject c = Instantiate(cage, new Vector3(x, y, -.1f), Quaternion.identity) as GameObject;
                        c.transform.SetParent(boardHolder);

                        // add monster to cage
                        CageManager cm = c.GetComponent <CageManager>();
                        if (monsterManagers.Count < numberMonsters)
                        {
                            int        randomIndex   = Random.Range(0, (monsters.Length - 1));
                            GameObject randomMonster = monsters[randomIndex];
                            GameObject m             = Instantiate(randomMonster, new Vector3(x, y, -.05f), Quaternion.identity) as GameObject;
                            m.transform.SetParent(c.transform);
                            MonsterManager mm = m.GetComponent <MonsterManager>();
                            mm.cageManager = cm;
                            monsterManagers.Add(mm);
                            cm.monster = m;                             // bookkeeping
                        }

                        // add cage to list
                        cages.Add(cm);
                    }
                }
            }

            HideActionPanel();
        }
Esempio n. 10
0
 // Move all elevators towards next destination or pickup
 static void MoveElevators(CageManager myCageManager)
 {
     if (Configuration.totalBasements > 0)
     {
         foreach (Cage cage in myCageManager.colList[0].cages)
         {
             if (cage.pickupRequests.Count != 0)
             {
                 if (cage.curFloor != cage.pickupRequests[0].pickup && cage.curFloor > cage.pickupRequests[0].pickup)
                 {
                     cage.MoveDown();
                 }
                 else if (cage.curFloor != cage.pickupRequests[0].pickup && cage.curFloor < cage.pickupRequests[0].pickup)
                 {
                     cage.MoveUp();
                 }
                 else if (cage.curFloor == cage.pickupRequests[0].pickup)
                 {
                     cage.OpenDoors();
                     cage.pickupRequests[0].status = "Destination";
                     cage.CleanUpRequests();
                 }
             }
             if (cage.pickupRequests.Count == 0 && cage.destinationRequests.Count != 0)
             {
                 if (cage.curFloor != cage.destinationRequests[0].destination && cage.curFloor > cage.destinationRequests[0].destination)
                 {
                     cage.MoveDown();
                 }
                 if (cage.curFloor != cage.destinationRequests[0].destination && cage.curFloor < cage.destinationRequests[0].destination)
                 {
                     cage.MoveUp();
                 }
                 else if (cage.curFloor == cage.destinationRequests[0].destination)
                 {
                     cage.OpenDoors();
                     cage.destinationRequests[0].status = "Completed";
                     cage.CleanUpRequests();
                 }
             }
         }
         for (int x = 1; x < myCageManager.colList.Count; x++)
         {
             foreach (Cage cage in myCageManager.colList[x].cages)
             {
                 if (cage.pickupRequests.Count != 0)
                 {
                     if (cage.curFloor != cage.pickupRequests[0].pickup && cage.curFloor > cage.pickupRequests[0].pickup)
                     {
                         cage.MoveDown();
                     }
                     else if (cage.curFloor != cage.pickupRequests[0].pickup && cage.curFloor < cage.pickupRequests[0].pickup)
                     {
                         cage.MoveUp();
                     }
                     else if (cage.curFloor == cage.pickupRequests[0].pickup)
                     {
                         cage.OpenDoors();
                         cage.pickupRequests[0].status = "Destination";
                         cage.CleanUpRequests();
                     }
                 }
                 if (cage.pickupRequests.Count == 0 && cage.destinationRequests.Count != 0)
                 {
                     if (cage.curFloor != cage.destinationRequests[0].destination && cage.curFloor > cage.destinationRequests[0].destination)
                     {
                         cage.MoveDown();
                     }
                     if (cage.curFloor != cage.destinationRequests[0].destination && cage.curFloor < cage.destinationRequests[0].destination)
                     {
                         cage.MoveUp();
                     }
                     else if (cage.curFloor == cage.destinationRequests[0].destination)
                     {
                         cage.OpenDoors();
                         cage.destinationRequests[0].status = "Completed";
                         cage.CleanUpRequests();
                     }
                 }
             }
         }
     }
     else
     {
         foreach (Column column in myCageManager.colList)
         {
             foreach (Cage cage in column.cages)
             {
                 if (cage.pickupRequests.Count != 0)
                 {
                     if (cage.curFloor != cage.pickupRequests[0].pickup && cage.curFloor > cage.pickupRequests[0].pickup)
                     {
                         cage.MoveDown();
                     }
                     else if (cage.curFloor != cage.pickupRequests[0].pickup && cage.curFloor < cage.pickupRequests[0].pickup)
                     {
                         cage.MoveUp();
                     }
                     else if (cage.curFloor == cage.pickupRequests[0].pickup)
                     {
                         cage.OpenDoors();
                         cage.pickupRequests[0].status = "Destination";
                         cage.CleanUpRequests();
                     }
                 }
                 if (cage.pickupRequests.Count == 0 && cage.destinationRequests.Count != 0)
                 {
                     if (cage.curFloor != cage.destinationRequests[0].destination && cage.curFloor > cage.destinationRequests[0].destination)
                     {
                         cage.MoveDown();
                     }
                     if (cage.curFloor != cage.destinationRequests[0].destination && cage.curFloor < cage.destinationRequests[0].destination)
                     {
                         cage.MoveUp();
                     }
                     else if (cage.curFloor == cage.destinationRequests[0].destination)
                     {
                         cage.OpenDoors();
                         cage.destinationRequests[0].status = "Completed";
                         cage.CleanUpRequests();
                     }
                 }
             }
         }
     }
 }
Esempio n. 11
0
    static void Main(string[] args)
    {
        bool           useDemoConfig = true;
        ConsoleKeyInfo cki;

        do
        {
            Console.WriteLine("Use demo configuration? [y/n]");
            while (Console.KeyAvailable == false)
            {
                Thread.Sleep(250); // Loop until valid input is entered.
            }

            cki = Console.ReadKey(true);
            if (cki.Key != ConsoleKey.Y && cki.Key != ConsoleKey.N)
            {
                Console.WriteLine("You pressed the '{0}' key. Please make a valid selection.", cki.Key);
            }
            else if (cki.Key == ConsoleKey.N)
            {
                Configuration.Config();
                Configuration.GenerateFloors();
                CageManager userCageManager = new CageManager();
                Panel       userPanel       = new Panel();
                userCageManager.GetCageStatus();
                foreach (Column column in userCageManager.colList)
                {
                    string report = userCageManager.GetFloorsServed(column);
                    Console.WriteLine(report);
                }
                useDemoConfig = false;
                return;
            }
        } while(cki.Key != ConsoleKey.Y);

        // DEMO CONFIGURATION //
        if (useDemoConfig)
        {
            Configuration.batteryOn      = true;
            Configuration.totalColumns   = 4;
            Configuration.cagesPerColumn = 5;
            Configuration.totalFloors    = 60;
            Configuration.totalBasements = 6;

            // CONFIRM DEMO SETUP //
            Console.WriteLine("\n-------HARDWARE SIMULATION-------");
            Console.WriteLine($"\n{"Hardware",-17} {"Value",15}\n");
            Console.WriteLine($"{"Battery", -17} {"On", 15}");
            Console.WriteLine($"{"Total Columns", -17} {Configuration.totalColumns, 15}");
            Console.WriteLine($"{"Cages Per Column", -17} {Configuration.cagesPerColumn, 15}");
            Console.WriteLine($"{"Total Floors", -17} {Configuration.totalFloors, 15}");
            Console.WriteLine($"{"Total Basements", -17} {Configuration.totalBasements, 15}");
        }

        // INSTANTIATE FLOORS //
        Configuration.GenerateFloors();

        // INSTANTIATE CAGEMANAGER //
        CageManager myCageManager = new CageManager();

        // INSTANTIATE PANEL //
        Panel myPanel = new Panel();

        while (Configuration.batteryOn)
        {
            int selection = Configuration.GetIntInput("\nPlease select a scenario\n(1,2,3,4 or 5 to EXIT)\n", 0);
            if (selection == 1)
            {
                Scenario1(myPanel, myCageManager);
            }
            else if (selection == 2)
            {
                Scenario2(myPanel, myCageManager);
            }
            else if (selection == 3)
            {
                Scenario3(myPanel, myCageManager);
            }
            else if (selection == 4)
            {
                Scenario4(myPanel, myCageManager);
            }
            else if (selection == 5)
            {
                Configuration.batteryOn = false;
            }
            else
            {
                Console.WriteLine(selection + " is not a valid selection. Please make a valid selection.");
            }
        }
    }