/// <summary> /// Hanterar navigation i garagevyn. ShowGarage kallar vidare på DrawLayout, VehicleInfo, ShowSearchResult och Search /// </summary> /// <param name="name"></param> static void ShowGarage(string name) { Console.Clear(); //pos: Vilken parkering som är fokuserad int pos = 1; //Antal parkeringsplatser int l = gh.GetParkingspots().Length; while (true) { Console.SetCursorPosition(0, 0); Console.WriteLine(name); Console.WriteLine("Parked vehicles:"); ClearLine(); //Anpassar indraget efter hur många parkeringar som existerar int left = Console.CursorLeft + l * 4; int top = Console.CursorTop; if (left > Console.WindowWidth / 2) { left = 1; } ClearLine(); //Skriver ut sökresultaten ShowSearchResult(gh.searchQuery); //Rita ut Layouten på garaget DrawLayout(pos); //Skriv ut info om fokuserad parkering VehicleInfo(pos); //Navigation ConsoleKeyInfo keyInfo = Console.ReadKey(); if (keyInfo.Key == ConsoleKey.UpArrow || keyInfo.Key == ConsoleKey.DownArrow) // Navigera upp/ned { if (pos >= 1 && pos <= l / 2) { pos += l / 2; } else if (pos >= l / 2 && pos <= l) { pos -= l / 2; } } else if (keyInfo.Key == ConsoleKey.LeftArrow) //Navigera vänster { if (pos > 1 && pos <= l / 2 || pos > (l / 2) + 1 && pos <= l) { pos--; } else if (pos == 1) { pos = l / 2; } else if (pos == (l / 2) + 1) { pos = l; } } else if (keyInfo.Key == ConsoleKey.RightArrow) //Navigera höger { if (pos >= 1 && pos < l / 2 || pos > l / 2 && pos < l) { pos++; } else if (pos == l / 2) { pos = 1; } else if (pos == l) { pos = (l / 2) + 1; } } else if (keyInfo.Key == ConsoleKey.Escape) //Backa { return; } else if (keyInfo.Key == ConsoleKey.Enter) //Interagera { //Kör användaren ett fordon? if (gh.SelectedVehicle != null) { //Är vald parkering tom? if (gh.GetVehicle(pos) == null) { Console.WriteLine("Park your vehicle in spot #{0}? (Y/N)", pos); //Kolla om användaren vill parkera if (Console.ReadLine()[0].ToString().ToUpper() == "Y") { //Parkera fordonet gh.Park(pos, gh.SelectedVehicle); //Nollställ användarens fordon gh.SelectedVehicle = null; } //Börja om loopen continue; } else { Console.WriteLine("You need to park your current vehicle before leaving with another!"); } } //Kör användaren ej? else if (gh.SelectedVehicle == null) { //Innehåller fokuserad parkering ett fordon? if (gh.GetVehicle(pos) != null) { Console.WriteLine("Do you want to take the {0} for a drive? (Y/N)", gh.GetVehicle(pos).Name); //Vill användaren köra fordonet? if (Console.ReadLine()[0].ToString().ToUpper() == "Y") { gh.SelectedVehicle = gh.Unpark(pos); //Backa ut från parkeringen } continue; //Börja om loopen } else { Console.WriteLine("You need a vehicle before you can park!"); } } Console.ReadKey(); } else if (keyInfo.Key == ConsoleKey.Backspace || char.IsLetter(keyInfo.KeyChar)) //Updatera sökfras { gh.Search(keyInfo); } } }