} // fine metodo TroopsW_Data_correction // controllo DEGLI STATI lista elicotteri // controllo LO STATO DELL'HANGAR // CHE PUO' ESSERE PIENO, VUOTO O IN UNO STATO INTERMEDIO public override void CheckState() { // rimuovo gli leementi inefficienti o non richiesti ElicotteriList.RemoveAll(x => x.IsEfficient == false); // rimuovo gli elementi inefficienti ElicotteriList.RemoveAll(x => x.isRequiredForOP == false); // rimuovo gli elementi non required int eliHangar = this.EliInHangar(); // elicotteri flaggati sul ponte richiesti per op efficienti // che non hanno riservato uno spot, che non sia voltante, che non abbia uno spot assegnato o riservato int eliHasSpotorFly = this.ElicotteriList.FindAll(x => (x.PosEli == true || x.IsFlying == true || x.hasSpotReserved == true)).Count; int toteli = this.ElicotteriList.Count; int eliHangarUsable = toteli - eliHasSpotorFly; if (eliHangar == 0) // se gli elicotteri in hangar sono 0 { this.Stato = StatusManager.Empty; // lo stato è vuoto, l'hangar non contiene elicotteri efficienti this.Action = ActionManager.ReadyToReceive; // l'hangar è pronto a ricevere } if ((eliHangar > 0) && (eliHasSpotorFly == 0)) //tutti gli eli sono in hangar se il numero di quelli che vola o è sullo spot è 0 { this.Stato = StatusManager.Full; // lo stato risulta pieno this.Action = ActionManager.ReadyToSend; // l'hangar puo' solo inviare elicotteri } if ((eliHangar > 0) && (eliHasSpotorFly > 0)) // se eli in hangar non sono tutto ma piu' di 0 { this.Stato = StatusManager.CanAll; // lo stato è promiscuo, l'hangar non è pieno o vuoto this.Action = ActionManager.ReadyToSendAndReceive; // è possibile qualcunque azione di invio o ricezione sul ponte } }
// determina l'inserimento di un nuovo elicottero nella lista public void InsertElementEli(ClockTimer time, int numEli, string id, int cat, float fuel, int troops, int cargo, int maxToLoad, int offLoadWg, bool running, bool bladeSprd, bool isEff, bool initialPos, bool isFly, float fuelC) { // creazione del nuovo elicottero con valori inizializzati Elicottero eli = new Elicottero(time, numEli, id, cat, fuel, troops, cargo, maxToLoad, offLoadWg, running, bladeSprd, isEff, initialPos, isFly, fuelC); // creazione del nuovo elicottero con valori inizializzati // inserisco l'elemento creato nella lista ElicotteriList.Insert((numEli), eli); }