Пример #1
0
        /// <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);
                }
            }
        }