public KACAlarm(String NewName, double UT, AlarmTypeEnum atype, AlarmActions aAction) : this(UT) { Name = NewName; TypeOfAlarm = atype; this.Actions = aAction.Duplicate(); }
private void NewEarthAlarm() { AddType = KACAlarm.AlarmTypeEnum.EarthTime; strAlarmName = "Earth Calling..."; strAlarmNotes = ""; AddNotesHeight = 50; strAlarmEarthHour = DateTime.Now.AddHours(2).Hour.ToString(); strAlarmEarthMin = DateTime.Now.Minute.ToString(); AddAction = KACAlarm.AlarmActionEnum.PauseGame; AddActions = new AlarmActions(AlarmActions.WarpEnum.PauseGame, AlarmActions.MessageEnum.Yes, false, false); ///AddActionPlaySound = ?? }
public void FillEditWindow(int WindowID) { if (alarmEdit.Remaining.UT > 0) { //Edit the Alarm if its not yet passed Double MarginStarting = alarmEdit.AlarmMarginSecs; int intHeight_EditWindowCommon = 103 + alarmEdit.Notes.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Length * 16; if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Raw && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Crew && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.ScienceLab) { intHeight_EditWindowCommon += 28; } AlarmActions atemp = alarmEdit.Actions; WindowLayout_CommonFields(ref alarmEdit.Name, ref alarmEdit.Notes, ref atemp, ref alarmEdit.AlarmMarginSecs, alarmEdit.TypeOfAlarm, intHeight_EditWindowCommon); alarmEdit.Actions = atemp; //Adjust the UT of the alarm if the margin changed if (alarmEdit.AlarmMarginSecs != MarginStarting) { alarmEdit.AlarmTime.UT += MarginStarting - alarmEdit.AlarmMarginSecs; } //Draw warning if the vessel no longer exists if (alarmEdit.TypeOfAlarm == KACAlarm.AlarmTypeEnum.Crew) { DrawStoredCrewMissing(alarmEdit.VesselID); } else { DrawStoredVesselIDMissing(alarmEdit.VesselID); } //Draw the old and new times GUILayout.BeginHorizontal(); if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Raw && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Crew && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.ScienceLab) { GUILayout.Label("Time To Alarm:", KACResources.styleContent); GUILayout.Label((alarmEdit.AlarmTime - KACWorkerGameState.CurrentTime).ToStringStandard(settings.TimeSpanFormat), KACResources.styleAddHeading); } GUILayout.Label("Time To Event:", KACResources.styleContent); if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime) { GUILayout.Label((alarmEdit.AlarmTime - KACWorkerGameState.CurrentTime).Add(new KSPTimeSpan(alarmEdit.AlarmMarginSecs)).ToStringStandard(settings.TimeSpanFormat), KACResources.styleAddHeading); } else { GUILayout.Label(alarmEdit.Remaining.ToStringStandard(TimeSpanStringFormatsEnum.DateTimeFormat), KACResources.styleAddHeading); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Date of Event:", KACResources.styleContent); if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime) { GUILayout.Label(alarmEdit.AlarmTime.AddSeconds(alarmEdit.AlarmMarginSecs).ToStringStandard(DateStringFormatsEnum.DateTimeFormat), KACResources.styleAddHeading); } else { GUILayout.Label(DateTime.Now.AddSeconds(alarmEdit.Remaining.UT).ToLongTimeString(), KACResources.styleAddHeading); } GUILayout.EndHorizontal(); int intNoOfActionButtons = 0; int intNoOfActionButtonsDoubleLine = 0; //if the alarm has a vessel ID/Kerbal associated if (CheckVesselOrCrewForJump(alarmEdit.VesselID, alarmEdit.TypeOfAlarm)) { //option to allow jumping from SC and TS if (settings.AllowJumpFromViewOnly) { intNoOfActionButtons = DrawAlarmActionButtons(alarmEdit, out intNoOfActionButtonsDoubleLine); } } intNoOfActionButtons += DrawTransferAngleButtons(alarmEdit); if (GUILayout.Button("Close Alarm Details", KACResources.styleButton)) { settings.Save(); _ShowEditPane = false; } //TODO: Edit the height of this for when we have big text in restore button intAlarmEditHeight = 197 + 16 + 20 + alarmEdit.Notes.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Length * 16 + intNoOfActionButtons * 32 + intNoOfActionButtonsDoubleLine * 14; if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Raw && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Crew && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.ScienceLab) { intAlarmEditHeight += 28; } if (alarmEdit.TypeOfAlarm == KACAlarm.AlarmTypeEnum.EarthTime) { intAlarmEditHeight -= 28; } } else { //otherwise just show the details GUILayout.BeginVertical(GUI.skin.textArea); GUILayout.BeginHorizontal(); GUILayout.Label("Alarm:", KACResources.styleAlarmMessageTime); GUILayout.Label(alarmEdit.Name, KACResources.styleAlarmMessageTime); GUILayout.EndHorizontal(); GUILayout.Label(alarmEdit.Notes, KACResources.styleAlarmMessage); //Draw warning if the vessel no longer exists if (alarmEdit.TypeOfAlarm == KACAlarm.AlarmTypeEnum.Crew) { DrawStoredCrewMissing(alarmEdit.VesselID); } else { DrawStoredVesselIDMissing(alarmEdit.VesselID); } GUILayout.EndVertical(); //Draw the old and new times GUILayout.BeginHorizontal(); if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Raw && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.Crew && alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.ScienceLab) { GUILayout.Label("Time To Alarm:", KACResources.styleContent); GUILayout.Label((alarmEdit.AlarmTime - KACWorkerGameState.CurrentTime).ToStringStandard(settings.TimeSpanFormat), KACResources.styleAddHeading); } GUILayout.Label("Time To Event:", KACResources.styleContent); if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime) { GUILayout.Label((alarmEdit.AlarmTime - KACWorkerGameState.CurrentTime).Add(new KSPTimeSpan(alarmEdit.AlarmMarginSecs)).ToStringStandard(settings.TimeSpanFormat), KACResources.styleAddHeading); } else { GUILayout.Label(alarmEdit.Remaining.ToStringStandard(TimeSpanStringFormatsEnum.DateTimeFormat), KACResources.styleAddHeading); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Date of Event:", KACResources.styleContent); if (alarmEdit.TypeOfAlarm != KACAlarm.AlarmTypeEnum.EarthTime) { GUILayout.Label(alarmEdit.AlarmTime.AddSeconds(alarmEdit.AlarmMarginSecs).ToStringStandard(DateStringFormatsEnum.DateTimeFormat), KACResources.styleAddHeading); } else { GUILayout.Label(DateTime.Now.AddSeconds(alarmEdit.Remaining.UT).ToLongTimeString(), KACResources.styleAddHeading); } GUILayout.EndHorizontal(); int intNoOfActionButtons = 0; int intNoOfActionButtonsDoubleLine = 0; //if the alarm has a vessel ID/Kerbal associated if (CheckVesselOrCrewForJump(alarmEdit.VesselID, alarmEdit.TypeOfAlarm)) { //option to allow jumping from SC and TS if (settings.AllowJumpFromViewOnly) { intNoOfActionButtons = DrawAlarmActionButtons(alarmEdit, out intNoOfActionButtonsDoubleLine); } } intNoOfActionButtons += DrawTransferAngleButtons(alarmEdit); if (GUILayout.Button("Close Alarm Details", KACResources.styleButton)) { _ShowEditPane = false; } intAlarmEditHeight = 152 + 20 + alarmEdit.Notes.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Length * 16 + intNoOfActionButtons * 32 + intNoOfActionButtonsDoubleLine * 14; } SetTooltipText(); }
private void AddContractAutoAlarm(Contract contract, Double margin, AlarmActions action) { //If theres already an alarm then leave it alone if (alarms.Any(a => a.ContractGUID == contract.ContractGuid)) return; //log LogFormatted("Adding new {3} Contract Alarm for: {0}({1})-{2}", contract.Title, contract.ContractGuid, contract.DateExpire, contract.ContractState); //gen the text String AlarmName, AlarmNotes; GenerateContractStringsFromContract(contract, out AlarmName, out AlarmNotes); //create the alarm KACAlarm tmpAlarm = new KACAlarm("", AlarmName, AlarmNotes, contract.DateNext() - margin, margin, KACAlarm.AlarmTypeEnum.ContractAuto, action); //add the contract specifics tmpAlarm.ContractGUID = contract.ContractGuid; tmpAlarm.ContractAlarmType = contract.AlarmType(); //add it to the list alarms.Add(tmpAlarm); }
private void CreateAutoContracts(Settings.AutoContractBehaviorEnum TypeOfAuto, Contract.State state, Boolean DontCreateAlarmsInsideMargin, Double margin, AlarmActions action) { if (TypeOfAuto == Settings.AutoContractBehaviorEnum.Next && DontCreateAlarmsInsideMargin) { //find the next valid contract to have an alarm for Contract conNext = lstContracts.Where(ci => ci.ContractState == state && ci.DateNext() > KACWorkerGameState.CurrentTime.UT + margin) .OrderBy(ci => ci.DateNext()) .FirstOrDefault(); if (conNext != null) { AddContractAutoAlarm(conNext, margin, action); } } else if (TypeOfAuto == Settings.AutoContractBehaviorEnum.All || TypeOfAuto == Settings.AutoContractBehaviorEnum.Next) { Boolean FirstOutsideMargin = false; foreach (Contract c in lstContracts.Where(ci => ci.ContractState == state && ci.DateNext() > KACWorkerGameState.CurrentTime.UT).OrderBy(ci => ci.DateNext())) { AddContractAutoAlarm(c, margin, action); FirstOutsideMargin = (c.DateNext() > KACWorkerGameState.CurrentTime.UT + margin); if (TypeOfAuto == Settings.AutoContractBehaviorEnum.Next && FirstOutsideMargin) break; } } }
public KACAlarm(String vID, String NewName, String NewNotes, double UT, Double Margin, AlarmTypeEnum atype, AlarmActions aAction, ITargetable NewTarget) : this(vID, NewName, NewNotes, UT, Margin, atype, aAction) { //Set the ITargetable proerty TargetObject = NewTarget; }
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; }
public KACAlarm(String vID, String NewName, String NewNotes, double UT, Double Margin, AlarmTypeEnum atype, AlarmActions aAction, List <ManeuverNode> NewManeuvers) : this(vID, NewName, NewNotes, UT, Margin, atype, aAction) { //set maneuver node ManNodes = NewManeuvers; }
public KACAlarm(String vID, String NewName, String NewNotes, double UT, Double Margin, AlarmTypeEnum atype, AlarmActions aAction) : this(vID, NewName, UT, atype, aAction) { Notes = NewNotes; AlarmMarginSecs = Margin; }
public KACAlarm(String vID, String NewName, double UT, AlarmTypeEnum atype, AlarmActions aAction) : this(NewName, UT, atype, aAction) { VesselID = vID; }
/// <summary> /// Code to reset the settings etc when the new button is hit /// </summary> private void NewAddAlarm() { //Set time variables timeRaw.BuildFromUT(600); strRawUT = ""; _ShowAddMessages = false; //option for xfer mode if (settings.XferUseModelData) intXferType = 0; else intXferType = 1; //default margin timeMargin.BuildFromUT(settings.AlarmDefaultMargin); //set default strings if (KACWorkerGameState.CurrentVessel != null) strAlarmName = KACWorkerGameState.CurrentVessel.vesselName + ""; else strAlarmName = "No Vessel"; strAlarmNotes = ""; AddNotesHeight = 100; AddActions = settings.AlarmDefaultAction.Duplicate(); //blnHaltWarp = true; //set initial alarm type based on whats on the flight path if (KACWorkerGameState.ManeuverNodeExists) AddType = KACAlarm.AlarmTypeEnum.Maneuver;//AddAlarmType.Node; else if (KACWorkerGameState.SOIPointExists) AddType = KACAlarm.AlarmTypeEnum.SOIChange;//AddAlarmType.Node; else AddType = KACAlarm.AlarmTypeEnum.Raw;//AddAlarmType.Node; //trigger the work to set each type AddTypeChanged(); //build the XFer parents list SetUpXferParents(); intXferCurrentParent = 0; SetupXferOrigins(); intXferCurrentOrigin = 0; if (KACWorkerGameState.CurrentVessel != null) { //if the craft is orbiting a body on the parents list then set it as the default if (XferParentBodies.Contains(KACWorkerGameState.CurrentVessel.mainBody.referenceBody)) { intXferCurrentParent = XferParentBodies.IndexOf(KACWorkerGameState.CurrentVessel.mainBody.referenceBody); SetupXferOrigins(); intXferCurrentOrigin = XferOriginBodies.IndexOf(KACWorkerGameState.CurrentVessel.mainBody); } } //set initial targets SetupXFerTargets(); intXferCurrentTarget = 0; intSelectedCrew = 0; intSelectedContract = 0; strCrewUT = ""; ddlKERNodeMargin.SelectedIndex = (Int32)settings.DefaultKERMargin; //ddlAddAlarm.SelectedIndex = ddlAddAlarm.Items.IndexOf(settings.AlarmsSoundName); //PlaySound = settings.AlarmPlaySound; }
private void NewEarthAlarm() { AddType = KACAlarm.AlarmTypeEnum.EarthTime; strAlarmName="Earth Calling..."; strAlarmNotes=""; AddNotesHeight = 50; strAlarmEarthHour = DateTime.Now.AddHours(2).Hour.ToString(); strAlarmEarthMin = DateTime.Now.Minute.ToString(); AddAction = KACAlarm.AlarmActionEnum.PauseGame; AddActions = new AlarmActions(AlarmActions.WarpEnum.PauseGame, AlarmActions.MessageEnum.Yes, false, false); ///AddActionPlaySound = ?? }