diff --git a/UXAssist/Common/Util.cs b/UXAssist/Common/Util.cs index 94a1bf3..523bb60 100644 --- a/UXAssist/Common/Util.cs +++ b/UXAssist/Common/Util.cs @@ -6,9 +6,23 @@ namespace UXAssist.Common; public static class Util { + public static byte[] LoadEmbeddedResource(string path, Assembly assembly = null) + { + if (assembly == null) + { + assembly = Assembly.GetCallingAssembly(); + } + var info = assembly.GetName(); + var name = info.Name; + using var stream = assembly.GetManifestResourceStream($"{name}.{path.Replace('/', '.')}")!; + var buffer = new byte[stream.Length]; + _ = stream.Read(buffer, 0, buffer.Length); + return buffer; + } + public static Texture2D LoadTexture(string path) { - var fileData = System.IO.File.ReadAllBytes(path); + var fileData = File.ReadAllBytes(path); var tex = new Texture2D(2, 2); tex.LoadImage(fileData); return tex; @@ -20,5 +34,19 @@ public static class Util return Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); } - public static string PluginFolder => Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); -} \ No newline at end of file + public static Texture2D LoadEmbeddedTexture(string path, Assembly assembly = null) + { + var fileData = LoadEmbeddedResource(path, assembly); + var tex = new Texture2D(2, 2); + tex.LoadImage(fileData); + return tex; + } + + public static Sprite LoadEmbeddedSprite(string path, Assembly assembly = null) + { + var tex = LoadEmbeddedTexture(path, assembly); + return Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); + } + + public static string PluginFolder(Assembly assembly = null) => Path.GetDirectoryName((assembly == null ? Assembly.GetCallingAssembly() : assembly).Location); +} diff --git a/UXAssist/FactoryPatch.cs b/UXAssist/FactoryPatch.cs index 795767f..73a2ac8 100644 --- a/UXAssist/FactoryPatch.cs +++ b/UXAssist/FactoryPatch.cs @@ -1637,7 +1637,7 @@ public static class FactoryPatch private static void AddBeltSignalProtos() { if (!_initialized || _loaded) return; - var pluginfolder = Util.PluginFolder; + var assembly = Assembly.GetExecutingAssembly(); var signals = LDB._signals; SignalProto[] protos = [ @@ -1647,7 +1647,7 @@ public static class FactoryPatch Name = "存储单元", GridIndex = 3601, IconPath = "assets/signal/memory.png", - _iconSprite = Util.LoadSprite($"{pluginfolder}/assets/signal/memory.png"), + _iconSprite = Util.LoadEmbeddedSprite($"assets/signal/memory.png", assembly), SID = "" }, new SignalProto @@ -1656,7 +1656,7 @@ public static class FactoryPatch Name = "能量碎片", GridIndex = 3602, IconPath = "assets/signal/energy-fragment.png", - _iconSprite = Util.LoadSprite($"{pluginfolder}/assets/signal/energy-fragment.png"), + _iconSprite = Util.LoadEmbeddedSprite($"assets/signal/energy-fragment.png", assembly), SID = "" }, new SignalProto @@ -1665,7 +1665,7 @@ public static class FactoryPatch Name = "硅基神经元", GridIndex = 3603, IconPath = "assets/signal/silicon-neuron.png", - _iconSprite = Util.LoadSprite($"{pluginfolder}/assets/signal/silicon-neuron.png"), + _iconSprite = Util.LoadEmbeddedSprite($"assets/signal/silicon-neuron.png", assembly), SID = "" }, new SignalProto @@ -1674,7 +1674,7 @@ public static class FactoryPatch Name = "负熵奇点", GridIndex = 3604, IconPath = "assets/signal/negentropy.png", - _iconSprite = Util.LoadSprite($"{pluginfolder}/assets/signal/negentropy.png"), + _iconSprite = Util.LoadEmbeddedSprite($"assets/signal/negentropy.png", assembly), SID = "" }, new SignalProto @@ -1683,7 +1683,7 @@ public static class FactoryPatch Name = "物质重组器", GridIndex = 3605, IconPath = "assets/signal/reassembler.png", - _iconSprite = Util.LoadSprite($"{pluginfolder}/assets/signal/reassembler.png"), + _iconSprite = Util.LoadEmbeddedSprite($"assets/signal/reassembler.png", assembly), SID = "" }, new SignalProto @@ -1692,7 +1692,7 @@ public static class FactoryPatch Name = "虚粒子", GridIndex = 3606, IconPath = "assets/signal/virtual-particle.png", - _iconSprite = Util.LoadSprite($"{pluginfolder}/assets/signal/virtual-particle.png"), + _iconSprite = Util.LoadEmbeddedSprite($"assets/signal/virtual-particle.png", assembly), SID = "" }, ]; diff --git a/UXAssist/GamePatch.cs b/UXAssist/GamePatch.cs index 4464df8..998cb95 100644 --- a/UXAssist/GamePatch.cs +++ b/UXAssist/GamePatch.cs @@ -525,7 +525,8 @@ public static class GamePatch private static IEnumerable UICursor_LoadCursors_Transpiler(IEnumerable instructions, ILGenerator generator) { var matcher = new CodeMatcher(instructions, generator); - matcher.Start().MatchForward(false, + /* + matcher.MatchForward(false, new CodeMatch(OpCodes.Ldc_I4_S), new CodeMatch(OpCodes.Newarr) ); @@ -561,6 +562,7 @@ public static class GamePatch ]; }) ); + */ matcher.MatchForward(false, new CodeMatch(OpCodes.Stsfld, AccessTools.Field(typeof(UICursor), nameof(UICursor.cursorHots))), new CodeMatch(OpCodes.Ldc_I4_1), @@ -576,7 +578,7 @@ public static class GamePatch var newWidth = 32 * multiplier; var newHeight = 32 * multiplier; if (cursor.width == newWidth && cursor.height == newHeight) continue; - UICursor.cursorTexs[i] = ResizeTexture2D(cursor, 32 * multiplier, 32 * multiplier); + UICursor.cursorTexs[i] = ResizeTexture2D(cursor, newWidth, newHeight); } if (multiplier <= 1) return; @@ -603,6 +605,7 @@ public static class GamePatch rt.ResolveAntiAliasedSurface(); var result = new Texture2D(targetWidth, targetHeight, texture2D.format, false); result.ReadPixels(new Rect(0, 0, targetWidth, targetHeight), 0, 0); + result.filterMode = FilterMode.Trilinear; result.Apply(); RenderTexture.active = oldActive; rt.Release(); diff --git a/UXAssist/UXAssist.csproj b/UXAssist/UXAssist.csproj index 37f9246..bb03dea 100644 --- a/UXAssist/UXAssist.csproj +++ b/UXAssist/UXAssist.csproj @@ -20,12 +20,20 @@ + + + + + + + + - + diff --git a/UXAssist/package/plugins/assets/cursor/cursor-ban.png b/UXAssist/assets/cursor/cursor-ban.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-ban.png rename to UXAssist/assets/cursor/cursor-ban.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-blank.png b/UXAssist/assets/cursor/cursor-blank.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-blank.png rename to UXAssist/assets/cursor/cursor-blank.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-delete.png b/UXAssist/assets/cursor/cursor-delete.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-delete.png rename to UXAssist/assets/cursor/cursor-delete.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-downgrade.png b/UXAssist/assets/cursor/cursor-downgrade.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-downgrade.png rename to UXAssist/assets/cursor/cursor-downgrade.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-dyson-node-create.png b/UXAssist/assets/cursor/cursor-dyson-node-create.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-dyson-node-create.png rename to UXAssist/assets/cursor/cursor-dyson-node-create.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-eraser.png b/UXAssist/assets/cursor/cursor-eraser.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-eraser.png rename to UXAssist/assets/cursor/cursor-eraser.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-eyedropper.png b/UXAssist/assets/cursor/cursor-eyedropper.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-eyedropper.png rename to UXAssist/assets/cursor/cursor-eyedropper.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-painter.png b/UXAssist/assets/cursor/cursor-painter.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-painter.png rename to UXAssist/assets/cursor/cursor-painter.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-reform.png b/UXAssist/assets/cursor/cursor-reform.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-reform.png rename to UXAssist/assets/cursor/cursor-reform.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-remove.png b/UXAssist/assets/cursor/cursor-remove.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-remove.png rename to UXAssist/assets/cursor/cursor-remove.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-target-a.png b/UXAssist/assets/cursor/cursor-target-a.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-target-a.png rename to UXAssist/assets/cursor/cursor-target-a.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-target-b.png b/UXAssist/assets/cursor/cursor-target-b.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-target-b.png rename to UXAssist/assets/cursor/cursor-target-b.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-target-in.png b/UXAssist/assets/cursor/cursor-target-in.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-target-in.png rename to UXAssist/assets/cursor/cursor-target-in.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-target-out.png b/UXAssist/assets/cursor/cursor-target-out.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-target-out.png rename to UXAssist/assets/cursor/cursor-target-out.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-transfer.png b/UXAssist/assets/cursor/cursor-transfer.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-transfer.png rename to UXAssist/assets/cursor/cursor-transfer.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor-upgrade.png b/UXAssist/assets/cursor/cursor-upgrade.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor-upgrade.png rename to UXAssist/assets/cursor/cursor-upgrade.png diff --git a/UXAssist/package/plugins/assets/cursor/cursor.png b/UXAssist/assets/cursor/cursor.png similarity index 100% rename from UXAssist/package/plugins/assets/cursor/cursor.png rename to UXAssist/assets/cursor/cursor.png diff --git a/UXAssist/package/plugins/assets/signal/energy-fragment.png b/UXAssist/assets/signal/energy-fragment.png similarity index 100% rename from UXAssist/package/plugins/assets/signal/energy-fragment.png rename to UXAssist/assets/signal/energy-fragment.png diff --git a/UXAssist/package/plugins/assets/signal/memory.png b/UXAssist/assets/signal/memory.png similarity index 100% rename from UXAssist/package/plugins/assets/signal/memory.png rename to UXAssist/assets/signal/memory.png diff --git a/UXAssist/package/plugins/assets/signal/negentropy.png b/UXAssist/assets/signal/negentropy.png similarity index 100% rename from UXAssist/package/plugins/assets/signal/negentropy.png rename to UXAssist/assets/signal/negentropy.png diff --git a/UXAssist/package/plugins/assets/signal/reassembler.png b/UXAssist/assets/signal/reassembler.png similarity index 100% rename from UXAssist/package/plugins/assets/signal/reassembler.png rename to UXAssist/assets/signal/reassembler.png diff --git a/UXAssist/package/plugins/assets/signal/silicon-neuron.png b/UXAssist/assets/signal/silicon-neuron.png similarity index 100% rename from UXAssist/package/plugins/assets/signal/silicon-neuron.png rename to UXAssist/assets/signal/silicon-neuron.png diff --git a/UXAssist/package/plugins/assets/signal/virtual-particle.png b/UXAssist/assets/signal/virtual-particle.png similarity index 100% rename from UXAssist/package/plugins/assets/signal/virtual-particle.png rename to UXAssist/assets/signal/virtual-particle.png