Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
81f70d0
refactor: update FNA framework submodules, dependencies, and project …
AuroraRAS May 21, 2026
c87e31c
Fixing Collection Modification Exception on Hide Game Interface
AuroraRAS May 21, 2026
0eab1ec
chore: update FNA submodules, sync framework dependencies, and add he…
AuroraRAS May 21, 2026
c4c19e3
Fix Modifier Key Binding Registration
AuroraRAS May 21, 2026
20d62cf
FNA Rendering Corrections
AuroraRAS May 21, 2026
cc2b7c8
Implement Opacity and Grayscale Rendering in FNA Client
AuroraRAS May 21, 2026
151bcc4
Dragged Item Render Depth Fix under FNA
AuroraRAS May 21, 2026
cf2552e
Rendering Fix: Mapping Off-Black Key Colors to Opaque Black
AuroraRAS May 21, 2026
64b5680
Headless CLI Double-Width Character Support
AuroraRAS May 22, 2026
5603786
Resolving ChatTextBox Rendering and Focus Anomalies
AuroraRAS May 22, 2026
17aaa92
Custom Window Scaling Decoupled from Wayland Fractional Scaling
AuroraRAS May 22, 2026
93dd995
Modified MirGameShopCell.cs to assign the Quantity value to uantity.T…
AuroraRAS May 23, 2026
ce19d48
Try to isolate the FNA client for legacy code.
AuroraRAS May 23, 2026
0969840
Headless Patcher File Cleaning Bug Fix Walkthrough
AuroraRAS May 24, 2026
602ad73
We resolved the compiler warnings in the Client and Shared projects
AuroraRAS May 24, 2026
7b2d702
Fixing Stuck Mouse Movement on Item Drops
AuroraRAS May 24, 2026
f0cf21b
Fix NPC Dialogue Unresolved Tags
AuroraRAS May 24, 2026
54943e0
Server build command after this modification completes with zero warn…
AuroraRAS May 24, 2026
d29f8b1
Fix NPC Dialogue Sub-panels Closing Immediately
AuroraRAS May 25, 2026
3f4f34a
Newbie Guild Recruitment & Lag Fix
AuroraRAS May 25, 2026
e98474d
libFNA3D Check and Compilation
AuroraRAS May 27, 2026
1846570
Align the output path of the headless server compilation.
AuroraRAS May 27, 2026
70c5826
Redirection of FNA Client Resource Resolution to Current Working Dire…
AuroraRAS May 27, 2026
74af868
Headless Server Case-Insensitive File System Support on Linux
AuroraRAS May 27, 2026
e5829bb
Unified Linux File System Compatibility (VFS)
AuroraRAS May 28, 2026
834737f
MainDialog HP and MP Text Alignment Fix (FNA Build)
AuroraRAS May 28, 2026
a57d653
Implement account command modifications
AuroraRAS May 29, 2026
b76a646
Fix MinMC and Other Min/Max Added Stats Rendering in UI
AuroraRAS May 29, 2026
5d4ac22
Implement account command modifications & extended autocomplete
AuroraRAS May 30, 2026
389b983
Formatting Spacing Fix
AuroraRAS May 30, 2026
b0bb63c
Fix Tab Key Input Handlers in FNA Client
AuroraRAS Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 94 additions & 13 deletions Client/Client.csproj
Original file line number Diff line number Diff line change
@@ -1,30 +1,40 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows7.0</TargetFramework>
<TargetFrameworks>net8.0-windows7.0;net10.0</TargetFrameworks>
<Nullable>disable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>MIR2.ICO</ApplicationIcon>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<PlatformTarget>x64</PlatformTarget>
<BaseOutputPath>..\Build\Client\</BaseOutputPath>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
</PropertyGroup>

<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!-- Legacy Output Alignment for Windows -->
<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-windows7.0'">
<UseWindowsForms>true</UseWindowsForms>
<DefineConstants>WINDOWS;SLIMDX</DefineConstants>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>

<!-- FNA Target Alignment for Linux -->
<PropertyGroup Condition="'$(TargetFramework)' == 'net10.0'">
<UseWindowsForms>false</UseWindowsForms>
<DefineConstants>FNA;LINUX</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<GenerateAssemblyInfo>True</GenerateAssemblyInfo>
<NoWarn>1701;1702</NoWarn>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<NoWarn>1701;1702;CA1416</NoWarn>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<GenerateAssemblyInfo>True</GenerateAssemblyInfo>
<NoWarn>1701;1702</NoWarn>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<NoWarn>1701;1702;CA1416</NoWarn>
</PropertyGroup>

