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); }