Skip to content

Commit 58cc056

Browse files
author
Sander Hoksbergen
committed
1 parent 1fb1f37 commit 58cc056

3 files changed

Lines changed: 29 additions & 20 deletions

File tree

src/RemoteTech2/FlightComputer/FlightComputer.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ private void Enqueue(FlightCtrlState fs)
102102
private void PopFlightCtrlState(FlightCtrlState fcs)
103103
{
104104
FlightCtrlState delayed = mPreviousFcs;
105+
mPreviousFcs.Neutralize();
105106
while (mFlightCtrlBuffer.Count > 0 && mFlightCtrlBuffer.Peek().TimeStamp < RTUtil.GameTime)
106107
{
107108
delayed = mFlightCtrlBuffer.Dequeue().State;
@@ -167,12 +168,16 @@ private void OnFlyByWirePre(FlightCtrlState fcs)
167168
var satellite = RTCore.Instance.Satellites[mParent.Guid];
168169
if (satellite == null || satellite.SignalProcessor != mParent) return;
169170

170-
if (mVessel == FlightGlobals.ActiveVessel && InputAllowed)
171+
if (mVessel == FlightGlobals.ActiveVessel && InputAllowed && !satellite.HasLocalControl)
171172
{
172173
Enqueue(fcs);
173174
}
174175

175-
PopFlightCtrlState(fcs);
176+
if (!satellite.HasLocalControl)
177+
{
178+
PopFlightCtrlState(fcs);
179+
}
180+
176181
}
177182

178183
private void OnFlyByWirePost(FlightCtrlState fcs)
@@ -184,6 +189,8 @@ private void OnFlyByWirePost(FlightCtrlState fcs)
184189
{
185190
fcs.Neutralize();
186191
}
192+
193+
mPreviousFcs.CopyFrom(fcs);
187194
}
188195

189196
IEnumerator IEnumerable.GetEnumerator()

src/RemoteTech2/Modules/ModuleRTAntenna.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,10 @@ public virtual void SetState(bool state)
130130
{
131131
bool prev_state = IsRTActive;
132132
IsRTActive = state && !IsRTBroken;
133-
Events["EventOpen"].guiActive = !IsRTActive && !IsRTBroken;
134-
Events["EventOpen"].active = Events["EventOpen"].guiActive;
135-
Events["EventClose"].guiActive = IsRTActive && !IsRTBroken;
136-
Events["EventClose"].active = Events["EventClose"].guiActive;
133+
Events["EventOpen"].guiActive = Events["OverrideOpen"].guiActiveUnfocused = !IsRTActive && !IsRTBroken;
134+
Events["EventOpen"].active = Events["OverrideOpen"].guiActiveUnfocused = Events["EventOpen"].guiActive;
135+
Events["EventClose"].guiActive = Events["OverrideClose"].guiActiveUnfocused = IsRTActive && !IsRTBroken;
136+
Events["EventClose"].active = Events["OverrideClose"].guiActiveUnfocused = Events["EventClose"].guiActive;
137137
UpdateContext();
138138
if(IsRTActive != prev_state) StartCoroutine(SetFXModules_Coroutine(mDeployFxModules, IsRTActive ? 1.0f : 0.0f));
139139
var satellite = RTCore.Instance.Network[Guid];
@@ -201,13 +201,27 @@ public void ActionClose(KSPActionParam param)
201201
EventClose();
202202
}
203203

204-
[KSPEvent(name = "OverrideTarget", active = true, guiActiveUnfocused = true, unfocusedRange = 10, externalToEVAOnly = true, guiName = "[EVA] Set Target")]
204+
[KSPEvent(name = "OverrideTarget", active = true, guiActiveUnfocused = true, unfocusedRange = 5, externalToEVAOnly = true, guiName = "[EVA] Set Target")]
205205
[IgnoreSignalDelayAttribute]
206206
public void OverrideTarget()
207207
{
208208
(new AntennaWindow(this)).Show();
209209
}
210210

211+
[KSPEvent(name = "OverrideOpen", active = true, guiActiveUnfocused = true, unfocusedRange = 5, externalToEVAOnly = true, guiName = "[EVA] Force Open")]
212+
[IgnoreSignalDelayAttribute]
213+
public void OverrideOpen()
214+
{
215+
EventOpen();
216+
}
217+
218+
[KSPEvent(name = "OverrideClose", active = true, guiActiveUnfocused = true, unfocusedRange = 5, externalToEVAOnly = true, guiName = "[EVA] Force Close")]
219+
[IgnoreSignalDelayAttribute]
220+
public void OverrideClose()
221+
{
222+
EventClose();
223+
}
224+
211225
public void OnConnectionRefresh()
212226
{
213227
SetState(IsRTActive);

src/RemoteTech2/RTCore.cs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,7 @@ public void Update()
6868
}
6969
else if (vs.HasLocalControl)
7070
{
71-
foreach (KSPActionGroup ag in GetActivatedGroup())
72-
{
73-
FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(ag);
74-
if (ag == KSPActionGroup.Stage && !FlightInputHandler.fetch.stageLock)
75-
{
76-
Staging.ActivateNextStage();
77-
ResourceDisplay.Instance.Refresh();
78-
}
79-
if (ag == KSPActionGroup.RCS)
80-
{
81-
FlightInputHandler.fetch.rcslock = !FlightInputHandler.RCSLock;
82-
}
83-
}
71+
ReleaseLocks();
8472
}
8573
}
8674
else

0 commit comments

Comments
 (0)