<ItemGroup>
Expand All @@ -35,20 +45,51 @@
<None Include="..\.editorconfig" Link=".editorconfig" />
</ItemGroup>

<!-- Common Dependencies -->
<ItemGroup>
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="6.0.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<PackageReference Include="FontStashSharp.MonoGame" Version="1.5.5" />
<ProjectReference Include="Platform/MonoGameCompat/MonoGameCompat.csproj" />
</ItemGroup>

<!-- Windows-Only Dependencies -->
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-windows7.0'">
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2903.40" />
<PackageReference Include="NAudio" Version="2.2.1" />
<Reference Include="SlimDX">
<HintPath>..\Components\SlimDX.dll</HintPath>
</Reference>
</ItemGroup>

<!-- Linux/FNA-Only Dependencies -->
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<PackageReference Include="System.Resources.Extensions" Version="8.0.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.11" />
<ProjectReference Include="FNA\FNA.Core.csproj" />
</ItemGroup>

<!-- Project Reference to Shared Components -->
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>

<!-- Source File Partitioning for Clean Target Separation -->
<ItemGroup>
<Reference Include="SlimDX">
<HintPath>..\Components\SlimDX.dll</HintPath>
</Reference>
<Compile Remove="FNA\**" />
<Compile Remove="Platform/MonoGameCompat\**" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<Compile Remove="Forms\**\*.cs" />
<Compile Remove="Program.cs" />
<Compile Remove="MirSounds/Libraries/**" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-windows7.0'">
<Compile Remove="Platform/FNA/**/*.cs" />
</ItemGroup>

<ItemGroup>
Expand Down Expand Up @@ -76,6 +117,46 @@
<None Update="MIR2.ICO">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Mir2Test.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

<PropertyGroup>
<FNA3DSourceDir>$(MSBuildProjectDirectory)/FNA/lib/FNA3D</FNA3DSourceDir>
<FNA3DBuildDir>$(FNA3DSourceDir)/build</FNA3DBuildDir>
</PropertyGroup>

<!-- Check and Compile libFNA3D on Linux builds if not present on system -->
<Target Name="CheckAndBuildFNA3D" BeforeTargets="Build;Publish" Condition="'$(TargetFramework)' == 'net10.0' And $([MSBuild]::IsOSPlatform('Linux'))">
<!-- Run system library checks: check ldconfig and link check with gcc -->
<Exec Command="ldconfig -p 2>/dev/null | grep -q 'libFNA3D' || gcc -lFNA3D -shared -o /dev/null -x c /dev/null 2>/dev/null" IgnoreExitCode="true">
<Output TaskParameter="ExitCode" PropertyName="FNA3DCheckExitCode" />
</Exec>

<Message Importance="High" Text="--- FNA3D System Check: ExitCode=$(FNA3DCheckExitCode) (0 means found on system) ---" />

<!-- If not found on system (ExitCode != 0), compile libFNA3D -->
<CallTarget Targets="CompileFNA3D" Condition="'$(FNA3DCheckExitCode)' != '0'" />
</Target>

<Target Name="CompileFNA3D">
<Message Importance="High" Text="libFNA3D was not found on the system. Initiating compilation under $(FNA3DSourceDir)..." />

<MakeDir Directories="$(FNA3DBuildDir)" Condition="!Exists('$(FNA3DBuildDir)')" />

<!-- Run cmake and make -->
<Exec Command="cmake .." WorkingDirectory="$(FNA3DBuildDir)" />
<Exec Command="make" WorkingDirectory="$(FNA3DBuildDir)" />

<!-- Copy compiled libraries to TargetDir -->
<ItemGroup>
<FNA3DBinaryFiles Include="$(FNA3DBuildDir)/libFNA3D.so*" />
</ItemGroup>

<Message Importance="High" Text="Copying compiled libFNA3D binaries to $(TargetDir)..." />
<Copy SourceFiles="@(FNA3DBinaryFiles)" DestinationFolder="$(TargetDir)" SkipUnchangedFiles="true" />
<Copy SourceFiles="@(FNA3DBinaryFiles)" DestinationFolder="$(PublishDir)" Condition="'$(PublishDir)' != '' And Exists('$(PublishDir)')" SkipUnchangedFiles="true" />
</Target>

