From 540e0c61bd1a9a8d22c64061b5dcd120bf28faec Mon Sep 17 00:00:00 2001 From: ctrwaz Date: Mon, 29 Dec 2025 02:19:57 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=9A=AE=E8=82=A4]=E4=BF=AE=E5=A4=8D=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 6 ++-- .../Screens/EzSkinSettingsTab.cs | 7 ++--- .../Skinning/Components/EzGetComboTexture.cs | 28 +++++++++++++------ .../Skinning/Components/EzGetScoreTexture.cs | 28 +++++++++++++++---- 4 files changed, 48 insertions(+), 21 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 7c5225cff7..60e31fc869 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/osu.Desktop/bin/Debug/net8.0/osu!.dll" + "${workspaceRoot}/osu.Desktop/bin/Debug/net8.0/Ez2osu!.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build osu! (Debug)", @@ -19,7 +19,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/osu.Desktop/bin/Release/net8.0/osu!.dll" + "${workspaceRoot}/osu.Desktop/bin/Release/net8.0/Ez2osu!.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build osu! (Release)", @@ -55,7 +55,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/osu.Desktop/bin/Debug/net8.0/osu!.dll", + "${workspaceRoot}/osu.Desktop/bin/Debug/net8.0/Ez2osu!.dll", "--tournament" ], "cwd": "${workspaceRoot}", diff --git a/osu.Game/LAsEzExtensions/Screens/EzSkinSettingsTab.cs b/osu.Game/LAsEzExtensions/Screens/EzSkinSettingsTab.cs index c0cd4207b8..baec22fe7e 100644 --- a/osu.Game/LAsEzExtensions/Screens/EzSkinSettingsTab.cs +++ b/osu.Game/LAsEzExtensions/Screens/EzSkinSettingsTab.cs @@ -41,11 +41,10 @@ namespace osu.Game.LAsEzExtensions.Screens private static readonly Dictionary resource_paths = new Dictionary { - ["note"] = @"EzResources\note", - ["Stage"] = @"EzResources\Stage", - ["GameTheme"] = @"EzResources\GameTheme" + ["note"] = Path.Combine("EzResources", "note"), + ["Stage"] = Path.Combine("EzResources", "Stage"), + ["GameTheme"] = Path.Combine("EzResources", "GameTheme") }; - private static readonly Dictionary position_mode_config = new Dictionary { [true] = (new Color4(0.2f, 0.4f, 0.8f, 0.3f), "SwitchToAbsolute".Localize(), "SwitchToAbsolute".Localize()), diff --git a/osu.Game/Skinning/Components/EzGetComboTexture.cs b/osu.Game/Skinning/Components/EzGetComboTexture.cs index e9578aaf8d..991f0ca050 100644 --- a/osu.Game/Skinning/Components/EzGetComboTexture.cs +++ b/osu.Game/Skinning/Components/EzGetComboTexture.cs @@ -3,11 +3,16 @@ using System; using System.Collections.Generic; +using System.IO; using System.Threading.Tasks; +using osu.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Graphics.Rendering; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; +using osu.Framework.IO.Stores; +using osu.Framework.Platform; using osu.Framework.Text; using osu.Game.Graphics.Sprites; @@ -32,13 +37,18 @@ namespace osu.Game.Skinning.Components } [BackgroundDependencyLoader] - private void load(TextureStore textures) + private void load(GameHost host, IRenderer renderer) { - // Spacing = new Vector2(-2f, 0f); + Storage gameStorage = host.Storage; + + var userResourceStore = new StorageBackedResourceStore(gameStorage); + var textureLoader = new TextureLoaderStore(userResourceStore); + var localSkinStore = new TextureStore(renderer, textureLoader); + FontName.BindValueChanged(e => { Font = new FontUsage(FontName.Value.ToString(), 1); - glyphStore = new GlyphStore(textures, getLookup); + glyphStore = new GlyphStore(localSkinStore, getLookup); foreach (char c in new[] { '.', '%', 'c', 'e', 'l', 'j' }) glyphStore.Get(FontName.Value.ToString(), c); @@ -77,6 +87,7 @@ namespace osu.Game.Skinning.Components string textureNameReplace = textureName.Replace(" ", "_"); string[] possiblePaths; + string themeRoot = Path.Combine("EzResources", "GameTheme", textureNameReplace); switch (character) { @@ -86,29 +97,29 @@ namespace osu.Game.Skinning.Components case 'l': possiblePaths = new[] { - $"EzResources/GameTheme/{textureNameReplace}/{lookup}", + Path.Combine(themeRoot, lookup) }; break; case 'c': possiblePaths = new[] { - $"EzResources/GameTheme/{textureNameReplace}/combo/{lookup}", //combo图 + Path.Combine(themeRoot, "combo", lookup) }; break; case 'j': possiblePaths = new[] { - $"EzResources/GameTheme/{textureNameReplace}/judgement/", + Path.Combine(themeRoot, "judgement") }; break; default: possiblePaths = new[] { - $"EzResources/GameTheme/{textureNameReplace}/combo/number/{lookup}", //数字 - $"EzResources/GameTheme/{textureNameReplace}/judgement/{lookup}", //判定 + Path.Combine(themeRoot, "combo", "number", lookup), + Path.Combine(themeRoot, "judgement", lookup) }; break; } @@ -121,6 +132,7 @@ namespace osu.Game.Skinning.Components { glyph = new TexturedCharacterGlyph(new CharacterGlyph(character, 0, 0, texture.Width, texture.Height, null), texture, 0.125f); + break; } } } diff --git a/osu.Game/Skinning/Components/EzGetScoreTexture.cs b/osu.Game/Skinning/Components/EzGetScoreTexture.cs index 84e8e88b00..329e6cd722 100644 --- a/osu.Game/Skinning/Components/EzGetScoreTexture.cs +++ b/osu.Game/Skinning/Components/EzGetScoreTexture.cs @@ -3,11 +3,15 @@ using System; using System.Collections.Generic; +using System.IO; using System.Threading.Tasks; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Graphics.Rendering; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; +using osu.Framework.IO.Stores; +using osu.Framework.Platform; using osu.Framework.Text; using osu.Game.Graphics.Sprites; @@ -32,13 +36,18 @@ namespace osu.Game.Skinning.Components } [BackgroundDependencyLoader] - private void load(TextureStore textures) + private void load(GameHost host, IRenderer renderer) { + Storage gameStorage = host.Storage; + + var userResourceStore = new StorageBackedResourceStore(gameStorage); + var textureLoader = new TextureLoaderStore(userResourceStore); + var localSkinStore = new TextureStore(renderer, textureLoader); // Spacing = new Vector2(-2f, 0f); FontName.BindValueChanged(e => { Font = new FontUsage(FontName.Value.ToString(), 1); - glyphStore = new GlyphStore(textures, getLookup); + glyphStore = new GlyphStore(localSkinStore, getLookup); foreach (char c in new[] { '.', '%' }) glyphStore.Get(FontName.Value.ToString(), c); @@ -78,17 +87,23 @@ namespace osu.Game.Skinning.Components string[] possiblePaths; + string themeRoot = Path.Combine("EzResources", "GameTheme", textureNameReplace); + switch (character) { case '.': case '%': - default: possiblePaths = new[] { - $"EzResources/GameTheme/{textureNameReplace}/number/score/{lookup}", - $"EzResources/GameTheme/{textureNameReplace}/number/combo/{lookup}", //combo图 - $"EzResources/GameTheme/{textureNameReplace}/number/{lookup}", //combo图 + // 对应:.../number/score/{lookup} + Path.Combine(themeRoot, "number", "score", lookup), + + // 对应:.../number/combo/{lookup} + Path.Combine(themeRoot, "number", "combo", lookup), + + // 对应:.../number/{lookup} + Path.Combine(themeRoot, "number", lookup), }; break; } @@ -101,6 +116,7 @@ namespace osu.Game.Skinning.Components { glyph = new TexturedCharacterGlyph(new CharacterGlyph(character, 0, 0, texture.Width, texture.Height, null), texture, 0.125f); + break; } } }