Skip to content

Commit da74cba

Browse files
committed
Fixes for disabled RemoteTech
1 parent da7fd88 commit da74cba

7 files changed

Lines changed: 61 additions & 25 deletions

File tree

src/RemoteTech/FlightComputer/FlightComputer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,14 @@ public void Remove(ICommand cmd)
175175

176176
public void OnUpdate()
177177
{
178+
if (RTCore.Instance == null) return;
178179
if (!SignalProcessor.IsMaster) return;
179180
PopCommand();
180181
}
181182

182183
public void OnFixedUpdate()
183184
{
185+
if (RTCore.Instance == null) return;
184186
if (Vessel == null)
185187
{
186188
Vessel = SignalProcessor.Vessel;

src/RemoteTech/Modules/ModuleRTAntenna.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class ModuleRTAntenna : PartModule, IAntenna
1515
public String Name { get { return part.partInfo.title; } }
1616
public Guid Guid { get { return mRegisteredId; } }
1717
public bool Powered { get { return IsRTPowered; } }
18-
public bool Connected { get { return RTCore.Instance.Network.Graph [Guid].Any (l => l.Interfaces.Contains (this)); } }
18+
public bool Connected { get { return (RTCore.Instance != null && RTCore.Instance.Network.Graph [Guid].Any (l => l.Interfaces.Contains (this))); } }
1919
public bool Activated { get { return IsRTActive; } set { SetState(value); } }
2020
public bool CanAnimate { get { return mDeployFxModules.Count > 0; } }
2121
public bool AnimClosed { get { return mDeployFxModules.Any(fx => fx.GetScalar <= 0.1f ); } }
@@ -204,6 +204,9 @@ public virtual void SetState(bool state)
204204
RemoveTransmitter();
205205
}
206206
}
207+
else {
208+
AddTransmitter();
209+
}
207210
}
208211

209212
[KSPEvent(name = "EventToggle", guiActive = false)]
@@ -596,7 +599,7 @@ private void OnPartUndock(Part p)
596599

