コード例 #1
0
        public override void Ctrl(bool value)
        {
            Lib.Proto.Set(sickbay_ctrl, "running", value);
            ProtoPartSnapshot part_prefab = FlightGlobals.FindProtoPartByID(part_id);

            part_prefab.resources.Find(k => k.resourceName == prefab.resource).flowState = value;
        }
コード例 #2
0
ファイル: Harvester.cs プロジェクト: gotmachine/Kerbalism-1
		public ProtoHarvesterDevice(ProtoPartModuleSnapshot harvester, Harvester prefab, uint part_id)
		{
			this.harvester = harvester;
			this.animator = FlightGlobals.FindProtoPartByID(part_id).FindModule("ModuleAnimationGroup");
			this.prefab = prefab;
			this.part_id = part_id;
		}
コード例 #3
0
ファイル: Process.cs プロジェクト: gotmachine/Kerbalism-1
		public override void Ctrl(bool value)
		{
			if (!prefab.toggle) return;
			Lib.Proto.Set(process_ctrl, "running", value);
			ProtoPartSnapshot part_prefab = FlightGlobals.FindProtoPartByID(part_id);

			double capacity = prefab.capacity;
			var res = part_prefab.resources.Find(k => k.resourceName == prefab.resource);
			res.amount = value ? capacity : 0.0;
		}
コード例 #4
0
ファイル: Process.cs プロジェクト: yadenisyur/Kerbalism
        public override void Ctrl(bool value)
        {
            if (!prefab.toggle)
            {
                return;
            }
            Lib.Proto.Set(process_ctrl, "running", value);
            ProtoPartSnapshot part_prefab = FlightGlobals.FindProtoPartByID(part_id);

            part_prefab.resources.Find(k => k.resourceName == prefab.resource).flowState = value;
        }
コード例 #5
0
        public static Vessel GetVessel(uint partId)
        {
            ProtoPartSnapshot protoPart = FlightGlobals.FindProtoPartByID(partId);

            if (protoPart == null)
            {
                LogError($"Failed to find part {partId} in any of the {FlightGlobals.Vessels.Count} vessels!");
                return(null);
            }

            return(protoPart.pVesselRef.vesselRef);
        }
コード例 #6
0
        public ProtoAntennaDevice(ProtoPartModuleSnapshot antenna, uint part_id, Vessel v)
        {
            if (!Features.Deploy)
            {
                has_ec = true;
            }
            else
            {
                has_ec = ResourceCache.Info(v, "ElectricCharge").amount > double.Epsilon;
            }

            if (Features.KCommNet)
            {
                this.antenna  = FlightGlobals.FindProtoPartByID(part_id).FindModule("ModuleDataTransmitter");
                this.animator = FlightGlobals.FindProtoPartByID(part_id).FindModule("ModuleDeployableAntenna");
            }
            else
            {
                this.antenna  = antenna;
                this.animator = FlightGlobals.FindProtoPartByID(part_id).FindModule("ModuleAnimationGroup");
            }
            this.part_id = part_id;
            vessel       = v;
        }
