mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 00:40:09 +09:00
Use ILive
for current skin
This commit is contained in:
@ -8,6 +8,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Database;
|
||||||
using osu.Game.Rulesets.Edit;
|
using osu.Game.Rulesets.Edit;
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Screens.Edit;
|
using osu.Game.Screens.Edit;
|
||||||
@ -55,13 +56,13 @@ namespace osu.Game.Rulesets.Mania.Tests.Editor
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestDefaultSkin()
|
public void TestDefaultSkin()
|
||||||
{
|
{
|
||||||
AddStep("set default skin", () => skins.CurrentSkinInfo.Value = SkinInfo.Default);
|
AddStep("set default skin", () => skins.CurrentSkinInfo.Value = SkinInfo.Default.ToLive());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestLegacySkin()
|
public void TestLegacySkin()
|
||||||
{
|
{
|
||||||
AddStep("set legacy skin", () => skins.CurrentSkinInfo.Value = DefaultLegacySkin.Info);
|
AddStep("set legacy skin", () => skins.CurrentSkinInfo.Value = DefaultLegacySkin.Info.ToLive());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
|
using osu.Game.Database;
|
||||||
using osu.Game.IO;
|
using osu.Game.IO;
|
||||||
using osu.Game.IO.Archives;
|
using osu.Game.IO.Archives;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
@ -165,30 +166,39 @@ namespace osu.Game.Tests.Skins.IO
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void assertCorrectMetadata(SkinInfo import1, string name, string creator, OsuGameBase osu)
|
private void assertCorrectMetadata(ILive<SkinInfo> import1, string name, string creator, OsuGameBase osu)
|
||||||
{
|
{
|
||||||
Assert.That(import1.Name, Is.EqualTo(name));
|
import1.PerformRead(i =>
|
||||||
Assert.That(import1.Creator, Is.EqualTo(creator));
|
{
|
||||||
|
Assert.That(i.Name, Is.EqualTo(name));
|
||||||
|
Assert.That(i.Creator, Is.EqualTo(creator));
|
||||||
|
|
||||||
// for extra safety let's reconstruct the skin, reading from the skin.ini.
|
// for extra safety let's reconstruct the skin, reading from the skin.ini.
|
||||||
var instance = import1.CreateInstance((IStorageResourceProvider)osu.Dependencies.Get(typeof(SkinManager)));
|
var instance = i.CreateInstance((IStorageResourceProvider)osu.Dependencies.Get(typeof(SkinManager)));
|
||||||
|
|
||||||
Assert.That(instance.Configuration.SkinInfo.Name, Is.EqualTo(name));
|
Assert.That(instance.Configuration.SkinInfo.Name, Is.EqualTo(name));
|
||||||
Assert.That(instance.Configuration.SkinInfo.Creator, Is.EqualTo(creator));
|
Assert.That(instance.Configuration.SkinInfo.Creator, Is.EqualTo(creator));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertImportedBoth(SkinInfo import1, SkinInfo import2)
|
private void assertImportedBoth(ILive<SkinInfo> import1, ILive<SkinInfo> import2)
|
||||||
{
|
{
|
||||||
Assert.That(import2.ID, Is.Not.EqualTo(import1.ID));
|
import1.PerformRead(i1 => import2.PerformRead(i2 =>
|
||||||
Assert.That(import2.Hash, Is.Not.EqualTo(import1.Hash));
|
{
|
||||||
Assert.That(import2.Files.First(), Is.Not.EqualTo(import1.Files.First()));
|
Assert.That(i2.ID, Is.Not.EqualTo(i1.ID));
|
||||||
|
Assert.That(i2.Hash, Is.Not.EqualTo(i1.Hash));
|
||||||
|
Assert.That(i2.Files.First(), Is.Not.EqualTo(i1.Files.First()));
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertImportedOnce(SkinInfo import1, SkinInfo import2)
|
private void assertImportedOnce(ILive<SkinInfo> import1, ILive<SkinInfo> import2)
|
||||||
{
|
{
|
||||||
Assert.That(import2.ID, Is.EqualTo(import1.ID));
|
import1.PerformRead(i1 => import2.PerformRead(i2 =>
|
||||||
Assert.That(import2.Hash, Is.EqualTo(import1.Hash));
|
{
|
||||||
Assert.That(import2.Files.First(), Is.EqualTo(import1.Files.First()));
|
Assert.That(i2.ID, Is.EqualTo(i1.ID));
|
||||||
|
Assert.That(i2.Hash, Is.EqualTo(i1.Hash));
|
||||||
|
Assert.That(i2.Files.First(), Is.EqualTo(i1.Files.First()));
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private MemoryStream createEmptyOsk()
|
private MemoryStream createEmptyOsk()
|
||||||
@ -255,10 +265,10 @@ namespace osu.Game.Tests.Skins.IO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<SkinInfo> loadSkinIntoOsu(OsuGameBase osu, ArchiveReader archive = null)
|
private async Task<ILive<SkinInfo>> loadSkinIntoOsu(OsuGameBase osu, ArchiveReader archive = null)
|
||||||
{
|
{
|
||||||
var skinManager = osu.Dependencies.Get<SkinManager>();
|
var skinManager = osu.Dependencies.Get<SkinManager>();
|
||||||
return (await skinManager.Import(archive)).Value;
|
return (await skinManager.Import(archive));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ namespace osu.Game.Tests.Skins
|
|||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
var imported = skins.Import(new ZipArchiveReader(TestResources.OpenResource("Archives/ogg-skin.osk"))).Result;
|
var imported = skins.Import(new ZipArchiveReader(TestResources.OpenResource("Archives/ogg-skin.osk"))).Result;
|
||||||
skin = skins.GetSkin(imported.Value);
|
skin = imported.PerformRead(skinInfo => skins.GetSkin(skinInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -8,6 +8,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
|
using osu.Game.Database;
|
||||||
using osu.Game.Graphics.Backgrounds;
|
using osu.Game.Graphics.Backgrounds;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
@ -122,7 +123,7 @@ namespace osu.Game.Tests.Visual.Background
|
|||||||
private void setCustomSkin()
|
private void setCustomSkin()
|
||||||
{
|
{
|
||||||
// feign a skin switch. this doesn't do anything except force CurrentSkin to become a LegacySkin.
|
// feign a skin switch. this doesn't do anything except force CurrentSkin to become a LegacySkin.
|
||||||
AddStep("set custom skin", () => skins.CurrentSkinInfo.Value = new SkinInfo());
|
AddStep("set custom skin", () => skins.CurrentSkinInfo.Value = new SkinInfo().ToLive());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultSkin() => AddStep("set default skin", () => skins.CurrentSkinInfo.SetDefault());
|
private void setDefaultSkin() => AddStep("set default skin", () => skins.CurrentSkinInfo.SetDefault());
|
||||||
|
@ -12,6 +12,7 @@ using osu.Framework.Testing;
|
|||||||
using osu.Framework.Timing;
|
using osu.Framework.Timing;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Database;
|
||||||
using osu.Game.Extensions;
|
using osu.Game.Extensions;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
@ -52,7 +53,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
{
|
{
|
||||||
AddStep("setup skins", () =>
|
AddStep("setup skins", () =>
|
||||||
{
|
{
|
||||||
skinManager.CurrentSkinInfo.Value = gameCurrentSkin;
|
skinManager.CurrentSkinInfo.Value = gameCurrentSkin.ToLive();
|
||||||
currentBeatmapSkin = getBeatmapSkin();
|
currentBeatmapSkin = getBeatmapSkin();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -248,7 +248,7 @@ namespace osu.Game
|
|||||||
configSkin.ValueChanged += skinId =>
|
configSkin.ValueChanged += skinId =>
|
||||||
{
|
{
|
||||||
// TODO: migrate the user skin selection to the new ID format.
|
// TODO: migrate the user skin selection to the new ID format.
|
||||||
SkinInfo skinInfo = null;
|
ILive<SkinInfo> skinInfo = null;
|
||||||
|
|
||||||
if (Guid.TryParse(skinId.NewValue, out var guid))
|
if (Guid.TryParse(skinId.NewValue, out var guid))
|
||||||
skinInfo = SkinManager.Query(s => s.ID == guid);
|
skinInfo = SkinManager.Query(s => s.ID == guid);
|
||||||
@ -256,10 +256,10 @@ namespace osu.Game
|
|||||||
if (skinInfo == null)
|
if (skinInfo == null)
|
||||||
{
|
{
|
||||||
if (guid == SkinInfo.CLASSIC_SKIN)
|
if (guid == SkinInfo.CLASSIC_SKIN)
|
||||||
skinInfo = DefaultLegacySkin.Info;
|
skinInfo = DefaultLegacySkin.Info.ToLive();
|
||||||
}
|
}
|
||||||
|
|
||||||
SkinManager.CurrentSkinInfo.Value = skinInfo ?? SkinInfo.Default;
|
SkinManager.CurrentSkinInfo.Value = skinInfo ?? SkinInfo.Default.ToLive();
|
||||||
};
|
};
|
||||||
configSkin.TriggerChange();
|
configSkin.TriggerChange();
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ namespace osu.Game.Skinning
|
|||||||
private readonly IResourceStore<byte[]> resources;
|
private readonly IResourceStore<byte[]> resources;
|
||||||
|
|
||||||
public readonly Bindable<Skin> CurrentSkin = new Bindable<Skin>();
|
public readonly Bindable<Skin> CurrentSkin = new Bindable<Skin>();
|
||||||
public readonly Bindable<SkinInfo> CurrentSkinInfo = new Bindable<SkinInfo>(SkinInfo.Default) { Default = SkinInfo.Default };
|
public readonly Bindable<ILive<SkinInfo>> CurrentSkinInfo = new Bindable<ILive<SkinInfo>>(SkinInfo.Default.ToLive()) { Default = SkinInfo.Default.ToLive() };
|
||||||
|
|
||||||
private readonly SkinModelManager skinModelManager;
|
private readonly SkinModelManager skinModelManager;
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
},
|
},
|
||||||
new OsuSpriteText
|
new OsuSpriteText
|
||||||
{
|
{
|
||||||
Text = skin?.SkinInfo?.Name ?? "none",
|
Text = skin?.SkinInfo?.Value.Name ?? "none",
|
||||||
Scale = new Vector2(1.5f),
|
Scale = new Vector2(1.5f),
|
||||||
Padding = new MarginPadding(5),
|
Padding = new MarginPadding(5),
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user