597600
private void OnVesselModified(Vessel v)
598601
{
599-
if ((mRegisteredId != vessel.id))
602+
if (RTCore.Instance != null && mRegisteredId != vessel.id)
600603
{
601604
RTCore.Instance.Antennas.Unregister(mRegisteredId, this);
602605
mRegisteredId = vessel.id;

src/RemoteTech/Modules/ModuleRTAntennaPassive.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class ModuleRTAntennaPassive : PartModule, IAntenna
1111
public String Name { get { return part.partInfo.title; } }
1212
public Guid Guid { get { return vessel.id; } }
1313
public bool Powered { get { return Activated; } }
14-
public bool Connected { get { return RTCore.Instance.Network.Graph [Guid].Any (l => l.Interfaces.Contains (this)); } }
14+
public bool Connected { get { return (RTCore.Instance != null && RTCore.Instance.Network.Graph [Guid].Any (l => l.Interfaces.Contains (this))); } }
1515
public bool Activated { get { return Unlocked; } set { return; } }
1616
public bool Animating { get { return false; } }
1717

@@ -88,15 +88,18 @@ public override string GetInfo()
8888
public virtual void SetState(bool state)
8989
{
9090
IsRTActive = state;
91-
var satellite = RTCore.Instance.Network[Guid];
92-
bool route_home = RTCore.Instance.Network[satellite].Any(r => r.Links[0].Interfaces.Contains(this) && RTCore.Instance.Network.GroundStations.ContainsKey(r.Goal.Guid));
93-
if (mTransmitter == null && route_home)
91+
if(RTCore.Instance != null)
9492
{
95-
AddTransmitter();
96-
}
97-
else if (!route_home && mTransmitter != null)
98-
{
99-
RemoveTransmitter();
93+
var satellite = RTCore.Instance.Network[Guid];
94+
bool route_home = RTCore.Instance.Network[satellite].Any(r => r.Links[0].Interfaces.Contains(this) && RTCore.Instance.Network.GroundStations.ContainsKey(r.Goal.Guid));
95+
if (mTransmitter == null && route_home)
96+
{
97+
AddTransmitter();
98+
}
99+
else if (!route_home && mTransmitter != null)
100+
{
101+
RemoveTransmitter();
102+
}
100103
}
101104
}
102105

@@ -230,7 +233,7 @@ private void OnPartUndock(Part p)
230233

231234
private void OnVesselModified(Vessel v)
232235
{
233-
if ((mRegisteredId != vessel.id))
236+
if (RTCore.Instance != null && mRegisteredId != vessel.id)
234237
{
235238
RTCore.Instance.Antennas.Unregister(mRegisteredId, this);
236239
mRegisteredId = vessel.id;

src/RemoteTech/Modules/ModuleRTDataTransmitter.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public String
2626
// Compatible with ModuleDataTransmitter
2727
public override void OnLoad(ConfigNode node)
2828
{
29+
RTLog.Notify("ModuleRTDataTransmitter::OnLoad");
2930
foreach (ConfigNode data in node.GetNodes("CommsData"))
3031
{
3132
scienceDataQueue.Add(new ScienceData(data));
@@ -38,16 +39,19 @@ public override void OnLoad(ConfigNode node)
3839
// Compatible with ModuleDataTransmitter
3940
public override void OnSave(ConfigNode node)
4041
{
42+
RTLog.Notify("ModuleRTDataTransmitter::OnSave");
4143
scienceDataQueue.ForEach(d => d.Save(node.AddNode("CommsData")));
4244
}
4345

4446
bool IScienceDataTransmitter.CanTransmit()
4547
{
48+
RTLog.Notify("ModuleRTDataTransmitter::CanTransmit");
4649
return true;
4750
}
4851

4952
void IScienceDataTransmitter.TransmitData(List<ScienceData> dataQueue, Callback callback)
5053
{
54+
RTLog.Notify("ModuleRTDataTransmitter::TransmitData(2p)");
5155
scienceDataQueue.AddRange(dataQueue);
5256
if (!isBusy)
5357
{
@@ -61,6 +65,7 @@ void IScienceDataTransmitter.TransmitData(List<ScienceData> dataQueue, Callback
6165

6266
void IScienceDataTransmitter.TransmitData(List<ScienceData> dataQueue)
6367
{
68+
RTLog.Notify("ModuleRTDataTransmitter::TransmitData(1p)");
6469
scienceDataQueue.AddRange(dataQueue);
6570
if (!isBusy)
6671
{
@@ -70,6 +75,7 @@ void IScienceDataTransmitter.TransmitData(List<ScienceData> dataQueue)
7075

7176
private IEnumerator Transmit(Callback callback = null)
7277
{
78+
RTLog.Notify("ModuleRTDataTransmitter::Transmit");
7379
var msg = new ScreenMessage(String.Format("[{0}]: Starting Transmission...", part.partInfo.title), 4f, ScreenMessageStyle.UPPER_LEFT);
7480
var msgStatus = new ScreenMessage(String.Empty, 4.0f, ScreenMessageStyle.UPPER_LEFT);
7581
ScreenMessages.PostScreenMessage(msg);

src/RemoteTech/Modules/ModuleSPU.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,12 @@ public override void OnStart(StartState state)
7979
GameEvents.onPartUndock.Add(OnPartUndock);
8080
GameEvents.onPartActionUICreate.Add(onPartActionUICreate);
8181
mRegisteredId = vessel.id;
82-
RTCore.Instance.Satellites.Register(vessel, this);
83-
if (FlightComputer == null)
84-
FlightComputer = new FlightComputer.FlightComputer(this);
82+
if(RTCore.Instance != null)
83+
{
84+
RTCore.Instance.Satellites.Register(vessel, this);
85+
if (FlightComputer == null)
86+
FlightComputer = new FlightComputer.FlightComputer(this);
87+
}
8588
}
8689
Fields["GUI_Status"].guiActive = ShowGUI_Status;
8790
}
@@ -101,14 +104,14 @@ public void OnDestroy()
101104
{
102105
RTCore.Instance.Satellites.Unregister(mRegisteredId, this);
103106
mRegisteredId = Guid.Empty;
107+
if (FlightComputer != null) FlightComputer.Dispose();
104108
}
105-
if (FlightComputer != null) FlightComputer.Dispose();
106109
}
107110

108111
private State UpdateControlState()
109112
{
110113
IsRTPowered = part.isControlSource;
111-
if (!RTCore.Instance)
114+
if (RTCore.Instance == null)
112115
{
113116
return State.Operational;
114117
}
@@ -153,7 +156,7 @@ public void OnPartUndock(Part p)
153156

154157
public void OnVesselModified(Vessel v)
155158
{
156-
if ((mRegisteredId != vessel.id))
159+
if (RTCore.Instance != null && mRegisteredId != vessel.id)
157160
{
158161
RTCore.Instance.Satellites.Unregister(mRegisteredId, this);
159162
mRegisteredId = vessel.id;
@@ -171,8 +174,13 @@ public void HookPartMenus()
171174
e.Invoke();
172175
return;
173176
}
177+
178+
VesselSatellite vs = null;
179+
if(RTCore.Instance != null)
180+
{
181+
vs = RTCore.Instance.Satellites[v];
182+
}
174183

175-
var vs = RTCore.Instance.Satellites[v];
176184
if (vs == null || vs.HasLocalControl)
177185
{
178186
e.Invoke();

src/RemoteTech/Modules/ModuleSPUPassive.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ public override void OnStart(StartState state)
3636
{
3737
GameEvents.onVesselWasModified.Add(OnVesselModified);
3838
GameEvents.onPartUndock.Add(OnPartUndock);
39-
mRegisteredId = vessel.id;
40-
RTCore.Instance.Satellites.Register(vessel, this);
39+
mRegisteredId = vessel.id;
40+
if(RTCore.Instance != null)
41+
{
42+
RTCore.Instance.Satellites.Register(vessel, this);
43+
}
4144
}
4245
}
4346

@@ -68,7 +71,7 @@ public void OnPartUndock(Part p)
6871

6972
public void OnVesselModified(Vessel v)
7073
{
71-
if ((mRegisteredId != vessel.id))
74+
if (RTCore.Instance != null && mRegisteredId != vessel.id)
7275
{
7376
RTCore.Instance.Satellites.Unregister(mRegisteredId, this);
7477
mRegisteredId = vessel.id;

src/RemoteTech/RTCore.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,21 @@ public class RTCoreFlight : RTCore
210210
{
211211
public new void Start()
212212
{
213-
base.ManeuverNodeOverlay = new ManeuverNodeOverlay();
214213
base.Start();
214+
if (RTCore.Instance != null)
215+
{
216+
base.ManeuverNodeOverlay = new ManeuverNodeOverlay();
217+
base.ManeuverNodeOverlay.OnEnterMapView();
218+
}
219+
}
220+
221+
private new void OnDestroy()
222+
{
223+
if (RTCore.Instance != null)
224+
{
225+
base.ManeuverNodeOverlay.OnExitMapView();
226+
}
227+
base.OnDestroy();
215228
}
216229
}
217230

@@ -225,7 +238,6 @@ public class RTCoreTracking : RTCore
225238
{
226239
base.FilterOverlay.OnEnterMapView();
227240
base.FocusOverlay.OnEnterMapView();
228-
base.ManeuverNodeOverlay.OnEnterMapView();
229241
}
230242
}
231243

@@ -235,7 +247,6 @@ public class RTCoreTracking : RTCore
235247
{
236248
base.FilterOverlay.OnExitMapView();
237249
base.FocusOverlay.OnExitMapView();
238-
base.ManeuverNodeOverlay.OnExitMapView();
239250
}
240251
base.OnDestroy();
241252
}

0 commit comments

Comments
 (0)