public const string _automapControlPanelKey = "automapControlPanelKey";
private const string _statusTextKey = @"txtStatus";
private const string _noteTextKey = @"edtNote";
+ private const string _swAutostart = @"swAutostart";
+ private const string _btnRunKey = @"btnRun";
+ private const string _btnSnapKey = @"btnSnap";
private ILogger Logger;
-
+ private PersistedConfiguration configuration;
private long dashTickHandle;
public override string ToggleKeyCombinationCode
}
private uint totalShards, voidShards, changesThisTick;
- private RunState lastState;
+ private CommandType lastState;
- public AutomapGUIDialog(ICoreClientAPI capi, AutomapSystem ams) : base(capi)
+ public AutomapGUIDialog(ICoreClientAPI capi, AutomapSystem ams, PersistedConfiguration cfg) : base(capi)
{
-
+ configuration = cfg;
Logger = capi.Logger;
SetupDialog();
capi.Event.RegisterEventBusListener(AutomapStatusMsg, 1.0D, AutomapSystem.AutomapStatusEventKey);
+ }
+ public AutomapGUIDialog(ICoreClientAPI capi) : base(capi)
+ {
}
//Event for GUI status display
toggleBounds.fixedHeight = 24;
toggleBounds.fixedWidth = 64;
+ ElementBounds autostartBounds = toggleBounds.RightCopy(66, 0, 1, 1);
+ autostartBounds.fixedHeight = 24;
+ autostartBounds.fixedWidth = 80;
+
ElementBounds txtStatusBounds = textBounds.CopyOffsetedSibling(0, 26, 2, 4);
txtStatusBounds.fixedHeight = 16;
txtStatusBounds.percentWidth = 1;
txtNoteArea.fixedHeight = 24;
txtNoteArea.fixedWidth = 256;
+ ElementBounds btnSnapshotArea = btnNoteArea.CopyOffsetedSibling(0, 64, 2, 5);
+ btnNoteArea.fixedHeight = 24;
+ btnNoteArea.fixedWidth = 28;
+
this.SingleComposer = capi.Gui.CreateCompo("automapControlPanel", dialogBounds)
.AddShadedDialogBG(bgBounds)
.AddDialogTitleBar("Automap Controls", OnTitleBarCloseClicked)
.AddStaticText("Configure Automap settings:", CairoFont.WhiteDetailText(), textBounds)
- .AddToggleButton("Run", CairoFont.ButtonText(), RunToggle, toggleBounds, "btnRun")
+ .AddToggleButton("Run", CairoFont.ButtonText(), RunToggle, toggleBounds, _btnRunKey)
+ .AddSwitch(AutostartChange,autostartBounds,_swAutostart)
+ .AddStaticText("Autostart",CairoFont.WhiteDetailText(),autostartBounds.RightCopy(16))
.AddDynamicText("Idle.", CairoFont.WhiteSmallText().WithFontSize(12), EnumTextOrientation.Left, txtStatusBounds, _statusTextKey)
.AddTextInput(txtNoteArea, null, CairoFont.WhiteMediumText().WithFontSize(16), _noteTextKey)
.AddButton("Note:", CreateNote, btnNoteArea, CairoFont.ButtonText())
+ .AddButton("Snapshot!", TriggerSnapshot, btnSnapshotArea, CairoFont.ButtonText( ), key: _btnSnapKey)
.Compose();
- //Controls for ALL Block & Entity Designators (Enable/Disable)
+ //Controls for ALL Block & Entity Designators (Enable/Disable) <-- block edits while in 'Run' state
//_automapSystem.BlockID_Designators
//_automapSystem.Entity_Designators
//Renderer selection
//Message verbosity? Speed?
-
- //A Button to add POI - notes manually (when AM running)
+ var swAutostart = this.SingleComposer.GetSwitch(_swAutostart);
+ swAutostart.On = this.configuration.Autostart;
}
TryClose();
}
+ public override void OnGuiOpened( )
+ {
+ base.OnGuiOpened( );
+ UpdateDashDisplay(0f);
+ if (dashTickHandle == 0L) dashTickHandle = capi.Event.RegisterGameTickListener(UpdateDashDisplay, 1000);
+ }
+
+ public override void OnGuiClosed( )
+ {
+ base.OnGuiClosed( );
+
+ if (dashTickHandle != 0L) capi.Event.UnregisterGameTickListener(dashTickHandle);
+ }
+
/// <summary>
/// Toggle Automap from/to RUN state
/// </summary>
internal void RunToggle(bool toggle)
{
Logger.VerboseDebug("Dialog Changed; [ Automap Enabled: {0} ]", toggle);
- var statusText = this.SingleComposer.GetDynamicText(_statusTextKey);
- statusText.SetNewText($"State: {(toggle ? "Run" : "Halt")}, Total: {totalShards}, Nulls: {voidShards} ");
- CommandData cmd;
-
- if (toggle)
- {
- dashTickHandle = capi.Event.RegisterGameTickListener(UpdateDashDisplay, 6001);
- cmd = new CommandData(toggle ? RunState.Run : RunState.Stop, new bool[] { true, true, true, true, true });
- }
- else
- {
- capi.Event.UnregisterGameTickListener(dashTickHandle);
- cmd = new CommandData(toggle ? RunState.Run : RunState.Stop);
- }
+ UpdateDashDisplay(0f);
+
+ CommandData cmd = new CommandData(toggle ? CommandType.Run : CommandType.Stop);
capi.Event.PushEvent(AutomapSystem.AutomapCommandEventKey, cmd);
}
private bool CreateNote()
{
- var noteCmd = new CommandData(RunState.Notation);
+ var noteCmd = new CommandData(CommandType.Notation);
var txtNote = this.SingleComposer.GetTextInput(_noteTextKey);
if (!String.IsNullOrWhiteSpace(txtNote.GetText()))
{
- noteCmd.Notation = txtNote.GetText();
+ noteCmd.Notation = txtNote.GetText().Replace("\n", " ");
txtNote.SetValue(string.Empty);
capi.Event.PushEvent(AutomapSystem.AutomapCommandEventKey, noteCmd);
}
- return false;//???
+ return true;//FINDOUT: What does this DO?
+ }
+
+ private bool TriggerSnapshot( )
+ {
+ var snappyCmd = new CommandData(CommandType.Snapshot);
+
+ capi.Event.PushEvent(AutomapSystem.AutomapCommandEventKey, snappyCmd);
+
+ return true;//FINDOUT: What does this DO?
+ }
+
+ private void AutostartChange(bool startValue)
+ {
+ configuration.Autostart = startValue;
}
private void AutomapStatusMsg(string eventName, ref EnumHandling handling, IAttribute data)
private void UpdateDashDisplay(float delay)
{
var statusText = this.SingleComposer.GetDynamicText(_statusTextKey);
- statusText.SetNewText($"State: {lastState}, Total: {totalShards}, Delta: {changesThisTick} Nulls: {voidShards} ");
+ var btnRun = this.SingleComposer.GetToggleButton(_btnRunKey);
+ if (lastState == CommandType.Run) {
+ statusText.SetNewText($"State: {lastState}, Total: {totalShards}, Delta: ±{changesThisTick} Nulls: {voidShards} ");
+
+ if (!btnRun.On) btnRun.SetValue(true);
+
+ }
+ else if (lastState == CommandType.Stop && btnRun.Enabled) {
+ statusText.SetNewText($"State: {lastState}, Total: {totalShards}, Nulls: {voidShards} ");
+
+ if (btnRun.On) btnRun.SetValue(false);
+
+ }
}
+
}
}