private void LoadFile(string filePath, Boat[] arrayType)
        {
            string[] loadText = File.ReadAllLines($"{filePath}");

            for (int i = 0; i < loadText.Length; i++)
            {
                if (loadText[i] == "Empty" || string.IsNullOrEmpty(loadText[i]))
                {
                    arrayType[i] = null;
                }
                else
                {
                    string[] splitInfo = loadText[i].Split(';');
                    string   boatName  = splitInfo[2].ToUpper();

                    switch (boatName)
                    {
                    case "ROWBOAT":
                        RowBoat rowBoat = new RowBoat(Convert.ToInt32(splitInfo[0]), Convert.ToInt32(splitInfo[1]), splitInfo[2], splitInfo[3],
                                                      Convert.ToInt32(splitInfo[4]), Convert.ToInt32(splitInfo[5]), Convert.ToInt32(splitInfo[6]));
                        arrayType[i] = rowBoat;
                        break;

                    case "MOTORBOAT":
                        MotorBoat motorBoat = new MotorBoat(Convert.ToInt32(splitInfo[0]), Convert.ToInt32(splitInfo[1]), splitInfo[2], splitInfo[3],
                                                            Convert.ToInt32(splitInfo[4]), Convert.ToInt32(splitInfo[5]), Convert.ToInt32(splitInfo[6]));
                        arrayType[i] = motorBoat;
                        break;

                    case "SAILBOAT":
                        SailBoat sailBoat = new SailBoat(Convert.ToInt32(splitInfo[0]), Convert.ToInt32(splitInfo[1]), splitInfo[2], splitInfo[3],
                                                         Convert.ToInt32(splitInfo[4]), Convert.ToInt32(splitInfo[5]), Convert.ToInt32(splitInfo[6]));
                        arrayType[i] = sailBoat;
                        break;

                    case "CATAMARAN":
                        Catamaran catamaran = new Catamaran(Convert.ToInt32(splitInfo[0]), Convert.ToInt32(splitInfo[1]), splitInfo[2], splitInfo[3],
                                                            Convert.ToInt32(splitInfo[4]), Convert.ToInt32(splitInfo[5]), Convert.ToInt32(splitInfo[6]));
                        arrayType[i] = catamaran;
                        break;

                    default:
                        CargoShip cargoShip = new CargoShip(Convert.ToInt32(splitInfo[0]), Convert.ToInt32(splitInfo[1]), splitInfo[2], splitInfo[3],
                                                            Convert.ToInt32(splitInfo[4]), Convert.ToInt32(splitInfo[5]), Convert.ToInt32(splitInfo[6]));
                        arrayType[i] = cargoShip;
                        break;
                    }
                }
            }
        }
        private List <Boat> BoatGenerator(int thisMany)
        {
            List <Boat> newBoats = new List <Boat>();

            for (int i = 0; i < thisMany; i++)
            {
                int    thisType          = Rnd.Next(1, 5 + 1);
                string boatId            = null;
                bool   nameAlreadyExists = true;
                while (nameAlreadyExists)
                {
                    List <Boat> gatheredList = new List <Boat>();
                    gatheredList.AddRange(HarborAlpha);
                    gatheredList.AddRange(HarborBeta);
                    gatheredList.AddRange(SharedSpotAlpha);
                    gatheredList.AddRange(SharedSpotBeta);

                    var NameExists = gatheredList
                                     .Where(b => b != null)
                                     .GroupBy(b => b.IDNumber)
                                     .Select(b => b.First())
                                     .Select(b => $"{b.IDNumber[2]}{b.IDNumber[3]}{b.IDNumber[4]}")
                                     .ToList();

                    for (int j = 0; j < 3; j++)
                    {
                        char randomChar = (char)Rnd.Next('a', 'z');
                        boatId += randomChar.ToString().ToUpper();
                    }
                    nameAlreadyExists = NameExists.Contains(boatId);
                }
                switch (thisType)
                {
                case 1:
                    string  rbType          = "Rowboat";
                    int     rbWeight        = Rnd.Next(100, 300 + 1);
                    int     rbMaxSpeed      = Rnd.Next(0, 3 + 1);
                    int     rbMaxPassengers = Rnd.Next(1, 6 + 1);
                    RowBoat rowBoat         = new RowBoat(0, 0, rbType, $"R-{boatId}", rbWeight, rbMaxSpeed, rbMaxPassengers);
                    newBoats.Add(rowBoat);
                    break;

                case 2:
                    string    mbType     = "Motorboat";
                    int       mbWeight   = Rnd.Next(200, 3000 + 1);
                    int       mbMaxSpeed = Rnd.Next(0, 60 + 1);
                    int       mbAmtOfHP  = Rnd.Next(10, 1000 + 1);
                    MotorBoat motorBoat  = new MotorBoat(0, 0, mbType, $"M-{boatId}", mbWeight, mbMaxSpeed, mbAmtOfHP);
                    newBoats.Add(motorBoat);
                    break;

                case 3:
                    string   sbType     = "Sailboat";
                    int      sbWeight   = Rnd.Next(800, 6000 + 1);
                    int      sbMaxSpeed = Rnd.Next(0, 12 + 1);
                    int      sbLenght   = Rnd.Next(10, 60 + 1);
                    SailBoat sailBoat   = new SailBoat(0, 0, sbType, $"S-{boatId}", sbWeight, sbMaxSpeed, sbLenght);
                    newBoats.Add(sailBoat);
                    break;

                case 4:
                    string    csType       = "Cargoship";
                    int       csWeight     = Rnd.Next(3000, 20000 + 1);
                    int       csMaxSpeed   = Rnd.Next(0, 20 + 1);
                    int       csContainers = Rnd.Next(0, 500 + 1);
                    CargoShip cargoShip    = new CargoShip(0, 0, csType, $"L-{boatId}", csWeight, csMaxSpeed, csContainers);
                    newBoats.Add(cargoShip);
                    break;

                default:
                    string    cType      = "Catamaran";
                    int       cWeight    = Rnd.Next(1200, 8000 + 1);
                    int       cMaxSpeed  = Rnd.Next(0, 12 + 1);
                    int       cAmtOfBeds = Rnd.Next(1, 4 + 1);
                    Catamaran catamaran  = new Catamaran(0, 0, cType, $"K-{boatId}", cWeight, cMaxSpeed, cAmtOfBeds);
                    newBoats.Add(catamaran);
                    break;
                }
            }
            return(newBoats);
        }