Ejemplo n.º 1
0
		// assegno un elicottero allo spot ed effettua il blocco
		public bool SpotEliAssign (Elicottero eli, Spot spot)
		{

			if (spot != null 
				&& eli != null 
				&& !spot.IsReservd 
				&& !eli.IsBlocked) {	// spot ed eli devono essere diversi da null

				spot.IsReservd = true;// spot riservato
				spot.eliWhoReservd = eli; // elicottero riservante 
				eli.Spotrequested = spot;// assegna lo spot all'elicottero
				eli.hasSpotReserved = true; // l'elicottero riserva un posto

				eli.EliBlock(SpotManager.timeNeedToMoveToDeck, 3); // elicottero bloccato per attività di movimentazione per 15 primi
				// al termine del blocco eli.PosEli = true indica che l'elicottero ha assunto la posizione sul ponte
				return true;// assegnazione avvenuta con successo
			}
			else return false;// assegnazione non avvenuta 
		}
Ejemplo n.º 2
0
        // 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