예제 #1
0
        public override void OnUpdate()
        {
            base.OnUpdate();
            double dElectric_Draw = 10.0 * dW_to_EC;
            double elecAvail      = part.RequestResource("ElectricCharge", dElectric_Draw) / dElectric_Draw;
            bool   bPowered       = (elecAvail > 0.90);

            dIndicated_Deviation = -10.0;
            sStation_ID          = "---";
            sTo_From             = "####";

            if (bPowered)
            {
                cNav_Select = null;
                foreach (Part p in vessel.Parts)
                {
                    //string sMsg1 = "VI: " + p.name;
                    //print(sMsg1);
                    foreach (PartModule m in p.Modules)
                    {
                        //string sMsg2 = "VIm: " + m.name;
                        //print(sMsg2);
                        VHF_NAV_Receiver cNav = m as VHF_NAV_Receiver;
                        if (cNav != null)
                        {
                            cNav_Select = cNav;
                        }
                    }
                }
                if (cNav_Select != null)
                {
                    //string sMsg = "VOR indicator found receiver " + cNav_Select.moduleName;
                    //print(sMsg);
                    VOR cVOR = cNav_Select.getTunedVOR();
                    if (cVOR != null)
                    {
                        bool bZOC = cVOR.inZoneOfConfusion(cNav_Select.getPosition());
                        if (!bZOC)
                        {
                            double dDeviation = (iOBS - cVOR.getBearingFrom(cNav_Select.getPosition())) % 360.0;
                            if (dDeviation > 180.0)
                            {
                                dDeviation -= 360.0;
                            }
                            while (dDeviation < -180.0)
                            {
                                dDeviation += 360.0;
                            }
                            bool bTo = dDeviation <-90.0 || dDeviation> 90.0;
                            if (bTo)
                            {
                                sTo_From = " TO ";
                                if (dDeviation < -90.0)
                                {
                                    dDeviation = -180.0 - dDeviation;
                                }
                                else
                                {
                                    dDeviation = 180.0 - dDeviation;
                                }
                            }
                            else
                            {
                                sTo_From = "FROM";
                            }

                            dIndicated_Deviation = dDeviation / 2.5;
                            sStation_ID          = cVOR.sStation_ID;
                        }
                    }
                }
            }
        }