private void RecalcTransferAlarmTimes(Boolean OverrideDriftThreshold) { foreach (KACAlarm tmpAlarm in alarms.Where(a => a.TypeOfAlarm == KACAlarm.AlarmTypeEnum.Transfer)) { if (tmpAlarm.Remaining.UT > settings.AlarmXferRecalcThreshold) { KACXFerTarget tmpTarget = new KACXFerTarget(); tmpTarget.Origin = FlightGlobals.Bodies.Single(b => b.bodyName == tmpAlarm.XferOriginBodyName); tmpTarget.Target = FlightGlobals.Bodies.Single(b => b.bodyName == tmpAlarm.XferTargetBodyName); //LogFormatted("{0}+{1}-{2}", KACWorkerGameState.CurrentTime.UT.ToString(), tmpTarget.AlignmentTime.UT.ToString(), tmpAlarm.AlarmMarginSecs.ToString()); //recalc the transfer spot, but dont move it if the difference is more than the threshold value if (Math.Abs(KACWorkerGameState.CurrentTime.UT - tmpTarget.AlignmentTime.UT) < settings.AlarmXferRecalcThreshold || OverrideDriftThreshold) tmpAlarm.AlarmTime.UT = KACWorkerGameState.CurrentTime.UT - tmpAlarm.AlarmMarginSecs + tmpTarget.AlignmentTime.UT; } } }
public KACAlarm(String vID, String NewName, String NewNotes, double UT, Double Margin, AlarmTypeEnum atype, AlarmActions aAction, KACXFerTarget NewTarget) : this(vID, NewName, NewNotes, UT, Margin, atype, aAction) { //Set target details XferOriginBodyName = NewTarget.Origin.bodyName; XferTargetBodyName = NewTarget.Target.bodyName; }
private void SetupXFerTargets() { XferTargetBodies = new List<KACXFerTarget>(); //Loop through the Siblings of the origin planet foreach (CelestialBody bdyTarget in XferOriginBodies.OrderBy(b => b.orbit.semiMajorAxis)) { //add all the other siblings as target possibilities if (bdyTarget != XferOriginBodies[intXferCurrentOrigin]) { KACXFerTarget tmpTarget = new KACXFerTarget(); tmpTarget.Origin = XferOriginBodies[intXferCurrentOrigin]; tmpTarget.Target = bdyTarget; //tmpTarget.SetPhaseAngleTarget(); //add it to the list XferTargetBodies.Add(tmpTarget); } } if (intXferCurrentTarget > XferTargetBodies.Count) intXferCurrentTarget = 0; if (AddType == KACAlarm.AlarmType.Transfer || AddType == KACAlarm.AlarmType.TransferModelled) BuildTransferStrings(); }
public KACAlarm(String vID, String NewName, String NewNotes, double UT, Double Margin, AlarmType atype, Boolean NewHaltWarp, Boolean NewPause, KACXFerTarget NewTarget) : this(vID, NewName, NewNotes, UT, Margin, atype, NewHaltWarp, NewPause) { //Set target details XferOriginBodyName = NewTarget.Origin.bodyName; XferTargetBodyName = NewTarget.Target.bodyName; }