Added a configuration window to the spacecenter for the toggling of options, and cleaned up some failure reporting a bit.
[AntennaRange.git] / Extensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace AntennaRange
{
        public static class Extensions
        {
                public static IEnumerable<ILimitedScienceDataTransmitter> GetTransmitters (this Vessel vessel)
                {
                        List<ILimitedScienceDataTransmitter> Transmitters;
 
                        if (vessel.loaded) {
                                Transmitters = vessel.Parts
                                        .SelectMany (p => p.Modules.OfType<ILimitedScienceDataTransmitter> ())
                                        .ToList();
                        } else {
                                Transmitters = new List<ILimitedScienceDataTransmitter>();
 
                                foreach (ProtoPartModuleSnapshot ms in vessel.protoVessel.protoPartSnapshots.SelectMany(ps => ps.modules))
                                {
                                        if (ms.IsAntenna())
                                        {
                                                Transmitters.Add(new ProtoDataTransmitter(ms, vessel));
                                        }
                                }
                        }
 
                        return Transmitters;
                }
 
                public static bool IsAntenna (this PartModule module)
                {
                        return module.Fields.GetValue<bool> ("IsAntenna");
                }
 
                public static bool IsAntenna(this ProtoPartModuleSnapshot protomodule)
                {
                        bool result;
 
                        return Boolean.TryParse (protomodule.moduleValues.GetValue ("IsAntenna") ?? "False", out result)
                                ? result : false;
                }
        }
}