public void Insert(PassengerAircraft aircraft, byte columnNumber = 0) { SqlMidlandsFly.Instance.AddCommand(InsertCmd(aircraft)); SqlStage.Instance.Insert(aircraft.RegNumber); SqlEmployees.Instance.Insert(EmployeeType.Cabin_Crew, aircraft, aircraft.CabinCrew); SqlEmployees.Instance.Insert(EmployeeType.Flight_Deck, aircraft, aircraft.FlightCrew); SqlEmployees.Instance.Insert(EmployeeType.Ground_Crew, aircraft, number: aircraft.GroundCrew); }
public void InsertPassenger(byte columnNumber = 0) { PassengerAircraft aircraft = PassengerAircraft.CreateInstance(); aircraft.FlyHours = (uint)random.Next(0, 50000); aircraft.LastMaintenance = (uint)(aircraft.FlyHours - random.Next(0, 250)); aircraft.Capacity_seating = (ushort)(random.Next(4, 853)); Instance.Insert(aircraft); }
public SqlCommand InsertCmd(PassengerAircraft aircraft) { string text; text = String.Format("INSERT INTO {0} VALUES('{1}',{2},{3},{4},{5});", SqlMidlandsFly.Instance.Table_Passenger.Name, aircraft.RegNumber, aircraft.FlyHours, aircraft.LastMaintenance, aircraft.Capacity_seating, "SYSDATETIME()"); return(new SqlCommand(text)); }
/// <summary> /// Load the plane, when it's done, change the state /// </summary> /// <param name="aircraft"></param> public override void Do(Aircraft aircraft) { PassengerAircraft passAircraft = (PassengerAircraft)aircraft; if (passAircraft.LoadingTime == 0) { ChangeState(passAircraft); } else { passAircraft.LoadingTime--; } }
/// <summary> /// Fill the aircraft with passenger or a positionnable client (fire,obserber,alert) /// </summary> /// <param name="aircraft"></param> public override void Do(Aircraft aircraft) { //Valide que le aircraft est de type passager if (aircraft.IsPassengerAircraft()) { PassengerAircraft passAircraft = (PassengerAircraft)aircraft; //parcours tous les clients de l'aeroport for (int i = 0; i < passAircraft.airport.Clients.Count; i++) { //verifie que le client est un client de type aeroport if (passAircraft.airport.Clients[i] is AirportClient) { AirportClient airClient = (AirportClient)passAircraft.airport.Clients[i]; //Set la destination de l'avion if (passAircraft.CurrentCapacity == 0) { passAircraft.destinationX = airClient.Destination.X; passAircraft.destinationY = airClient.Destination.Y; } //Verifie si la destionation de l'avion est la meme que la destion du client if (passAircraft.destinationX == airClient.Destination.X && passAircraft.destinationY == airClient.Destination.Y) { //Si l'avion est plein, changer l'etat if (passAircraft.MaxCapacity - passAircraft.CurrentCapacity == 0) { ChangeState(passAircraft); } //remplir l'avion else { if (airClient.Amount > (passAircraft.MaxCapacity - passAircraft.CurrentCapacity)) { airClient.Amount -= (passAircraft.MaxCapacity - passAircraft.CurrentCapacity); passAircraft.CurrentCapacity += passAircraft.MaxCapacity - passAircraft.CurrentCapacity; } else { passAircraft.CurrentCapacity += airClient.Amount; passAircraft.airport.Clients.Remove(passAircraft.airport.Clients[i]); i--; } } } } } } else { //Si l'avion est de type positionnable RescueAircraft rescueAircraft = (RescueAircraft)aircraft; //Parcours la liste de client for (int i = 0; i < rescueAircraft.airport.Clients.Count; i++) { //Verifie que le client est de type positionnable if (rescueAircraft.airport.Clients[i] is PositionableClient) { PositionableClient posClient = (PositionableClient)rescueAircraft.airport.Clients[i]; //Si le client est du meme type que l'avion qui peut le prendre en charger,faire decoller l'avion et retirer le client de la liste de client if ((posClient is Fire && rescueAircraft is WaterBomber) || (posClient is Observer && rescueAircraft is ObserverPlane) || (posClient is RescueTeam && rescueAircraft is RescueHelicopter)) { rescueAircraft.destinationX = posClient.PosX; rescueAircraft.destinationY = posClient.PosY; rescueAircraft.client = posClient; ChangeState(rescueAircraft); i = rescueAircraft.airport.Clients.Count; } } } } }