コード例 #7
0
        public Antenna_Info(Vessel v)
        {
            List <AntennaPartInfo> adaptorsInfoList = new List <AntennaPartInfo>();

            int numParts = (!v.loaded) ? v.protoVessel.protoPartSnapshots.Count : v.Parts.Count;

            for (int partIndex = 0; partIndex < numParts; partIndex++)
            {
                Part part;
                ProtoPartSnapshot protoPart = null;

                if (v.loaded)
                {
                    part = v.Parts[partIndex];
                }
                else
                {
                    protoPart = v.protoVessel.protoPartSnapshots[partIndex];
                    part      = PartLoader.getPartInfoByName(protoPart.partName).partPrefab;
                }

                bool                    hasInfo         = false;
                AntennaPartInfo         antennaPartInfo = new AntennaPartInfo();
                ProtoPartModuleSnapshot protoPartModule = null;

                // Inspect each module of the part
                for (int moduleIndex = 0; moduleIndex < part.Modules.Count; moduleIndex++)
                {
                    NetworkAdaptor antennaMod = new NetworkAdaptor();
                    PartModule     pModule    = part.Modules[moduleIndex];
                    if (pModule is NetworkAdaptor)
                    {
                        if (v.loaded)
                        {
                            antennaMod = (NetworkAdaptor)pModule;
                            antennaPartInfo.frequency = antennaMod.frequency;
                            antennaPartInfo.ecCost    = antennaMod.ecCost;
                            antennaPartInfo.rate      = antennaMod.rate;
                            antennaPartInfo.name      = part.partInfo.title;
                        }
                        else
                        {
                            ProtoPartModuleSnapshot netAdaptor = FlightGlobals.FindProtoPartByID(protoPart.flightID).FindModule("NetworkAdaptor");
                            antennaPartInfo.frequency = Lib.Proto.GetShort(netAdaptor, "frequency");
                            antennaPartInfo.ecCost    = Lib.Proto.GetDouble(netAdaptor, "ecCost");
                            antennaPartInfo.rate      = Lib.Proto.GetDouble(netAdaptor, "rate");
                            antennaPartInfo.name      = protoPart.partInfo.title;
                        }

                        hasInfo = true;
                    }
                    else if (pModule is ICommAntenna)
                    {
                        ICommAntenna antenna = pModule as ICommAntenna;

                        // This method only works when v.Loaded, otherwise this brings a wrong deployState
                        ModuleDeployableAntenna anim = part.FindModuleImplementing <ModuleDeployableAntenna>();

                        // Assume extended if there is no animator
                        if (anim != null)
                        {
                            if (!v.loaded)
                            {
                                // This method works to !v.Loaded
                                ProtoPartModuleSnapshot deployState = FlightGlobals.FindProtoPartByID(protoPart.flightID).FindModule("ModuleDeployableAntenna");
                                antennaPartInfo.deployState = Lib.KCOMMNET.String_to_DeployState(Lib.Proto.GetString(deployState, "deployState"));
                            }
                            else
                            {
                                antennaPartInfo.deployState = anim.deployState;
                            }
                        }
                        else
                        {
                            antennaPartInfo.deployState = ModuleDeployablePart.DeployState.EXTENDED;
                        }

                        if (!v.loaded)
                        {
                            protoPartModule = protoPart.FindModule(pModule, moduleIndex);
                        }

                        antennaPartInfo.antennaPower              = (!v.loaded) ? antenna.CommPowerUnloaded(protoPartModule) : antenna.CommPower;
                        antennaPartInfo.antennaCombinable         = antenna.CommCombinable;
                        antennaPartInfo.antennaCombinableExponent = antenna.CommCombinableExponent;
                        antennaPartInfo.antennaType = antenna.CommType;
                        //antennaPartInfo.partReference = part;
                        //antennaPartInfo.partSnapshotReference = protoPart;
                        antennaPartInfo.canComm = (!v.loaded) ? antenna.CanCommUnloaded(protoPartModule) : antenna.CanComm();

                        hasInfo = true;
                    }
                }

                if (hasInfo)
                {
                    adaptorsInfoList.Add(antennaPartInfo);
                }
            }

            freqSortedList     = adaptorsInfoList.OrderBy(a => a.frequency).ToList(); // order by frequency
            adaptorsSortedList = adaptorsInfoList.OrderBy(a => a.name).ToList();      // order by device name

            AntennaCalc(freqSortedList);
        }
コード例 #8
0
 public ProtoAntennaDevice(ProtoPartModuleSnapshot antenna, uint part_id)
 {
     this.antenna  = antenna;
     this.animator = FlightGlobals.FindProtoPartByID(part_id).FindModule("ModuleAnimationGroup");
     this.part_id  = part_id;
 }