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; }
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; }
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; }
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; }
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); }
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; }
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); }
public ProtoAntennaDevice(ProtoPartModuleSnapshot antenna, uint part_id) { this.antenna = antenna; this.animator = FlightGlobals.FindProtoPartByID(part_id).FindModule("ModuleAnimationGroup"); this.part_id = part_id; }