Exemplo n.º 1
0
        }          // 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
            }
        }
Exemplo n.º 2
0
        // 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);
        }