// BOTTONE: viene accettato il peso delle truppe // viene creata la lista inserendo in essa le truppe richieste. // La lista verra poi gestita in modo da assegnare truppe ed elicotteri protected void OnButton1Released(object sender, EventArgs e) { if (TroopM.TroopList.Count == 0) // se la lista è vuota creala //inserimento soldati nella lista { int i; for (i = 0; i < _troop; i++) { Soldier _soldier = new Soldier((int)this.hscale1.Value); try{ TroopM.InsertElement(_soldier); // inserisco il dato truppa } catch { System.Console.WriteLine("ERRORE DI INSERIMENTO RECORD"); } } TroopM.SingleSoldierW = (int)this.hscale1.Value; // salvo il peso del soldato singolo winI.InsertSomeText("OPZIONI TRUPPE: effettuato l'inserimento di " + TroopM.TroopList.Count + " soldati del peso singolo di: " + TroopM.SingleSoldierW + "kg"); } else { winI.InsertSomeText("OPZIONI TRUPPE: lista truppe già creata, sostituisco con i nuovi dati"); foreach (Soldier sold in TroopM.TroopList) { sold.Weight = (int)this.hscale1.Value; // varia il perso di ogni soldato nella lista } winI.InsertSomeText("OPZIONI TRUPPE: nuovo peso inserito: " + this.hscale1.Value); } this.Hide(); MainWin.Sensitive = true; MainWin.CheckGreenFlags(); // check green flags }
// gli elicotteri decollano ed assumono la velocità di crociera indicata public void AllEliTakingOff(float speed) { foreach (Spot spot in this.Spotlist) // controllo che lo spot abbia un elicottero funzionanete a pale aperte e a motore acceso if (spot.Eli!=null && !spot.Eli.IsBlocked && spot.Eli.isREADYstatus && !spot.Eli.IsFlying) { // setto le flags spot.Eli.isApproaching = false; // setto l'elicottero non in apporch alla dest spot.Eli.IsFlying=true;// viene settata la flag di elicottero in volo spot.eliWhoReservd = null; // eli che ha effettuato la riserva spot.SpotOccupied = false; // lo spost non è piu' occupato spot.IsReservd = false; // fine riserva spot.Eli.SpotAssigned = null; // fine spot assegnato spot.Eli.hasSpotReserved = false; // l'eli ha lo spot riservato spot.Eli.isOnDestination = false; // resetto la var di destinazione spot.Eli.isREADYstatus = false; // reimposta lo stato di pronto al decollo su falso in quanto è deocllato spot.Eli.DirToGo = Elicottero.Direction.hp; // l'elicottero assume destinazione HP spot.Eli.EliSpeed = speed; // impost la velocità dell'elicottero a 1 // salvo le informazioni prima di liberare lo spot WinI.InsertEvent ( spot.Eli.current_time , " T/O SHIP ", spot.Eli.IdEli, spot.Eli.NumEli); WinI.InsertSomeText( " ELI " +spot.Eli.IdEli + " DECOLLA time: "+ spot.Eli.current_time.ToString() ); //---------------------------------------------------- spot.Eli = null; // libera l'elicottero elicottero assegnato spot } }
//---------------------------------------------------------------------------------- // assegnazione degli elicotteri assegnati agli spot // è necessario assegnare agli spot gli elicotteri che di default sono stati posizionati sugli spot public void EliAutoSpotAssign(SpotManager SpotM, InfoWindow winI, Spot.day_night DN) { // cambia automanticamente il numero di elicotteri assegnati sul ponte // la funzione assicura che il nuemero di eli è inferiore o uguale agli spot disponibili // e restituisce il numero di elicotteri da gestire per l'assegnazione automatica degli spot int manualAssign = this.ElisSpotAutoHangarChangeNumber(SpotM, winI); // una volta determinato il numero di elicotteri da assegnare procedo con l'assegnazione if (manualAssign > 0) // se il numero di assegnazioni è maggiore di 0 creo la finestra per le assegnazioni { foreach (Elicottero eli in this.ElicotteriList) { if (eli.PosEli) // se l'elicottero è posizionato sul ponte di default cerco di assegnarlo ad uno spot { Spot spot = SpotM.SpotToHostaCat(eli.CatEli, DN); if (spot != null) { winI.InsertSomeText("SIMULATOR: Spot trovato per assegnazione AUTOMATICA: " + spot.SpotPos); eli.DirToGo = Elicottero.Direction.hp; // direzione assegnata all'eli sul ponte holding point eli.SpotAssigned = spot; // spot assegnato eli.PosEli = true; // posizione elicottero sul ponte spot.IsReservd = true; // lo spot viene riservato spot.eliWhoReservd = eli; // l'elicottero che ha richiesto il reserve spot.Eli = eli; // assegno l'elicottero spot.SpotOccupied = true; // lo spot e' occupato } } } } } // fine metodo
//---------------------------------------------------------------------------------- //-- controllo eli in hangar e moviementazione sul ponte ------------------// // è necessario controllare se gli eli assegnati sugli spot sono superiori al // numero di spot effettivamente disponibile, in tal caso gli eli devono essere riassegnati public int ElisSpotAutoHangarChangeNumber(SpotManager SpotM, InfoWindow WinI) { int n = this.EliOnDEck(); // numero di elicotteri pianificati sul ponte int k = SpotM.NumSpotEfficient(); // numero di spot efficienti presente int diff = (n - k); // qundo positivo indica il numero di elicotteri da ridurre int z = 0; // variabile indice int i = 0; // variabile indice // se il numero di elicotteri è superiore al nuemro di spot efficienti // allora serve ridurre il numero di elicottero sullo spot if (diff > 0) // se la diff è positiva il numero di eli assegnati al ponte supera il numero degli spot disponibili { WinI.InsertSomeText(" SIMULATORE: auto correzione del numero di elicotteri sul ponte. Decremento di " + diff + " unità"); // correzione del valore di posizione sui primi i elicotteri trovati while (i < diff) { if (this.ElicotteriList [z].PosEli == true) { this.ElicotteriList [z].PosEli = false; // cambio a false i++; // valore trovato incremento indice } z++; // incremento l'indice } return(k); // restituisce il numero di elicotteri ga gestire manualmente } return(n); // restituisce il numero di elicotteri da gestire manualmente }
static private MainWindow MainWin = MainWindow.Instance(); // identifica la finestra principale in modo che possa essere ritrovata alla chiusura di questa protected CargoOptions(int _cargo, InfoWindow _win) : base(Gtk.WindowType.Toplevel) { this.WinI = _win; // gli passo la finestra informazioni this.cargoTot = _cargo; WinI.InsertSomeText("OPZIONI CARGO: --> EFFETTUATA APERTURA FINESTRA OPZIONI CARGO <--"); CargoM = (CargoManager)FactoryManager.Make(3, this.cargoTot, this.WinI); // viene creato lo Spot Manager tramite factory method CargoM.MakeList(cargoTot); // crea la lista iniziale di un numero di spot impostato this.Build(); this.label1.Text = "Numero di Record cargo # " + (this.cargoRec + 1) + " Record inseriti: " + CargoM.CargoList.Count + " Record disponibili: " + this.cargoTot; this.InitValue(); }
//---------------------------------------------------------------------------------- public void CheckSpotDataConsistency(SpotManager spotm, Spot.day_night _dn) { foreach (Elicottero eli in this.ElicotteriList) { if (spotm.SpotToHostaCat(eli.CatEli, _dn) == null) { eli.IsEfficient = false; eli.isRequiredForOP = false; WinI.InsertSomeText("SIMULATOR: rimosso elicottero " + eli.IdEli + " ,nessuno spot accessibile"); } } }
// COSTRUTTORE DELLA CLASSE SPOT OPTION protected SpotOptions(int spot, InfoWindow _win) : base(Gtk.WindowType.Toplevel) { this.WinI = InfoWindow.Instance(); // gli passo la finestra informazioni _totSpot = spot; this._spotRec = 0; Build(); WinI.InsertSomeText("OPZIONI SPOT: EFFETTUATA APERTURA FINESTRA OPZIONI SPOT"); SpotM = (SpotManager)FactoryManager.Make(2, spot, WinI); // viene creato lo Spot Manager tramite factory method SpotM.MakeList(spot); // crea la lista iniziale di un numero di spot impostato this.label1.Text = ("Numero di Record SPOT # " + this._spotRec); this.InitValue(); this.label1.Text = "Record # " + _spotRec + " Record inseriti: " + SpotM.Spotlist.Count + " Record disponibli: " + this._totSpot; }
// LIST DISPOSER METODI - metodi di movimentazione degli elementi in relazione agli altri manager #region list disposer // sposta gli elicotteri sugli spot se questi possono contenerli public void MoveEliOnSpot(SpotManager SpotM, Spot.day_night DN, InfoWindow WinI) { bool elidispoSuccess; // flag disposizione avvenuta con successo // controllo se esistono elicotteri che possono essere ospitati dagli spot per le caratteristiche // che hanno elicottero e spot foreach (Elicottero eli in this.ElicotteriList) { if (!eli.IsBlocked && // controllo se l'elico non è bloccato ed è in hangar !eli.PosEli && // eli è in hangar !eli.hasSpotReserved // eli non ha riservato uno spot ) { Spot _spot = SpotM.SpotToHostaCat(eli.CatEli, DN); //ritorno il primo spot in grado di ospitare l'elicottero if (_spot != null) // se lo spot è stato trovato { WinI.InsertSomeText("Spot trovato per assegnazione: " + _spot.SpotPos); // scrittura info // viene se l'elicottero è efficiente, la posizione è in hangar //e lo spot esiste e non è riservato ad altri elicotteri // inoltre possono essere movimentati solo due elicotteri alla volta if (elidispoSuccess = SpotM.SpotEliAssign(eli, _spot)) // prova ad assegnare l'elicottero { WinI.InsertSomeText("DISPOSER: movimentato elicottero : " + eli.IdEli + " su spot: " + eli.Spotrequested.SpotPos); } } else { WinI.InsertSomeText("DISPOSER: movimentazione elicottero " + eli.IdEli + " non effettuabile"); } } //termine IF } // termin foreach elicottero ciclo }
private void UpdateRec(int i) { SpotM.Spotlist[i].SpotRunnable = this.checkbutton7.Active; SpotM.Spotlist[i].DayCanAccept.Cat1 = this.checkbutton1.Active; SpotM.Spotlist[i].DayCanAccept.Cat2 = this.checkbutton2.Active; SpotM.Spotlist[i].DayCanAccept.Cat3 = this.checkbutton3.Active; SpotM.Spotlist[i].NightCanAccept.Cat1 = this.checkbutton4.Active; SpotM.Spotlist[i].NightCanAccept.Cat2 = this.checkbutton5.Active; SpotM.Spotlist[i].NightCanAccept.Cat3 = this.checkbutton6.Active; WinI.InsertSomeText(" OPZIONI SPOT: record # " + (i + 1) + " AGGIORNATO.."); }
// update record private void UpdateRec(int i) { this._cargoSTR = this.entry1.Text; CargoM.CargoList[i].CargoString = this._cargoSTR; this._cargoW = (int)this.hscale1.Value; CargoM.CargoList[i].CargoW = this._cargoW; this._cargoP = (int)this.hscale2.Value; CargoM.CargoList[i].CargoP = this._cargoP; WinI.InsertSomeText(" OPZIONI CARGO: record # " + (i + 1) + " AGGIORNATO.."); }
//menu - opzioni simulazione - operazioni diurne protected void OnGiornoAction2Activated(object sender, EventArgs e) { DNOperation = Spot.day_night.day; // setto lo sbarco diurno InformationWin.InsertSomeText("MAIN WINDOW: selezionata operazione DIURNA"); }
// LIST DISPOSER MODULES // - controllo il numero di spot occupati // - calcolo lo spazio totate sugli eli // - distribuisco le truppe equamente sugli elicotteri public void EliSpotTroopDistribution (SpotManager SpotM , TroopsManager TroopsM , InfoWindow winI) { int totWEli=SpotM.TotalWEliSpotForTroopS(); // calcolo il peso totale disponibile dagli elicotteri sugli spot int totWTroops = TroopsM.TroopList.Count*TroopsM.SingleSoldierW; // calcolo il peso totale delle truppe da imbarcare int w_Embarcable=0;// peso imbarcabile corrispondente al minore tra il peso totale disponibile ed il peso totale truppe int troopsE=0;// truppe imbarcabili int i=0; // variabile indice if (totWTroops<totWEli) w_Embarcable=totWTroops; else w_Embarcable=totWEli; // se il peso totale dell truppe da imbarcare è // minore rispetto al peso totale disponibile sugli elicotteri // allora le truppe imbarcabili saranno il minimo tra i due valori troopsE=w_Embarcable/TroopsM.SingleSoldierW;//trasformo il peso imbarcabile in uomini da imbarcare winI.InsertSomeText("TROOPS DISPOSER: ponte di volo occupato da: "+SpotM.TotalElionDeck() + " Elicotteri sul ponte pronti per l'imbarco di "+troopsE +" truppe"); //trasferisco ogno uomo su ogni elicottero disponibile con una distribuzione alternata //su tutti gli elicotteri disponibili, la distribuzione di reitera fino a a quando tutti gli uomini // sono stati spostati sugli elicotteri. if (troopsE>0) // se esistono truppe da imbarcare while ( i<troopsE) // continua fino a quando l'indice è inferiore alle truppe { foreach (Spot spot in SpotM.Spotlist) // per ogni spot { // se spot occupato da un elicottero in moto e pale aperte e l'elicottero puo' ospitare le truppe, allora effettuo il carico if (spot != null && spot.Eli != null && !spot.Eli.IsBlocked // eli non bloccato &&!spot.Eli.IsFull // eli non pieno di cargo e truppe && !spot.Eli.isTroopsFull // eli non pieno di truppe && spot.Eli.IsRunning // eli in moto && spot.Eli.IsBladeSpread // eli a pale a perte && (TroopsM.TroopList.Count>0) // eli con truppe a bordo && (spot.Eli.WTroopsLeftOnBoard >= TroopsM.SingleSoldierW)) {// truppe accettabili superano il peso del singolo // scambio di lista, simulo che la truppa imbarca sull'elicottero sistemato sul ponte, la lista verra poi passata alla landing zone // per permettere lo sbarco della truppa TroopsM.TroopList [TroopsM.TroopList.Count - 1].IsEli = true; // imposto la truppa in elicottero spot.Eli.IstroopsOnBoard = true; // elicottero ha truppe a bordo try{ // sposto la truppa dalla lista truppe a bordo TroopsM.MoveElement (TroopsM.TroopList, spot.Eli.EliSoldierList, TroopsM.TroopList [(TroopsM.TroopList.Count) - 1]); } catch{ System.Console.WriteLine ("ERRORE SPOSTAMENTO TRUPPE"); } // alla lista truppe sull'elicottero spot.Eli.IsBoarding = true; // l'elicottero sta imbarcando truppe // diminuisco il peso totale disponibile sull'eli spot.Eli.WTroopsLeftOnBoard = (spot.Eli.WTroopsLeftOnBoard - TroopsM.SingleSoldierW); if (spot.Eli.WTroopsLeftOnBoard < TroopsM.SingleSoldierW) spot.Eli.isTroopsFull = true; // modifico la flag di full truppe if (spot.Eli.isTroopsFull && spot.Eli.IsCargoFull) spot.Eli.IsFull = true;; // modifico la flag di full cargo e truppe i++; // VAR INDICE,indica il numero di truppe spostate }}}// fine metodo // inserisco attesa elicotteri imbarco truppe se la variaibile is boarding is TRUE foreach (Spot spot in SpotM.Spotlist) { // per ogni spot if (spot.Eli != null && spot.Eli.IsBoarding) // gestione tempi attesa spot.Eli.EliBlock (StaticSimulator.timeToEmbarcTroops, 8); // blocco l'eli e resetto la variabile isBoarding to false } } // fine metodo
// FINE METODI INSERIMENTO RIMOZIONE // ---------------------------------------------------------------------------------------------- // list disposer methods // distribuzione del cargo sull'elicottero che lo puo' ospitare // il metodo serve per distribuire il cargo a bordo degli elicotteri // che possono effettuare il trasporto // blocca temporalmente l'elicottero che effettua il trasferimento di cargo public void CargoDistribution(InfoWindow winI, EliManager EliM, TroopsManager TroopM) { // variaibli d'impiego locale int i = 0; // index int maxCargoNum = this.CargoList.Count; // quanti pacchi di cargo devo distribuire Cargo cargo = null; Elicottero eli = null; if (this.CargoList != null && this.CargoList.Count != 0) // controlla che la lista cargo contenga elementi // è stato usato un indice per l'impossibilità di operare sulla lista dinamicamente con un foreach // cancellando i dati e leggendoli insieme. { while ((i < this.CargoList.Count)) // continua fino a quando l'indice raggiunge il valore massimo di elementi { cargo = this.CargoList [i]; // cargo da assegnare if (!cargo.IsEliC && // il cargo vede essere caricabile su uno degli elicotteri cargo.IsFittable) // controlla se il cargo non è ancora stato assegnato { eli = EliM.EliAbleToCargo(cargo, TroopM); // definisce l'elicottero in grado di ospitare il cargo //l'elicottero per ospitare il cargo non deve essere necessariamente sul ponte di volo // controlla che l'elicottero assegnato esista e se esistono le condizioni per poter accettare il cargo if (eli != null && !eli.IsCargoFull && // elicottero non vede essere cargo full !eli.IsFlying && // non deve essere in volo !eli.IsBlocked && // no deve essere time blocked eli.IsEfficient && // deve essere efficiente eli.isRequiredForOP) // deve essere richiesto per l'operazione { eli.IsBoardingCargo = true; // eli inizia ad imbarcare il cargo eli.WCargoLeftOnBoard = (eli.WCargoLeftOnBoard - cargo.ChecktotalCargoWeight()); // sottraggo il peso del cargo al carico utile dell'eli // tale peso comprende le truppe che fanno parte del cargo this.MoveElement(this.CargoList, eli.EliCargoList, cargo); // effettua lo spostamento necessario setto la flag del cargo a bordo this.CheckThisEliCargoFull(eli); // controlla se esistono altri cargo che possono essere //inseriti altrimenti CARGO FULL set flag cargo.IsEliC = true; // la flag del cargo viene settata in elicottero cargo.Eli = eli; // assegno al cargo l'elicottero su cui viaggia eli.EliBlock(CargoManager.CargoLoadTiming, 5); // blocco l'elicottero N ticks per operazioni di cargo // al termine dell'attesa IsCargoOnBoard variable e' TRUE winI.InsertSomeText("CARGO DISPOSER: è stato assegnato: " + cargo.CargoString + " , restano ancora " + this.CargoList.Count + " elementi CARGO da imbarcare"); i++; // passo al rec ord successivo } else { i++; // incremento il contatore del cargo, cambio cargo } } } // fine while } else { winI.InsertSomeText("TROOPS DISPOSER: nessuna lista di CARGO è stata definita"); } } // NotFiniteNumberException metodo distribuzione cargo
} // fine metodo //---------------------------------------------------------------------------------- // metodo di supporto alla classe serve per attuare l'inizializzazione delle macchine, // controllo se gli elicotteri proposti sono tutti necessari per l'operazione // se ad esempio ho 3 elicotteriche possono trasportarte 10 truppe per un totate di // 30 persone mentre ho solo 15 persone disponibili gli elciotteri necessari saranno // solo 2. il terzo quindi risulterà non impiegabile // tuttavia va controllato anche che l'elicottero risulti non necessario anche per // il trasporto del cargo public void Check_Eli_Usability(InfoWindow WinI, TroopsManager TroopM, CargoManager CargoM) { WinI.InsertSomeText("SIMULATOR : controllo effettiva NECESSITA' degli elicotteri inseriti per la missione"); int TroopTotW = TroopM.TroopList.Count * TroopM.SingleSoldierW; // peso totale delle truppe int EliTotW = this.ElicotteriList.Sum(x => x.WTroopsLeftOnBoard); // peso totale disponibile sugli elicotteri int diffT_E = EliTotW - TroopTotW; // calcolo la differenza tra il peso totale trsportabile e il peso totale da trasportare List <Cargo> SupportCargoList = new List <Cargo> (); // lista cargo di supporto Elicottero eliMinW = this.ElicotteriList.Find(y => y.WTroopsLeftOnBoard == (this.ElicotteriList.Min(x => x.WTroopsLeftOnBoard))); // elicottero con peso minimo disponibile nella lista elicotteri // l'algoritmo elimina tutti gli elicotteri che offrono meno peso per il trasporto // dopo che viene definita la quantità di peso totale necessaria while (diffT_E > 0 && diffT_E > eliMinW.WTroopsLeftOnBoard) { bool found = false; // bool di supporto al metodo int supportCounter = 0; // bool var di supporto if (SupportCargoList.Count > 0) { SupportCargoList.Clear(); // reset list } if (diffT_E > eliMinW.WTroopsLeftOnBoard) //se la differenza tra il peso totale delle truppe // trasportabile ed il peso totale disponibile sugli elicotteri // è maggiore del peso disponibile sull'elicottero con peso trasportabile minimo allora ho trovato un // elicottero candidato { this.SupportEliList.Add(eliMinW); // aggiungo l'elciottero alla lista //di supporto come candidato all'eliminazione // devo ora controllare che l'elicottero sia anche indispensabile per l'attività di trasporto cargo if (CargoM != null && CargoM.CargoList != null) { // estrapolo elenco cargo che puo' ospitare l'elicottero candidato foreach (Cargo cargo in CargoM.CargoList.FindAll(x => (x.ChecktotalCargoWeight() <= eliMinW.WCargoLeftOnBoard))) { SupportCargoList.Add(cargo); // inserisco i valori trovati all'interno della lista di supporto } // DEVO CONTROLLARE // 1 CHE NON POSSA TRASPORTARE NESSUN CARGO // 2 CHE QUALORA POSSA TRASPORTARE DEL CARGO QUESTO NON SIA TRASPORTABILE DA ALTRI ELICOTTERI // SE UNA O L'ALTRA CONDIZIONE SONO VERE L'ELICOTTERO PUO' ESSERE ELIMINATO DALL'ELENCO if (SupportCargoList.Count > 0) // controllo che non possa trasportare nessun cargo // conrtollo tutti i cargo presenti nell'elenco in quanto devono essere tutti // trasportabili da altri elicotteri { foreach (Cargo cargo in SupportCargoList) { found = false; // resetto la variabile bool di supporto // per ogni altro elicotteo NON MINIMO PESO effettuo il confronto con il cargo foreach (Elicottero eli in this.ElicotteriList.FindAll(x => x != eliMinW)) { if (eli.WCargoLeftOnBoard >= cargo.ChecktotalCargoWeight()) // se esiste un elicottero che puo' imbarcare il cargo //incremento il contatore, anche gli altri cargo nell'elenco devono essere inclusi nella condizione { found = true; } } // end loop su eli // se ho trovato almeno un elemento in grado di accettare il cargo la var bool found è settata su vero // quindi posso incrementare il counter if (found) { supportCounter++; // se lo trova il cargo nella lista cargo di supporto } //che poteva trasportare l'eliminW ora lo puo' trasportare qualun altro } // end loop su cargo // se il numero degli elicotteri che possono ospitare il cargo eguaglia il numero del cargo da ospitare //l'elicottero non è necessario if (supportCounter == SupportCargoList.Count) { // posso eliminare l'elicottero dall'elenco elicotteri this.ElicotteriList.Remove(eliMinW); WinI.InsertSomeText("SIMULATOR : rimosso elicottero: " + eliMinW.IdEli + " l'eli risulta non necessario"); } else { // altrimenti devo rimuoverlo dall'elenco dei candidati this.SupportEliList.Remove(eliMinW); } } // end if cargo count >0 ELICOTTERO INUTILE PER L'OPERAZIONE ELIMINARE ELICOTTERO DALL'ELENCO else { // elicottero inutile per l'operazione this.ElicotteriList.Remove(eliMinW); // l'elicottero viene cosi lasciato nell'elenco // degli elicotteri di supporto non utilizzabili WinI.InsertSomeText("SIMULATOR : rimosso elicottero: " + eliMinW.IdEli + " l'eli risulta non necessario"); } } // fine if CARGO NULL INESISTENTE else { // elicottero inutile per l'operazione this.ElicotteriList.Remove(eliMinW); WinI.InsertSomeText("SIMULATOR : rimosso elicottero: " + eliMinW.IdEli + " l'eli risulta non necessario"); } } // fine if differenza l'elicottero è utile per l'operazione // update delle variabili EliTotW = this.ElicotteriList.Sum(x => x.WTroopsLeftOnBoard); // peso totale disponibile sugli elicotteri diffT_E = EliTotW - TroopTotW; // calcolo la differenza tra il peso totale trsportabile e il peso totale da trasportare eliMinW = this.ElicotteriList.Find(y => y.WTroopsLeftOnBoard == (this.ElicotteriList.Min(x => x.WTroopsLeftOnBoard))); //determino il nuovo min } // fine while } // fine metodo Check_Eli_Usability
// effettua l'update del record corrente sostituiendo i nuovi valori rilevati a quelli vecchi in memoria private void UpdateRec(int i) { this._IdEli = this.entry1.Text; EliM.ElicotteriList [i].IdEli = this.entry1.Text; // id eli this._catEli = (int)this.hscale1.Value; EliM.ElicotteriList [i].CatEli = (int)this.hscale1.Value; // cat eli this._fuel = (int)this.hscale2.Value; EliM.ElicotteriList [i].Fuel = (int)this.hscale2.Value; // carburante this._WTroopsLeftOnBoard = (int)this.hscale4.Value; EliM.ElicotteriList [i].WTroopsLeftOnBoard = (int)this.hscale4.Value; // truppe this._WCargoLeftOnBoard = (int)this.hscale5.Value; EliM.ElicotteriList [i].WCargoLeftOnBoard = (int)this.hscale5.Value; // peso cargo this._maxTOLoad = (int)this.hscale6.Value; EliM.ElicotteriList [i].MaxTOLoad = (int)this.hscale6.Value; // MAX TO this._offLoadWeight = (int)this.hscale7.Value; EliM.ElicotteriList [i].OffLoadWeight = (int)this.hscale7.Value; // off load W this._fuelConsumption = (int)this.hscale3.Value; EliM.ElicotteriList [i].FuelC = (int)this.hscale3.Value; // consumi di carburante if (this.button10.Label == "IN HANGAR") { this._posEli = false; EliM.ElicotteriList [i].PosEli = false; } else { this._posEli = true; EliM.ElicotteriList [i].PosEli = true; // posizione eli hangar o ponte } if (this.button15.Label == "PALE APERTE") { this._bladeSpread = true; EliM.ElicotteriList [i].IsBladeSpread = true; } else { this._bladeSpread = false; EliM.ElicotteriList [i].IsBladeSpread = false; // pale aperte o chiuse } if (this.button16.Label == "ACCESO") { this._isRunning = true; EliM.ElicotteriList [i].IsRunning = true; } else { this._isRunning = false; EliM.ElicotteriList [i].IsRunning = false; // accesso spento } if (this.button17.Label == "EFFICIENTE") { this._isEfficient = true; EliM.ElicotteriList [i].IsEfficient = true; } else { this._isEfficient = false; EliM.ElicotteriList [i].IsEfficient = false; // is efficient - inefficiente } win.InsertSomeText(" OPZIONI ELICOTTERO: record # " + (i + 1) + " AGGIORNATO.."); } // termine update record