Ejemplo n.º 1
0
 protected override void ScanVessel(Vessel vessel)
 {
     sensors.Clear();
     if (vessel == null || vessel.Parts == null)
     {
         return;
     }
     foreach (Part part in vessel.Parts)
     {
         if (part.packed)
         {
             part.Unpack();
         }
         if (part.name != null)
         {
             if (part.name.Equals("sensorThermometer") || part.name.Equals("sensorGravimeter"))
             {
                 foreach (PartModule m in part.Modules)
                 {
                     if (m is ModuleEnviroSensor)
                     {
                         ModuleEnviroSensor sensor = m as ModuleEnviroSensor;
                         sensors.Add(sensor);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        public static PartValue Construct(global::Part part, SharedObjects shared)
        {
            foreach (PartModule module in part.Modules)
            {
                ModuleEngines mEng = module as ModuleEngines;
                if (mEng != null)
                {
                    return(new EngineValue(part, new ModuleEngineAdapter(mEng), shared));
                }
                ModuleEnginesFX mEngFX = module as ModuleEnginesFX;
                if (mEngFX != null)
                {
                    return(new EngineValue(part, new ModuleEngineAdapter(mEngFX), shared));
                }
                ModuleDockingNode mDock = module as ModuleDockingNode;
                if (mDock != null)
                {
                    return(new DockingPortValue(mDock, shared));
                }
                ModuleEnviroSensor mSense = module as ModuleEnviroSensor;
                if (mSense != null)
                {
                    return(new SensorValue(part, mSense, shared));
                }
                var gimbalModule = module as ModuleGimbal;
                if (gimbalModule != null)
                {
                    return(new GimbalValue(gimbalModule, shared));
                }
            }

            // Fallback if none of the above: then just a normal part:
            return(new PartValue(part, shared));
        }
Ejemplo n.º 3
0
 internal Sensor(Part part)
 {
     Part   = part;
     sensor = part.InternalPart.Module <ModuleEnviroSensor> ();
     if (sensor == null)
     {
         throw new ArgumentException("Part is not a sensor");
     }
 }
Ejemplo n.º 4
0
 internal Sensor(Part part)
 {
     this.part = part;
     sensor    = part.InternalPart.Module <ModuleEnviroSensor> ();
     if (sensor == null)
     {
         throw new ArgumentException("Part does not have a ModuleEnviroSensor PartModule");
     }
 }
Ejemplo n.º 5
0
        public override void fetchData()
        {
            float currentReading            = 0;
            ModuleEnviroSensor sensor       = part.Modules.OfType <ModuleEnviroSensor>().First();
            string             cleanedValue = Regex.Replace(sensor.readoutInfo, @"([0-9]+\.?[0-9]*).*", "$1");

            float.TryParse(cleanedValue, out currentReading);
            data.AddLast(currentReading);
        }
Ejemplo n.º 6
0
 private void InspectSensor(ModuleEnviroSensor sensor)
 {
     if (sensor == null || sensor.sensorType == null)
     {
         return;
     }
     if (sensor.sensorType == "TEMP")
     {
         String readout = sensor.readoutInfo;
         if (readout != null)
         {
             String temp = Regex.Replace(readout, "[^-.0-9]", "");
             if (temp.Length > 0)
             {
                 try
                 {
                     temperature      += double.Parse(temp);
                     sensorTempEnabled = true;
                     sensorTempCount++;
                 }
                 catch
                 {
                     if (Log.IsLogable(Log.LEVEL.DETAIL))
                     {
                         Log.Detail("invalid temp sensor value");
                     }
                 }
             }
         }
     }
     else if (sensor.sensorType == "GRAV")
     {
         String readout = sensor.readoutInfo;
         if (readout != null && readout.Length > 5)
         {
             String grav = readout.Substring(0, readout.Length - 5);
             try
             {
                 gravity          += double.Parse(grav);
                 sensorGravEnabled = true;
                 sensorGravCount++;
             }
             catch
             {
                 if (Log.IsLogable(Log.LEVEL.DETAIL))
                 {
                     Log.Detail("invalid temp sensor value");
                 }
             }
         }
     }
 }
Ejemplo n.º 7
0
            private void InspectSensor(ModuleEnviroSensor sensor)
            {
                if (IsOff(sensor))
                {
                    return;
                }
                if (!sensor.isEnabled)
                {
                    return;
                }
                String readout = sensor.readoutInfo;

                if (readout == null || readout == "")
                {
                    return;
                }

                if (sensor.sensorType == ModuleEnviroSensor.SensorType.TEMP)
                {
                    temperature      += ParseReadout(readout);
                    sensorTempEnabled = true;
                    sensorTempCount++;
                }
                else if (sensor.sensorType == ModuleEnviroSensor.SensorType.GRAV)
                {
                    gravity          += ParseReadout(readout);
                    sensorGravEnabled = true;
                    sensorGravCount++;
                }
                else if (sensor.sensorType == ModuleEnviroSensor.SensorType.PRES)
                {
                    pressure += ParseReadout(readout);
                    sensorPressureEnabled = true;
                    sensorPressureCnt++;
                }
                else if (sensor.sensorType == ModuleEnviroSensor.SensorType.ACC)
                {
                    seismic += ParseReadout(readout);
                    sensorSeismicEnabled = true;
                    sensorSeismicCnt++;
                }
            }
Ejemplo n.º 8
0
        private kList GetSensorList(SharedObjects shared)
        {
            kList list = new kList();

            list.AddColumn("Part Name", 37, ColumnAlignment.Left);
            list.AddColumn("Sensor Type", 11, ColumnAlignment.Left);

            foreach (Part part in shared.Vessel.Parts)
            {
                foreach (PartModule module in part.Modules)
                {
                    ModuleEnviroSensor sensor = module as ModuleEnviroSensor;
                    if (sensor != null)
                    {
                        list.AddItem(part.partInfo.title, sensor.sensorType);
                    }
                }
            }

            return(list);
        }
Ejemplo n.º 9
0
 private void ScanPart(Part part)
 {
     if (part.name != null)
     {
         //if (part.name.StartsWith("sensor") )
         {
             foreach (PartModule m in part.Modules)
             {
                 if (m is ModuleEnviroSensor)
                 {
                     ModuleEnviroSensor sensor = m as ModuleEnviroSensor;
                     if (!sensors.Contains(sensor))
                     {
                         sensors.Add(sensor);
                         if (Log.IsLogable(Log.LEVEL.TRACE))
                         {
                             Log.Trace("Added sensor module of type " + sensor.sensorType);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 10
0
 public SensorValue(global::Part part, ModuleEnviroSensor sensor, SharedObjects sharedObj) : base(part, sharedObj)
 {
     this.sensor = sensor;
     SensorInitializeSuffixes();
 }
Ejemplo n.º 11
0
 private bool IsOff(ModuleEnviroSensor sensor)
 {
     return(sensor.readoutInfo == Constants.STRING_OFF);
 }
Ejemplo n.º 12
0
        private void ConstructPart(global::Part part, PartValue parent, DecouplerValue decoupler)
        {
            if (part.State == PartStates.DEAD || part.transform == null)
            {
                return;
            }

            // Modules can be in any order, so to enforce some sort of priority for parts which are multiple types,
            // gather all potential modules and then select from those valid.
            IEngineStatus      engine    = null;
            ModuleRCS          rcs       = null;
            PartValue          separator = null;
            ModuleEnviroSensor sensor    = null;

            foreach (var module in part.Modules)
            {
                if (module is IEngineStatus)
                {
                    engine = module as IEngineStatus;
                }
                else if (module is ModuleRCS)
                {
                    rcs = module as ModuleRCS;
                }
                else if (module is IStageSeparator)
                {
                    var dock = module as ModuleDockingNode;
                    if (dock != null)
                    {
                        var port = new DockingPortValue(Shared, part, parent, decoupler, dock);
                        separator = port;
                        dockingPorts.Add(port);
                        if (!module.StagingEnabled())
                        {
                            continue;
                        }
                        decoupler = port;
                        decouplers.Add(decoupler);
                    }
                    // ignore anything with staging disabled and continue the search
                    // this can e.g. be heat shield or some sensor with integrated decoupler
                    else
                    {
                        if (!module.StagingEnabled())
                        {
                            continue;
                        }
                        if (module is LaunchClamp)
                        {
                            separator = decoupler = new LaunchClampValue(Shared, part, parent, decoupler);
                        }
                        else if (module is ModuleDecouple || module is ModuleAnchoredDecoupler)
                        {
                            separator = decoupler = new DecouplerValue(Shared, part, parent, decoupler);
                        }
                        else // ModuleServiceModule ?
                        {
                            continue; // rather continue the search
                        }
                        decouplers.Add(decoupler);
                    }
                    // ignore leftover decouplers
                    if (decoupler == null || decoupler.Part.inverseStage >= StageManager.CurrentStage)
                    {
                        continue;
                    }
                    // check if we just created closer decoupler (see StageValues.CreatePartSet)
                    if (nextDecoupler == null || decoupler.Part.inverseStage > nextDecoupler.Part.inverseStage)
                    {
                        nextDecoupler = decoupler;
                    }
                }
                else if (module is ModuleEnviroSensor)
                {
                    sensor = module as ModuleEnviroSensor;
                }
            }

            // Select part value in priority order
            PartValue self;

            if (engine != null)
            {
                self = new EngineValue(Shared, part, parent, decoupler);
            }
            else if (rcs != null)
            {
                self = new RCSValue(Shared, part, parent, decoupler, rcs);
            }
            else if (separator != null)
            {
                self = separator;
            }
            else if (sensor != null)
            {
                self = new SensorValue(Shared, part, parent, decoupler, sensor);
            }
            else
            {
                self = new PartValue(Shared, part, parent, decoupler);
            }

            if (rootPart == null)
            {
                rootPart = self;
            }
            partCache[part] = self;
            allParts.Add(self);
            foreach (var child in part.children)
            {
                ConstructPart(child, self, decoupler);
            }
            self.Children.IsReadOnly = true;
        }
Ejemplo n.º 13
0
 public SensorValue(global::Part part, ModuleEnviroSensor sensor, SharedObjects sharedObj)
     : base(part,sharedObj)
 {
     this.sensor = sensor;
     SensorInitializeSuffixes();
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Do not call! VesselTarget.ConstructPart uses this, would use `friend VesselTarget` if this was C++!
 /// </summary>
 internal SensorValue(SharedObjects shared, global::Part part, PartValue parent, DecouplerValue decoupler, ModuleEnviroSensor sensor) :
     base(shared, part, parent, decoupler)
 {
     this.sensor = sensor;
     RegisterInitializer(SensorInitializeSuffixes);
 }
Ejemplo n.º 15
0
        public override void Evaluate()
        {
            switch (RegexMatch.Groups[1].Value.ToUpper())
            {
            case "BODIES":
                StdOut("");
                StdOut("Name           Distance");
                StdOut("-------------------------------------");
                foreach (var body in FlightGlobals.fetch.bodies)
                {
                    StdOut(body.bodyName.PadLeft(14) + " " + Vector3d.Distance(body.position, Vessel.GetWorldPos3D()));
                }
                StdOut("");

                break;


            case "TARGETS":
                StdOut("");
                StdOut("Vessel Name              Distance");
                StdOut("-------------------------------------");

                double commRange = VesselUtils.GetCommRange(Vessel);

                foreach (Vessel vessel in FlightGlobals.Vessels)
                {
                    if (vessel != Vessel)
                    {
                        var vT = new VesselTarget(vessel, this);
                        if (vT.IsInRange(commRange))
                        {
                            StdOut(vT.target.vesselName.PadRight(24) + " " + vT.GetDistance().ToString("0.0").PadLeft(8));
                        }
                    }
                }

                StdOut("");

                break;

            case "RESOURCES":
                StdOut("");
                StdOut("Stage      Resource Name               Amount");
                StdOut("------------------------------------------------");

                foreach (Part part in Vessel.Parts)
                {
                    String stageStr = part.inverseStage.ToString();

                    foreach (PartResource resource in part.Resources)
                    {
                        StdOut(part.inverseStage.ToString() + " " + resource.resourceName.PadRight(20) + " " + resource.amount.ToString("0.00").PadLeft(8));
                    }
                }
                break;

            case "PARTS":
                StdOut("------------------------------------------------");

                foreach (Part part in Vessel.Parts)
                {
                    StdOut(part.ConstructID + " " + part.partInfo.name);
                }

                break;

            case "ENGINES":
                StdOut("------------------------------------------------");

                foreach (Part part in VesselUtils.GetListOfActivatedEngines(Vessel))
                {
                    foreach (PartModule module in part.Modules)
                    {
                        if (module is ModuleEngines)
                        {
                            var engineMod = (ModuleEngines)module;

                            StdOut(part.uid + "  " + part.inverseStage.ToString() + " " + engineMod.moduleName);
                        }
                    }
                }

                break;

            case "SENSORS":
                StdOut("");
                StdOut("Part Name                             Sensor Type");
                StdOut("------------------------------------------------");

                foreach (Part part in Vessel.Parts)
                {
                    foreach (PartModule module in part.Modules)
                    {
                        ModuleEnviroSensor sensor = module as ModuleEnviroSensor;
                        if (sensor != null)
                        {
                            if (part.partInfo.name.Length > 37)
                            {
                                StdOut(part.partInfo.title.PadRight(34) + "... " + sensor.sensorType);
                            }
                            else
                            {
                                StdOut(part.partInfo.title.PadRight(37) + " " + sensor.sensorType);
                            }
                        }
                    }
                }

                break;
            }

            State = ExecutionState.DONE;
        }
Ejemplo n.º 16
0
 public SensorValue(global::Part part, ModuleEnviroSensor sensor)
     : base(part)
 {
     this.sensor = sensor;
 }
Ejemplo n.º 17
0
 public SensorValue(global::Part part, ModuleEnviroSensor sensor, SharedObjects sharedObj) : base(part, sharedObj)
 {
     this.sensor = sensor;
 }
Ejemplo n.º 18
0
 public SensorValue(global::Part part, ModuleEnviroSensor sensor) : base(part)
 {
     this.sensor = sensor;
 }
Ejemplo n.º 19
0
 public SensorValue(global::Part part, ModuleEnviroSensor sensor, SharedObjects sharedObj)
     : base(part,sharedObj)
 {
     this.sensor = sensor;
 }