public TimeSpan current_time; // rappresenta l'update del timer corrente // costruttore della classe elicottero public Elicottero(ClockTimer timerCon, 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) { // passo le variabili inizializzate all'oggetto elicottero this.NumEli = numEli; this.IdEli = Id; this.CatEli = Cat; this.Fuel = Fuel; this.WTroopsLeftOnBoard = Troops; this.WCargoLeftOnBoard = Cargo; this.MaxTOLoad = MaxToLoad; this.OffLoadWeight = OffLoadWG; this.IsRunning = Running; this.IsRefueling = false; // l'elicottero non parte mai in fase di refueling this.IsBladeSpread = BladeSprd; this.IsEfficient = IsEff; this.IsFlying = IsFly; this.PosEli = InitialPos; // posizione iniziale Hangar o Ponte this.FuelC = FuelC; // consumo di carburante all'ora this.SpotAssigned = null; // assegnazione spot inizializzata a null this.LowFuel = false; // setto il lowfuel state a falso, alla messa in moto viene ricontrollato. this.EliCrash = false; // setta la flagh di crash a falso this.IsBlocked = false; // l'elicottero non parte bloccato this.isREADYstatus = false; // l'elicottero inizializzato non pronto this.IsHolding = false; // l'elicottero è inizializzato non in holding this.isLZ = false; // elicottero sulla LZ this.hasSpotReserved = false; this.rotation = 0; // rotazione iniziale this.quota = 0.6f; // quota iniziale this.isRequiredForOP = true; // elicottero richiesto per l'operazione di default this.IstroopsOnBoard = false; // truppe a bordo this.IsCargoOnBoard = false; // l'elicottero parte senza cargo this.Go_goback = true; // setto l'andata this.IsFull = false; // elicottero parte vuoto this.IsCargoFull = false; // cargo full this.isTroopsFull = false; // truppe full this.isApproaching = false; // approach to destinaiton this.isHotRef = false; // flas hot ref su falso this.IsBoardingCargo = false; // sett iniziale imbarco cargo falso this.EliSoldierList = new List <Soldier>(0); // ogni elicottero detiene la sua lista di soldati this.EliCargoList = new List <Cargo>(0); // ogni elicottero detiene la lista del proprio cargo this.DirToGo = Direction.ship; // inizalizzato per direzione holding point this.IsBoarding = false; // l'elcittero è iizializzato a caricamento truppe falso // il peso totale è dato dal peso dell'elicottero scarico + il peso del carburante + il peso delle truppe + il peso del cargo this.TotalWeightCalculated = this.ToTWGCalculus(); //timer attachment: ogni elicottero e' dotato di un timer // serve per sincronizzare le operazioni this.timer = timerCon; // definizione del timer this.timer.Attach(this); // attachment del timer secondo il pattern Observer // l'elicottero entra a far parte della lista di observers // il notify() del timer provvederà all'update dei clock di tutti gli observer this.elivector2d = new Vector2(0f, 0f); // creazione del vettore di movimento verrà usato dal framework grafico monogame // indica la posizione attuale del velivolo sullo schermo this.destination = new Point(0, 0); // destinazione dell'elicottero espressa con una struttura point X e Y this.EliSpeed = 0f; // viene settato il parametro velocita' iniziale dell'eli }