</Project>
11 changes: 6 additions & 5 deletions Client/Forms/AMain.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Diagnostics;
using System.Diagnostics;
using System.Net;
using Client;
using Microsoft.Web.WebView2.Core;
Expand Down Expand Up @@ -45,7 +45,7 @@ public static void SaveError(string ex)
{
if (Settings.RemainingErrorLogs-- > 0)
{
File.AppendAllText(@".\Error.txt",
File.AppendAllText(Path.Combine(AppContext.BaseDirectory, "Error.txt"),
string.Format("[{0}] {1}{2}", DateTime.Now, ex, Environment.NewLine));
}
}
Expand Down Expand Up @@ -121,11 +121,12 @@ private void CleanUp()
{
if (!CleanFiles) return;

string[] fileNames = Directory.GetFiles(@".\", "*.*", SearchOption.AllDirectories);
string[] fileNames = Directory.GetFiles(AppContext.BaseDirectory, "*.*", SearchOption.AllDirectories);
string fileName;
string screenshotPrefix = Path.Combine(AppContext.BaseDirectory, "Screenshots") + Path.DirectorySeparatorChar;
for (int i = 0; i < fileNames.Length; i++)
{
if (fileNames[i].StartsWith(".\\Screenshots\\")) continue;
if (fileNames[i].StartsWith(screenshotPrefix, StringComparison.OrdinalIgnoreCase)) continue;

fileName = Path.GetFileName(fileNames[i]);

Expand Down Expand Up @@ -303,7 +304,7 @@ public void DownloadFile(Download dl)
}
catch (HttpRequestException e)
{
File.AppendAllText(@".\Error.txt",
File.AppendAllText(Path.Combine(AppContext.BaseDirectory, "Error.txt"),
$"[{DateTime.Now}] {info.FileName} could not be downloaded. ({e.Message}) {Environment.NewLine}");
ErrorFound = true;
}
Expand Down
14 changes: 11 additions & 3 deletions Client/KeyBindSettings.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Client
namespace Client
{

public enum KeybindOptions : int
Expand Down Expand Up @@ -121,7 +121,11 @@ public class KeyBind

public class KeyBindSettings
{
private static InIReader Reader = new InIReader(@".\KeyBinds.ini");
#if !FNA
private static InIReader Reader = new InIReader(Path.Combine(AppContext.BaseDirectory, "KeyBinds.ini"));
#else
private static InIReader Reader = new InIReader(Path.Combine(Directory.GetCurrentDirectory(), "KeyBinds.ini"));
#endif
public List<KeyBind> Keylist = new List<KeyBind>();
public List<KeyBind> DefaultKeylist = new List<KeyBind>();

Expand All @@ -130,7 +134,11 @@ public KeyBindSettings()
New(Keylist);
New(DefaultKeylist);

if (!File.Exists(@".\KeyBinds.ini"))
#if !FNA
if (!File.Exists(Path.Combine(AppContext.BaseDirectory, "KeyBinds.ini")))
#else
if (!File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "KeyBinds.ini")))
#endif
{
Save(DefaultKeylist);
return;
Expand Down
6 changes: 5 additions & 1 deletion Client/MirControls/MirAmountBox.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Client.MirGraphics;
using Client.MirGraphics;
using Client.MirSounds;

namespace Client.MirControls
Expand Down Expand Up @@ -235,12 +235,14 @@ public override void Show()

Highlight();

#if !FNA
for (int i = 0; i < Program.Form.Controls.Count; i++)
{
TextBox T = Program.Form.Controls[i] as TextBox;
if (T != null && T.Tag != null && T.Tag != null)
((MirTextBox)T.Tag).DialogChanged();
}
#endif

/*
CMain.Shift = false;
Expand Down Expand Up @@ -287,12 +289,14 @@ protected override void Dispose(bool disposing)

if (!disposing) return;

#if !FNA
for (int i = 0; i < Program.Form.Controls.Count; i++)
{
TextBox T = (TextBox)Program.Form.Controls[i];
if (T != null && T.Tag != null && T.Tag != null)
((MirTextBox)T.Tag).DialogChanged();
}
#endif
}

#endregion
Expand Down
Loading