// Use this for initialization
 //
 void Awake()
 {
     //
     controlBoard = GameObject.FindGameObjectWithTag("GameController").GetComponent <SilantroControls> ();
     if (controlBoard == null)
     {
         Debug.LogError("Control Board is missing, Place Control Board in scene and restart!");
     }
     stopEngine = controlBoard.engineShutdown; dumpFuelKey = controlBoard.dumpFuelControl; refuelTankKey = controlBoard.refuelControl;
     //FUEL SETUP
     if (internalFuelTank != null)
     {
         TotalFuelRemaining = 0;
         if (externalTanks.Count > 0)
         {
             foreach (SilantroFuelTank external in externalTanks)
             {
                 TotalFuelRemaining += external.Capacity;
             }
         }
         TotalFuelRemaining += internalFuelTank.Capacity;
         CurrentTank         = internalFuelTank;
         //
     }
     else
     {
         Debug.Log("No internal fuel tank is assigned to distributor!!");
     }
     //
 }
 // Update is called once per frame
 void FixedUpdate()
 {
     //
     if (internalFuelTank.CurrentAmount < minimumFuelAmount)
     {
         if (externalTanks.Count > 0)
         {
             CurrentTank = externalTanks [0];
             if (CurrentTank.tankType == SilantroFuelTank.TankType.External && CurrentTank.CurrentAmount < 0.1f)
             {
                 if (externalTanks.Contains(CurrentTank))
                 {
                     externalTanks.Remove(CurrentTank);
                     CurrentTank = externalTanks [0];
                 }
             }
         }
         else
         {
             CurrentTank = internalFuelTank;
             //Activate fuel Alert
             if (CurrentTank.CurrentAmount <= minimumFuelAmount)
             {
                 lowFuel = true;
                 if (!fuelAlertActivated)
                 {
                     //
                     StartCoroutine(LowFuelAction());
                     fuelAlertActivated = true;
                 }
             }
             Debug.Log("Fuel Low");
         }
     }
     //
     if (CurrentTank != null)
     {
         currentTank     = CurrentTank.gameObject.name;        //
         currentTankFuel = CurrentTank.CurrentAmount;
         tankType        = CurrentTank.tankType.ToString();
         if (totalConsumptionRate > 0)
         {
             float flightTime = (CurrentTank.CurrentAmount) / totalConsumptionRate;
             timeLeft = string.Format("{0}:{1:00}", (int)flightTime / 60, (int)flightTime % 60);
         }
     }
     TotalFuelRemaining = 0;
     if (externalTanks.Count > 0)
     {
         foreach (SilantroFuelTank external in externalTanks)
         {
             TotalFuelRemaining += external.Capacity;
         }
     }
     TotalFuelRemaining += internalFuelTank.CurrentAmount;
 }
Exemple #3
0
    //
    // Use this for initialization
    void Start()
    {
        aircraft = GetComponent <Rigidbody> ();
        if (aircraft == null)
        {
            Debug.Log("Add Rigidbody component to airplane body");
        }
        //
        datalog     = aircraft.gameObject.GetComponentInChildren <SilantroInstrumentation>();
        currentTank = fuelsystem.internalFuelTank;
        //AIRCRAFT SETUP
        if (engineType == AircraftType.TurboFan)
        {
            turbofans = GetComponentsInChildren <SilantroTurboFan> ();
            foreach (SilantroTurboFan turbofan in turbofans)
            {
                turbofan.attachedFuelTank = currentTank;
            }
            AvailableEngines = turbofans.Length;
            //
        }
        else if (engineType == AircraftType.TurboJet)
        {
            turboJet         = GetComponentsInChildren <SilantroTurboJet> ();
            AvailableEngines = turboJet.Length;
            foreach (SilantroTurboJet jet in turboJet)
            {
                jet.attachedFuelTank = currentTank;
            }
        }
        else if (engineType == AircraftType.TurboProp)
        {
            turboprop        = GetComponentsInChildren <SilantroTurboProp> ();
            AvailableEngines = turboprop.Length;
            foreach (SilantroTurboProp turboProp in turboprop)
            {
                turboProp.attachedFuelTank = currentTank;
            }
        }
        //
        wings    = GetComponentsInChildren <SilantroAerofoil>();
        wingArea = 0;
        if (wings.Length > 0)
        {
            foreach (SilantroAerofoil wing in wings)
            {
                wingArea += wing.aerofoilArea;
            }
        }
        //
        GameObject brain = GameObject.FindGameObjectWithTag("Brain");

        if (brain.transform.root == gameObject.transform.root)
        {
            cog = brain;
        }
        //
        Collider col = gameObject.GetComponent <CapsuleCollider>();

        if (col == null)
        {
            Debug.Log("Attach a capsule collider to the airplane and restart!!");
        }
        float r = dragSystem.averagefuselargeDiameter / 2f;

        fuselargeArea = (3.142f * r * r) + (2 * 3.142f * r * dragSystem.averagefuselargeLength);
        //
        //
        if (isDestructible && GetComponent <SilantroHealth> () != null)
        {
            GetComponent <SilantroHealth> ().isDistructible = true;
            SilantroAerofoilHealth[] healths = GetComponentsInChildren <SilantroAerofoilHealth> ();
            foreach (SilantroAerofoilHealth hlt in healths)
            {
                hlt.isDistructible = true;
            }
        }
        else if (!isDestructible && GetComponent <SilantroHealth> () != null)
        {
            GetComponent <SilantroHealth> ().isDistructible = false;
            SilantroAerofoilHealth[] healths = GetComponentsInChildren <SilantroAerofoilHealth> ();
            foreach (SilantroAerofoilHealth hlt in healths)
            {
                hlt.isDistructible = false;
            }
        }
        //
        //CALCULATE EXTRA DRAG OBJECTS
        extraDrags = GetComponentsInChildren <SilantroDragMultiplier>();
        extraDrag  = 0;
        foreach (SilantroDragMultiplier drag in extraDrags)
        {
            if (drag.dragActive)
            {
                extraDrag += drag.dragCoefficient;
            }
        }
        //
        //
        //
        AerodynamicSurfaces = wings.Length.ToString();
        Engines             = AvailableEngines.ToString();
        if (datalog != null)
        {
            InstrumentBoard = "Active";
        }
        if (fuelsystem != null)
        {
            FuelSystem = "Active";
        }
        if (gearHelper != null)
        {
            WheelSystem = "Active";
        }
    }