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(); }
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); }
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(); }
static void LoopTest(Panel testPanel, CageManager testManager) { RequestGenerator(testPanel); AssignElevator(testManager); MoveElevators(testManager); CleanUpQueue(); }
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); }
// 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); }
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!"); }
// 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); } } }
//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(); }
// 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(); } } } } } }
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."); } } }