Esempio n. 1
0
        public void Start()
        {
            CommNet.CommNetParams          commNetParams = HighLogic.CurrentGame.Parameters.CustomParams <CommNet.CommNetParams>();
            List <ModuleDataTransmitter>   MDTs          = part.Modules.OfType <ModuleDataTransmitter>().ToList();
            List <ModuleDeployableAntenna> MDAs          = part.Modules.OfType <ModuleDeployableAntenna>().ToList();

            var dsnpower = GameVariables.Instance.GetDSNRange(
                ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.TrackingStation));

            OtherVesselRating = (float)(dsnpower / 1e9);

            Fields["OtherVesselRating"].guiActive       = false;
            Fields["OtherVesselRating"].guiActiveEditor = false;

            if (MDTs.Count != 1)
            {
                foreach (var mdt in MDTs)
                {
                    mdt.Fields["powerText"].SetValue(
                        Formatter.ValueShort(mdt.antennaPower * commNetParams.rangeModifier) +
                        (mdt.antennaCombinable
                            ? string.Format(" ({0}, {1}: {2})", Localizer.Format("#CAE_PAW_Combinability"),
                                            Localizer.Format("#CAE_PAW_Combinab_Exponent_Short"), mdt.antennaCombinableExponent)
                            : "")
                        , mdt);
                }

                foreach (var field in Fields)
                {
                    field.guiActive       = false;
                    field.guiActiveEditor = false;
                }

                return;
            }

            var moduleDT = MDTs[0];

            //ModuleDeployableAntenna
            // status | Status | Retracted Retracting.. Extended Extending..
            //moduleDA.status

            //statusText   Antenna State   Idle
            //moduleDT.statusText;

            if (MDAs.Count == 1)
            {
                var moduleDA = MDAs[0];
                moduleDA.Fields["status"].group.name        = "CommNetA";
                moduleDA.Fields["status"].group.displayName = "#CAE_PAW_Group_Name";
                moduleDA.Fields["status"].guiActiveEditor   = true;
            }

            List <ModuleCommand> MCs = part.Modules.OfType <ModuleCommand>().ToList();

            if (MCs.Count == 1)
            {
                MCs[0].Fields["commNetSignal"].group.name        = "CommNetA";
                MCs[0].Fields["commNetSignal"].group.displayName = "#CAE_PAW_Group_Name";

                MCs[0].Fields["commNetFirstHopDistance"].group.name        = "CommNetA";
                MCs[0].Fields["commNetFirstHopDistance"].group.displayName = "#CAE_PAW_Group_Name";
            }

            moduleDT.Fields["statusText"].group.name        = "CommNetA";
            moduleDT.Fields["statusText"].group.displayName = "#CAE_PAW_Group_Name";
            moduleDT.Fields["powerText"].guiActive          = false;
            moduleDT.Fields["powerText"].guiActiveEditor    = false;

            double antennaPowerModified = moduleDT.antennaPower * commNetParams.rangeModifier;

            AntennaRatingStr    = Formatter.ValueShort(antennaPowerModified);
            AntennaTypeStr      = Formatter.ToTitleCase(moduleDT.antennaType.displayDescription());
            DataResourceCostStr = Localizer.Format("#CAE_EC_Mit", moduleDT.DataResourceCost.ToString("#.##"));
            BandwidthStr        = Localizer.Format("#CAE_Mit_S", (moduleDT.packetSize / moduleDT.packetInterval).ToString("#.##"));

            PacketStr = Localizer.Format("#CAE_Mit", moduleDT.packetSize.ToString("#.#")) + " & " +
                        Localizer.Format("#CAE_EC", moduleDT.packetResourceCost.ToString("#.##"));

            if (moduleDT.antennaCombinable)
            {
                AntennaRatingStr        += " " + Localizer.Format("#autoLOC_236248");
                CombinabilityExponentStr = moduleDT.antennaCombinableExponent.ToString();
            }
            else
            {
                Fields["CombinabilityExponentStr"].guiName = "#CAE_PAW_Combinability";
                CombinabilityExponentStr = Localizer.Format("#autoLOC_439840");
            }

            if (moduleDT.antennaType == AntennaType.INTERNAL)
            {
                Events["VesselRatingUpdate"].active = true;

                foreach (var f in Fields)
                {
                    if (f.name != "AntennaTypeStr" && f.name != "AntennaRatingStr")
                    {
                        f.guiActive       = false;
                        f.guiActiveEditor = false;
                    }
                }
            }
        }