qstbak/Questionable/Questionable.Windows/ChangelogWindow.cs
2026-08-17 20:27:25 +10:00

332 lines
17 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using Dalamud.Bindings.ImGui;
using Dalamud.Configuration;
using Dalamud.Interface;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin;
using Questionable.Data;
using Questionable.Model.Changelog;
using Questionable.Windows.ChangelogComponents;
namespace Questionable.Windows;
internal sealed class ChangelogWindow : ThemedWindow
{
private readonly Configuration _configuration;
private readonly IDalamudPluginInterface _pluginInterface;
private readonly ChangelogHeaderComponent _headerComponent;
private readonly ChangelogFooterComponent _footerComponent;
private int _windowOpenCount;
private bool _hasSetInitialState;
private float _headerAnimationTime;
[MethodImpl(MethodImplOptions.NoInlining)]
public ChangelogWindow(Configuration configuration, IDalamudPluginInterface pluginInterface)
: base(global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1311522858), ImGuiWindowFlags.NoTitleBar)
{
_configuration = configuration;
_pluginInterface = pluginInterface;
_headerComponent = new ChangelogHeaderComponent();
_footerComponent = new ChangelogFooterComponent();
_206C_200E_202B_202B_206A_206B_200F_206C_200E_206B_200B_206E_200D_200B_206C_200E_206E_202C_200F_200E_202E_206D_202B_202E_206C_200C_206F_202A_206A_200D_200C_202E_202B_202D_202B_202C_202C_200F_202A_202C_202E((Vector2?)new Vector2(900f, 650f));
_206C_202E_200B_200E_200E_200B_206A_200D_206B_200E_200B_202B_202D_202A_200F_206D_202C_200C_200D_206C_202E_200E_202B_202C_206D_202C_202A_202E_200E_206C_202B_200D_200B_200F_200E_200D_202D_206D_202A_202B_202E(ImGuiCond.FirstUseEver);
_206C_206A_206C_202C_206F_200C_200F_202A_202A_200E_206B_200B_202E_202B_202C_202D_202D_200C_202D_202D_200F_206E_206E_200E_200C_202A_206A_206E_200E_202B_202E_202E_200E_202B_206A_202C_200F_206D_202B_206A_202E((WindowSizeConstraints?)new WindowSizeConstraints
{
MinimumSize = new Vector2(700f, 500f),
MaximumSize = new Vector2(float.MaxValue, float.MaxValue)
});
}
public override void DrawContent()
{
_headerComponent.Draw(delegate(bool isOpen)
{
int num = (isOpen ? (-1673190192) : (-1673190191));
while (true)
{
int num2 = num;
int num3 = -1673190192;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
num = -1673190191;
break;
case 0:
return;
case 1:
RequestClose();
num = -1673190192;
break;
}
}
});
DrawChangelogEntries();
ChangelogFooterComponent.Draw(base.RequestClose);
ImDrawListPtr imDrawListPtr = _206D_200E_206F_202B_202E_200F_200D_200D_206A_200D_202D_202A_200B_206A_200B_200E_206B_206B_200B_202C_202E_206C_200C_206C_206A_206A_202D_200D_206B_206E_202A_200E_202B_200F_206F_206E_206E_202E_202B_202C_202E();
Vector2 vector = _202B_200C_206F_200D_200D_206D_200C_202D_206B_202B_206B_206C_200C_200D_200F_200F_200D_202C_200C_206F_206B_202D_202B_202C_206C_200E_202E_206C_200F_206E_206E_206D_206B_206B_202B_200F_200C_206A_202D_200C_202E();
Vector2 vector2 = _206A_202C_202A_200D_206B_202E_206C_206C_206B_200B_206A_206C_206A_200C_206B_206A_206E_206B_200E_206A_202C_202B_202A_202C_206A_200E_202B_200C_202E_202C_206E_206C_200E_206D_206B_200D_206E_206A_202E_202A_202E();
Vector2 pMax = vector + vector2;
Vector4 accentColor = UiThemeUtils.AccentColor;
accentColor.W = 0.3f;
imDrawListPtr.AddRect(vector, pMax, _200E_202D_206A_206A_206A_202D_202A_200C_202E_202E_202C_202C_206D_202C_206E_206C_202C_206D_206D_206E_202D_202D_206D_202A_202D_200D_200F_202E_200C_200F_202B_200D_202C_202D_206A_202B_202E_202A_202D_200D_202E(accentColor), 0f, ImDrawFlags.None, 2f);
}
public override void OnOpen()
{
_202E_202E_200F_206C_200E_206F_200B_206C_200C_202C_202B_206B_202D_202D_206E_206D_202B_206A_202B_206D_202A_200D_200D_206B_200F_200F_202B_202C_206E_200D_200F_206F_206E_206A_202D_200E_202D_202E_200D_200E_202E();
int windowOpenCount = _windowOpenCount;
int num = 1;
int num2 = windowOpenCount;
int num3 = num2 ^ num;
int num4 = num2 & num;
_windowOpenCount = num3 + (num4 + num4);
_hasSetInitialState = false;
_headerAnimationTime = 0f;
_headerComponent.Reset();
}
public override void OnClose()
{
_206A_202A_200F_206C_206F_206C_206B_202E_200B_206D_206D_206D_202D_200E_206D_200F_200C_202E_206F_206F_200E_202A_202E_200F_200D_202A_202D_200B_200C_206E_202C_202A_206F_206E_202D_200C_200E_206A_200B_200F_202E();
MarkAllAsRead();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void DrawChangelogEntries()
{
_headerAnimationTime += _202C_202E_202B_200D_202B_206C_200D_202C_200C_206A_202C_200E_202E_202D_200F_206F_200C_202D_206F_206D_200D_202C_206F_206B_206F_206A_206B_202C_202B_200F_206C_200C_206B_202A_206F_202C_200D_206E_200B_200C_202E().DeltaTime;
float num = _202A_206F_206A_202D_206E_200C_202C_202B_202E_206A_206E_206E_206C_202E_200D_200C_202B_200C_200D_200F_202E_206A_206E_202B_200D_206F_202B_202B_202C_202B_206B_200F_200B_202D_206F_200E_202E_202A_206B_206F_202E() + _202D_202C_202D_200E_202D_202E_202E_200F_202E_206C_202E_200E_200D_200C_206F_200C_202C_200B_202E_206B_200D_206E_202B_200C_200B_206B_202B_206C_206C_200C_206B_206E_202D_200E_200D_206B_202A_202D_202E_202E().ItemSpacing.Y * 2f;
using ImRaii.ChildDisposable childDisposable = _206E_206E_200F_200D_206D_206A_206C_202C_202B_200E_200E_206E_206C_206B_206C_202E_206A_206E_202B_200B_202B_200D_206A_206A_206B_206F_202C_206B_200B_206E_200F_202D_206F_206D_200E_200E_202E_206F_206E_206D_202E((ImU8String)global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(642885522), new Vector2(0f, 0f - num), false, ImGuiWindowFlags.NoScrollbar);
int num2 = ((!(!childDisposable)) ? 409981810 : 409981809);
List<ChangelogEntry> changelogs = default(List<ChangelogEntry>);
ChangelogEntry changelogEntry = default(ChangelogEntry);
while (true)
{
int num3 = num2;
int num4 = 409981808;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 0:
goto IL_00ae;
case 1:
return;
case 2:
{
using ImRaii.ChildDisposable childDisposable2 = _206E_200B_200C_200E_200D_206B_202D_206D_200E_202C_206A_200C_206C_206A_206F_206A_202A_206C_200F_206B_206F_202D_206D_202E_200D_206A_200B_206C_206C_200D_200C_200F_202C_202B_202A_200F_202E_206C_206C_202D_202E((ImU8String)global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(404777559), Vector2.Zero, false);
num2 = ((!(!childDisposable2)) ? 888384850 : 888384849);
while (true)
{
int num6 = num2;
num4 = 888384848;
num5 = num6;
int num7 = num5 + num4;
int num8 = num5 & num4;
switch (num7 - (num8 + num8))
{
case 2:
changelogs = ChangelogData.Changelogs;
changelogEntry = changelogs.FirstOrDefault();
num2 = ((changelogs.Count != 0) ? 888384848 : 888384852);
break;
case 4:
_200B_202A_206E_206E_206E_202D_200F_206A_206F_206E_206F_206B_200F_206A_206F_206A_200C_200D_202D_206E_200D_200B_200F_206C_200C_200B_206C_202E_206D_200C_206F_202A_206F_206E_206E_206A_206C_200D_202A_206B_202E(_206E_206B_206A_200F_206E_200F_206E_206E_206D_202E_206E_202A_206B_200D_202B_206D_202B_202C_200E_202D_200E_206E_206D_200C_206A_200F_200D_206F_200C_200B_202D_206C_202A_206C_206B_206D_202D_206A_200B_206A_202E() + 40f);
UiThemeUtils.EmptyState(FontAwesomeIcon.FileAlt, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-823052972));
return;
case 3:
num2 = 888384849;
break;
case 1:
return;
case 0:
{
ChangelogEntryComponent changelogEntryComponent = new ChangelogEntryComponent(_configuration, _windowOpenCount, _headerAnimationTime);
using (List<ChangelogEntry>.Enumerator enumerator = changelogs.GetEnumerator())
{
num2 = -839072908;
while (true)
{
int num9 = num2;
num4 = -839072905;
num5 = num9;
switch ((num5 | num4) - (num5 & num4))
{
case 2:
num2 = -839072908;
break;
case 1:
{
ChangelogEntry current = enumerator.Current;
changelogEntryComponent.Draw(current, current == changelogEntry, _hasSetInitialState);
Vector2 vector = _206C_200B_200C_200E_200E_200F_202B_202B_200D_206D_206B_200C_200F_202B_202C_206C_206A_202D_200E_206E_202D_200B_202E_206F_202C_206D_206A_200F_200E_206D_206E_206D_202B_200E_206D_206E_200C_202D_206D_202C_202E();
float num10 = _200E_200D_202D_206F_202B_202B_202C_202B_202B_202C_200D_200E_200D_200C_206B_202C_202C_206D_200B_206D_200B_200C_202A_202A_200F_200D_206D_202B_202C_206A_202A_206C_202A_200B_202C_206C_200C_202A_202D_206C_202E().X * 0.5f;
float num11 = (_200E_200D_202D_206F_202B_202B_202C_202B_202B_202C_200D_200E_200D_200C_206B_202C_202C_206D_200B_206D_200B_200C_202A_202A_200F_200D_206D_202B_202C_206A_202A_206C_202A_200B_202C_206C_200C_202A_202D_206C_202E().X - num10) * 0.5f;
ImDrawListPtr imDrawListPtr = _206D_200E_206F_202B_202E_200F_200D_200D_206A_200D_202D_202A_200B_206A_200B_200E_206B_206B_200B_202C_202E_206C_200C_206C_206A_206A_202D_200D_206B_206E_202A_200E_202B_200F_206F_206E_206E_202E_202B_202C_202E();
Vector2 p = vector + new Vector2(num11, 0f);
Vector2 p2 = vector + new Vector2(num11 + num10, 0f);
Vector4 accentColor = UiThemeUtils.AccentColor;
accentColor.W = 0.1f;
imDrawListPtr.AddLine(p, p2, _200E_202D_206A_206A_206A_202D_202A_200C_202E_202E_202C_202C_206D_202C_206E_206C_202C_206D_206D_206E_202D_202D_206D_202A_202D_200D_200F_202E_200C_200F_202B_200D_202C_202D_206A_202B_202E_202A_202D_200D_202E(accentColor), 1f);
_200B_202A_206E_206E_206E_202D_200F_206A_206F_206E_206F_206B_200F_206A_206F_206A_200C_200D_202D_206E_200D_200B_200F_206C_200C_200B_206C_202E_206D_200C_206F_202A_206F_206E_206E_206A_206C_200D_202A_206B_202E(_206E_206B_206A_200F_206E_200F_206E_206E_206D_202E_206E_202A_206B_200D_202B_206D_202B_202C_200E_202D_200E_206E_206D_200C_206A_200F_200D_206F_200C_200B_202D_206C_202A_206C_206B_206D_202D_206A_200B_206A_202E() + 4f);
num2 = -839072908;
break;
}
case 3:
num2 = (enumerator.MoveNext() ? (-839072906) : (-839072905));
break;
case 0:
goto end_IL_01f0;
}
continue;
end_IL_01f0:
break;
}
}
_hasSetInitialState = true;
return;
}
}
}
}
}
continue;
IL_00ae:
num2 = 409981809;
}
}
private void MarkAllAsRead()
{
string text = ChangelogData.Changelogs.FirstOrDefault()?.Version;
int num = ((text == null) ? 746834927 : 746834924);
while (true)
{
int num2 = num;
int num3 = 746834926;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
return;
case 2:
_configuration.LastViewedChangelogVersion = text;
_202E_202B_200E_202C_200E_202B_200E_202A_206A_202B_206E_206E_200F_206A_202B_200B_202B_206A_206A_202C_202D_202E_200D_202C_202C_200D_202E_206A_206B_202A_202C_206C_206B_200B_206F_206F_202B_200F_202B_206E_202E(_pluginInterface, (IPluginConfiguration)_configuration);
num = 746834927;
break;
case 0:
num = 746834924;
break;
}
}
}
void _206C_200E_202B_202B_206A_206B_200F_206C_200E_206B_200B_206E_200D_200B_206C_200E_206E_202C_200F_200E_202E_206D_202B_202E_206C_200C_206F_202A_206A_200D_200C_202E_202B_202D_202B_202C_202C_200F_202A_202C_202E(Vector2? P_0)
{
base.Size = P_0;
}
void _206C_202E_200B_200E_200E_200B_206A_200D_206B_200E_200B_202B_202D_202A_200F_206D_202C_200C_200D_206C_202E_200E_202B_202C_206D_202C_202A_202E_200E_206C_202B_200D_200B_200F_200E_200D_202D_206D_202A_202B_202E(ImGuiCond P_0)
{
base.SizeCondition = P_0;
}
void _206C_206A_206C_202C_206F_200C_200F_202A_202A_200E_206B_200B_202E_202B_202C_202D_202D_200C_202D_202D_200F_206E_206E_200E_200C_202A_206A_206E_200E_202B_202E_202E_200E_202B_206A_202C_200F_206D_202B_206A_202E(WindowSizeConstraints? P_0)
{
base.SizeConstraints = P_0;
}
static ImDrawListPtr _206D_200E_206F_202B_202E_200F_200D_200D_206A_200D_202D_202A_200B_206A_200B_200E_206B_206B_200B_202C_202E_206C_200C_206C_206A_206A_202D_200D_206B_206E_202A_200E_202B_200F_206F_206E_206E_202E_202B_202C_202E()
{
return ImGui.GetWindowDrawList();
}
static Vector2 _202B_200C_206F_200D_200D_206D_200C_202D_206B_202B_206B_206C_200C_200D_200F_200F_200D_202C_200C_206F_206B_202D_202B_202C_206C_200E_202E_206C_200F_206E_206E_206D_206B_206B_202B_200F_200C_206A_202D_200C_202E()
{
return ImGui.GetWindowPos();
}
static Vector2 _206A_202C_202A_200D_206B_202E_206C_206C_206B_200B_206A_206C_206A_200C_206B_206A_206E_206B_200E_206A_202C_202B_202A_202C_206A_200E_202B_200C_202E_202C_206E_206C_200E_206D_206B_200D_206E_206A_202E_202A_202E()
{
return ImGui.GetWindowSize();
}
static uint _200E_202D_206A_206A_206A_202D_202A_200C_202E_202E_202C_202C_206D_202C_206E_206C_202C_206D_206D_206E_202D_202D_206D_202A_202D_200D_200F_202E_200C_200F_202B_200D_202C_202D_206A_202B_202E_202A_202D_200D_202E(Vector4 P_0)
{
return ImGui.ColorConvertFloat4ToU32(P_0);
}
void _202E_202E_200F_206C_200E_206F_200B_206C_200C_202C_202B_206B_202D_202D_206E_206D_202B_206A_202B_206D_202A_200D_200D_206B_200F_200F_202B_202C_206E_200D_200F_206F_206E_206A_202D_200E_202D_202E_200D_200E_202E()
{
base.OnOpen();
}
void _206A_202A_200F_206C_206F_206C_206B_202E_200B_206D_206D_206D_202D_200E_206D_200F_200C_202E_206F_206F_200E_202A_202E_200F_200D_202A_202D_200B_200C_206E_202C_202A_206F_206E_202D_200C_200E_206A_200B_200F_202E()
{
base.OnClose();
}
static ImGuiIOPtr _202C_202E_202B_200D_202B_206C_200D_202C_200C_206A_202C_200E_202E_202D_200F_206F_200C_202D_206F_206D_200D_202C_206F_206B_206F_206A_206B_202C_202B_200F_206C_200C_206B_202A_206F_202C_200D_206E_200B_200C_202E()
{
return ImGui.GetIO();
}
static float _202A_206F_206A_202D_206E_200C_202C_202B_202E_206A_206E_206E_206C_202E_200D_200C_202B_200C_200D_200F_202E_206A_206E_202B_200D_206F_202B_202B_202C_202B_206B_200F_200B_202D_206F_200E_202E_202A_206B_206F_202E()
{
return ImGui.GetFrameHeightWithSpacing();
}
static ImGuiStylePtr _202D_202C_202D_200E_202D_202E_202E_200F_202E_206C_202E_200E_200D_200C_206F_200C_202C_200B_202E_206B_200D_206E_202B_200C_200B_206B_202B_206C_206C_200C_206B_206E_202D_200E_200D_206B_202A_202D_202E_202E()
{
return ImGui.GetStyle();
}
static ImRaii.ChildDisposable _206E_206E_200F_200D_206D_206A_206C_202C_202B_200E_200E_206E_206C_206B_206C_202E_206A_206E_202B_200B_202B_200D_206A_206A_206B_206F_202C_206B_200B_206E_200F_202D_206F_206D_200E_200E_202E_206F_206E_206D_202E(ImU8String P_0, Vector2 P_1, bool P_2, ImGuiWindowFlags P_3)
{
return ImRaii.Child(P_0, P_1, P_2, P_3);
}
static ImRaii.ChildDisposable _206E_200B_200C_200E_200D_206B_202D_206D_200E_202C_206A_200C_206C_206A_206F_206A_202A_206C_200F_206B_206F_202D_206D_202E_200D_206A_200B_206C_206C_200D_200C_200F_202C_202B_202A_200F_202E_206C_206C_202D_202E(ImU8String P_0, Vector2 P_1, bool P_2)
{
return ImRaii.Child(P_0, P_1, P_2);
}
static float _206E_206B_206A_200F_206E_200F_206E_206E_206D_202E_206E_202A_206B_200D_202B_206D_202B_202C_200E_202D_200E_206E_206D_200C_206A_200F_200D_206F_200C_200B_202D_206C_202A_206C_206B_206D_202D_206A_200B_206A_202E()
{
return ImGui.GetCursorPosY();
}
static void _200B_202A_206E_206E_206E_202D_200F_206A_206F_206E_206F_206B_200F_206A_206F_206A_200C_200D_202D_206E_200D_200B_200F_206C_200C_200B_206C_202E_206D_200C_206F_202A_206F_206E_206E_206A_206C_200D_202A_206B_202E(float P_0)
{
ImGui.SetCursorPosY(P_0);
}
static Vector2 _206C_200B_200C_200E_200E_200F_202B_202B_200D_206D_206B_200C_200F_202B_202C_206C_206A_202D_200E_206E_202D_200B_202E_206F_202C_206D_206A_200F_200E_206D_206E_206D_202B_200E_206D_206E_200C_202D_206D_202C_202E()
{
return ImGui.GetCursorScreenPos();
}
static Vector2 _200E_200D_202D_206F_202B_202B_202C_202B_202B_202C_200D_200E_200D_200C_206B_202C_202C_206D_200B_206D_200B_200C_202A_202A_200F_200D_206D_202B_202C_206A_202A_206C_202A_200B_202C_206C_200C_202A_202D_206C_202E()
{
return ImGui.GetContentRegionAvail();
}
static void _202E_202B_200E_202C_200E_202B_200E_202A_206A_202B_206E_206E_200F_206A_202B_200B_202B_206A_206A_202C_202D_202E_200D_202C_202C_200D_202E_206A_206B_202A_202C_206C_206B_200B_206F_206F_202B_200F_202B_206E_202E(IDalamudPluginInterface P_0, IPluginConfiguration P_1)
{
P_0.SavePluginConfig(P_1);
}
}