Example #1
0
        public void Update()
        {
            UpdateNearBeacons();

            if (nearBeacon == null || nearBeacon.Vessel != vessel)
            {
                bool present = nearBeacon != null;
                for (int i = hailers.Count - 1; i >= 0; i--)
                {
                    bool hailerActive = hailers[i].hailerActive;
                    hailers[i].Fields["nearBeaconDistance"].guiActive = present && hailerActive;
                    hailers[i].Fields["nearBeaconRelVel"].guiActive   = present && hailerActive;
                    hailers[i].Fields["hasNearBeacon"].guiActive      = hailerActive;
                    hailers[i].hasNearBeacon = present ? "Present" : "Not Present";
                }
            }
            else
            {
                for (int i = hailers.Count - 1; i >= 0; i--)
                {
                    hailers[i].Fields["nearBeaconDistance"].guiActive = false;
                    hailers[i].Fields["nearBeaconRelVel"].guiActive   = false;
                    hailers[i].Fields["hasNearBeacon"].guiActive      = hailers[i].hailerActive;
                    hailers[i].hasNearBeacon = "Onboard";
                }
            }
            if (nearBeacon == null)
            {
                return;
            }

            float nearBeaconDistance = Vector3.Distance(vessel.GetWorldPos3D(), nearBeacon.Vessel.GetWorldPos3D());
            float nearBeaconRelVel   = Vector3.Magnitude(vessel.obt_velocity - nearBeacon.Vessel.obt_velocity);

            driftpenalty = ESLDBeacon.GetDriftPenalty(nearBeaconDistance, nearBeaconRelVel, nearBeacon.GetCrewBonuses("Pilot", 0.5f, 5));
            HCUParts     = GetHCUParts(vessel);
            //[Part name] - [Resource name]
            HCUPartFailures.Clear();
            HCUPartFailures.AddRange(HCUParts.Select(kvp => kvp.Key.name + " - " + kvp.Value));
            HCUPartsList = HCUParts.Keys.ToList();
            tonnage      = vessel.GetTotalMass();
            sciBonus     = nearBeacon.GetCrewBonuses("Scientist", 0.5f, 5);

            for (int i = targetDetails.Count - 1; i >= 0; i--)
            {
                targetDetails[i].Update();
            }

            for (int i = hailers.Count - 1; i >= 0; i--)
            {
                hailers[i].nearBeaconDistance = nearBeaconDistance;
                hailers[i].nearBeaconRelVel   = nearBeaconRelVel;
            }
        }
Example #2
0
 public void Update()
 {
     UpdateNearBeacons();
     if (nearBeacon == null || (UnityEngine.Object)nearBeacon.Vessel != (UnityEngine.Object)vessel)
     {
         bool flag = nearBeacon != null;
         for (int i = hailers.Count - 1; i >= 0; i--)
         {
             bool hailerActive = hailers[i].hailerActive;
             ((BaseFieldList <BaseField, KSPField>)hailers[i].Fields)["nearBeaconDistance"].guiActive = (flag & hailerActive);
             ((BaseFieldList <BaseField, KSPField>)hailers[i].Fields)["nearBeaconRelVel"].guiActive   = (flag & hailerActive);
             ((BaseFieldList <BaseField, KSPField>)hailers[i].Fields)["hasNearBeacon"].guiActive      = hailerActive;
             hailers[i].hasNearBeacon = (flag ? "Present" : "Not Present");
         }
     }
     else
     {
         for (int i = hailers.Count - 1; i >= 0; i--)
         {
             ((BaseFieldList <BaseField, KSPField>)hailers[i].Fields)["nearBeaconDistance"].guiActive = false;
             ((BaseFieldList <BaseField, KSPField>)hailers[i].Fields)["nearBeaconRelVel"].guiActive   = false;
             ((BaseFieldList <BaseField, KSPField>)hailers[i].Fields)["hasNearBeacon"].guiActive      = hailers[i].hailerActive;
             hailers[i].hasNearBeacon = "Onboard";
         }
     }
     if (nearBeacon != null)
     {
         float nearBeaconDistance = Vector3.Distance(vessel.GetWorldPos3D(), nearBeacon.Vessel.GetWorldPos3D());
         float nearBeaconRelVel   = Vector3.Magnitude(vessel.obt_velocity - nearBeacon.Vessel.obt_velocity);
         driftpenalty = ESLDBeacon.GetDriftPenalty(nearBeaconDistance, nearBeaconRelVel, nearBeacon.GetCrewBonuses("Pilot", 0.5f, 5));
         HCUParts     = GetHCUParts(vessel);
         //[Part name] - [Resource name]
         HCUPartFailures.Clear();
         HCUPartFailures.AddRange(from kvp in HCUParts
                                  select kvp.Key.name + " - " + kvp.Value);
         HCUPartsList = HCUParts.Keys.ToList();
         tonnage      = vessel.GetTotalMass();
         sciBonus     = nearBeacon.GetCrewBonuses("Scientist", 0.5f, 5);
         for (int i = targetDetails.Count - 1; i >= 0; i--)
         {
             targetDetails[i].Update();
         }
         for (int i = hailers.Count - 1; i >= 0; i--)
         {
             hailers[i].nearBeaconDistance = (double)nearBeaconDistance;
             hailers[i].nearBeaconRelVel   = (double)nearBeaconRelVel;
         }
     }
 }