Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
fcc4242
Refactor + IStarMapOnUi
KlaasWhite Nov 15, 2025
3e02cf8
Fix package release
KlaasWhite Nov 15, 2025
9024850
Merge pull request #19 from StarMapLoader/dev
KlaasWhite Nov 15, 2025
586dda4
Merge pull request #21 from StarMapLoader/dev
KlaasWhite Nov 15, 2025
8bc22e1
Merge pull request #22 from StarMapLoader/dev
KlaasWhite Nov 15, 2025
e96e2d3
Merge pull request #24 from StarMapLoader/dev
KlaasWhite Nov 16, 2025
07f52d5
Merge pull request #25 from StarMapLoader/dev
KlaasWhite Nov 16, 2025
2ae154a
Merge pull request #26 from StarMapLoader/dev
KlaasWhite Nov 16, 2025
d8a9ced
Merge pull request #27 from StarMapLoader/dev
KlaasWhite Nov 16, 2025
4be4d11
Merge pull request #29 from StarMapLoader/dev
KlaasWhite Nov 17, 2025
b3a9012
Merge pull request #30 from StarMapLoader/dev
KlaasWhite Nov 17, 2025
4e2f5b0
Merge pull request #31 from StarMapLoader/dev
KlaasWhite Nov 17, 2025
11c2601
Merge pull request #32 from StarMapLoader/dev
KlaasWhite Nov 22, 2025
35c0876
Merge pull request #34 from StarMapLoader/dev
KlaasWhite Nov 23, 2025
a7c3eef
Merge pull request #37 from StarMapLoader/dev
KlaasWhite Nov 29, 2025
91017ce
Merge pull request #39 from StarMapLoader/dev
KlaasWhite Nov 30, 2025
1578a95
Merge pull request #41 from StarMapLoader/dev
KlaasWhite Nov 30, 2025
822bb49
Merge pull request #43 from StarMapLoader/dev
KlaasWhite Dec 6, 2025
69c97c0
Merge pull request #49 from StarMapLoader/dev
KlaasWhite Dec 15, 2025
0ef4388
Merge pull request #59 from StarMapLoader/dev
KlaasWhite Feb 21, 2026
6ec882c
Merge pull request #62 from StarMapLoader/dev
KlaasWhite Feb 21, 2026
9a478c9
Merge pull request #67 from StarMapLoader/dev
KlaasWhite Feb 23, 2026
2f4e545
Merge pull request #68 from StarMapLoader/dev
KlaasWhite Feb 23, 2026
0565def
Merge pull request #70 from StarMapLoader/dev
KlaasWhite Mar 1, 2026
aec7e9e
Merge pull request #72 from StarMapLoader/dev
KlaasWhite Apr 9, 2026
9c05b6c
Merge pull request #75 from StarMapLoader/dev
KlaasWhite Apr 10, 2026
fd45ae1
Added the ability to switch which directory StarMap looks at for the …
MrJeranimo Jul 26, 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
47 changes: 47 additions & 0 deletions StarMap.Core/ModRepository/DocumentsPathPatch.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using HarmonyLib;
using KSA;

namespace StarMap.Core.ModRepository
{
internal static class DocumentsPathPatch
{
private const string CliFlag = "-InstancePath";
private const string EnvVarName = "INSTANCE_PATH";
private const string HarmonyId = "com.starmap.core.documentspathoverride";

public static void Apply()
{
// Check if an override path is provided via command-line argument or environment variable
var overridePath = TryGetOverride();
if (string.IsNullOrEmpty(overridePath))
return;

// Apply the Harmony patch to override the DocumentsFolderPath property
var harmony = new Harmony(HarmonyId);
var original = AccessTools.PropertyGetter(typeof(Constants), nameof(Constants.DocumentsFolderPath));
var prefix = new HarmonyMethod(typeof(DocumentsPathPatch), nameof(Prefix));
harmony.Patch(original, prefix: prefix);
Console.WriteLine($"StarMap - Using Instance Path: {overridePath}");
}

private static bool Prefix(ref string __result)
{
__result = TryGetOverride()!;
return false;
}

private static string? TryGetOverride()
{
var args = Environment.GetCommandLineArgs();
for (int i = 0; i < args.Length - 1; i++)
{
if (string.Equals(args[i], CliFlag, StringComparison.OrdinalIgnoreCase))
{
return args[i + 1];
}
}

return Environment.GetEnvironmentVariable(EnvVarName);
}
}
}
3 changes: 2 additions & 1 deletion StarMap.Core/ModRepository/ModLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public ModLoader(AssemblyLoadContext coreAssemblyLoadContext)

public void Init()
{
DocumentsPathPatch.Apply();
PrepareMods();
}

Expand All @@ -60,7 +61,7 @@ private void PrepareMods()
{
if (!mod.Enabled)
{
Console.WriteLine($"StarMap - Nod loading mod: {mod.Id} because it is disable in manifest");
Console.WriteLine($"StarMap - Not loading mod: {mod.Id} because it is disabled in manifest");
continue;
}

Expand Down
29 changes: 27 additions & 2 deletions StarMap.Loader/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ internal class Program
{
static void Main(string[] args)
{
if (args.Length < 1)
var (instanceOverrideArgs, remainingArgs) = ExtractInstanceOverride(args);

if (remainingArgs.Length < 1)
{
Console.WriteLine("StarMap - Running Starmap in solo mode!");
SoleModeInner();
Expand All @@ -17,12 +19,35 @@ static void Main(string[] args)

Console.WriteLine("StarMap - Running Starmap in loader mode.");

var pipeName = args[0];
var pipeName = remainingArgs[0];
Console.WriteLine($"StarMap - Connection to pipe: {pipeName}");

MainInner(pipeName).GetAwaiter().GetResult();
}

private static (string[] instanceOverrideArgs, string[] remainingArgs) ExtractInstanceOverride(string[] args)
{
const string CliFlag = "-InstancePath";

var remaining = new List<string>();
var extracted = new List<string>();

for (int i = 0; i < args.Length; i++)
{
if (string.Equals(args[i], CliFlag, StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length)
{
extracted.Add(args[i]);
extracted.Add(args[i + 1]);
i++; // skip the value too
continue;
}

remaining.Add(args[i]);
}

return (extracted.ToArray(), remaining.ToArray());
}

static void SoleModeInner()
{
var gameConfig = new LoaderConfig();
Expand Down