2022-09-05 08:02:34 +00:00
|
|
|
using ImGuiNET;
|
2022-09-05 08:21:45 +00:00
|
|
|
using OrangeGuidanceTomestone.Helpers;
|
2022-09-05 08:02:34 +00:00
|
|
|
|
|
|
|
namespace OrangeGuidanceTomestone.Ui.MainWindowTabs;
|
|
|
|
|
|
|
|
internal class Settings : ITab {
|
|
|
|
public string Name => "Settings";
|
|
|
|
|
|
|
|
private Plugin Plugin { get; }
|
2022-09-05 08:21:45 +00:00
|
|
|
private string _extraCode = string.Empty;
|
2022-09-05 08:02:34 +00:00
|
|
|
|
|
|
|
internal Settings(Plugin plugin) {
|
|
|
|
this.Plugin = plugin;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Draw() {
|
2022-09-05 09:05:14 +00:00
|
|
|
ImGui.PushTextWrapPos();
|
|
|
|
|
2022-09-05 08:02:34 +00:00
|
|
|
var anyChanged = false;
|
|
|
|
var vfx = false;
|
|
|
|
|
|
|
|
anyChanged |= vfx |= ImGui.Checkbox("Disable in trials", ref this.Plugin.Config.DisableTrials);
|
|
|
|
anyChanged |= vfx |= ImGui.Checkbox("Disable in Deep Dungeons", ref this.Plugin.Config.DisableDeepDungeon);
|
|
|
|
anyChanged |= vfx |= ImGui.Checkbox("Remove glow effect from signs", ref this.Plugin.Config.RemoveGlow);
|
2022-09-05 09:05:14 +00:00
|
|
|
anyChanged |= ImGui.Checkbox("Open the viewer automatically when near a sign", ref this.Plugin.Config.AutoViewer);
|
2022-09-05 10:12:36 +00:00
|
|
|
anyChanged |= ImGui.SliderFloat("Viewer opacity", ref this.Plugin.Config.ViewerOpacity, 0f, 100.0f, $"{this.Plugin.Config.ViewerOpacity:N3}%%");
|
2022-09-05 08:02:34 +00:00
|
|
|
|
|
|
|
if (anyChanged) {
|
|
|
|
this.Plugin.SaveConfig();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (vfx) {
|
|
|
|
this.Plugin.Messages.RemoveVfx();
|
|
|
|
this.Plugin.Messages.Clear();
|
2022-09-05 10:38:00 +00:00
|
|
|
this.Plugin.Messages.SpawnVfx();
|
2022-09-05 08:02:34 +00:00
|
|
|
}
|
2022-09-05 08:21:45 +00:00
|
|
|
|
|
|
|
this.ExtraCodeInput();
|
2022-09-05 09:05:14 +00:00
|
|
|
|
|
|
|
ImGui.PopTextWrapPos();
|
2022-09-05 08:21:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void ExtraCodeInput() {
|
|
|
|
ImGui.InputText("Extra code", ref this._extraCode, 128);
|
|
|
|
if (!ImGui.Button("Claim")) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var code = this._extraCode;
|
|
|
|
Task.Run(async () => {
|
|
|
|
var resp = await ServerHelper.SendRequest(
|
|
|
|
this.Plugin.Config.ApiKey,
|
|
|
|
HttpMethod.Post,
|
|
|
|
"/claim",
|
|
|
|
null,
|
|
|
|
new StringContent(code)
|
|
|
|
);
|
|
|
|
|
|
|
|
if (resp.IsSuccessStatusCode) {
|
|
|
|
this._extraCode = string.Empty;
|
|
|
|
var text = await resp.Content.ReadAsStringAsync();
|
|
|
|
if (uint.TryParse(text, out var extra)) {
|
|
|
|
this.Plugin.Ui.MainWindow.ExtraMessages = extra;
|
2022-09-05 08:35:28 +00:00
|
|
|
this.Plugin.Ui.ShowModal($"Code claimed.\n\nYou can now post up to {10 + extra:N0} messages.");
|
2022-09-05 08:21:45 +00:00
|
|
|
} else {
|
2022-09-05 08:35:28 +00:00
|
|
|
this.Plugin.Ui.ShowModal("Code claimed but the server gave an unexpected response.");
|
2022-09-05 08:21:45 +00:00
|
|
|
}
|
|
|
|
} else {
|
2022-09-05 08:35:28 +00:00
|
|
|
this.Plugin.Ui.ShowModal("Invalid code.");
|
2022-09-05 08:21:45 +00:00
|
|
|
}
|
|
|
|
});
|
2022-09-05 08:02:34 +00:00
|
|
|
}
|
|
|
|
}
|