Commit 0737e09d authored by SherryChaos's avatar SherryChaos

Avoid unnecessary appearance asset reloads

Reduce redundant reloading of appearance assets and simplify loading logic. DuelBGManager now only reloads appearance assets for puzzles or non-duel conditions. OnlineServant no longer forces a reload when returning to the lobby. RoomServant reloads except returning from deck selector. Appearance.LoadSettingAssets was simplified.
parent 1b859396
...@@ -139,9 +139,8 @@ namespace MDPro3.Duel ...@@ -139,9 +139,8 @@ namespace MDPro3.Duel
UIManager.UIBlackIn(Core.TransitionTime); UIManager.UIBlackIn(Core.TransitionTime);
await UniTask.WaitForSeconds(Core.TransitionTime); await UniTask.WaitForSeconds(Core.TransitionTime);
await UniTask.WaitUntil(() => Appearance.loaded); await UniTask.WaitUntil(() => Appearance.loaded);
// Rebuild appearance assets on each match load so random selections if(inPuzzle || condition != Condition.Duel)
// (icon / frame / protector) are re-rolled per duel. await Program.instance.appearance.LoadSettingAssets();
await Program.instance.appearance.LoadSettingAssets();
await ABLoader.CacheMasterDuelBundles(); await ABLoader.CacheMasterDuelBundles();
Program.instance.ocgcore.LoadDuelButton(); Program.instance.ocgcore.LoadDuelButton();
......
...@@ -76,8 +76,6 @@ namespace MDPro3.Servant ...@@ -76,8 +76,6 @@ namespace MDPro3.Servant
#endregion #endregion
private const string FaceFrameMaterialCode = "1030001"; private const string FaceFrameMaterialCode = "1030001";
private static readonly object loadSettingAssetsLock = new();
private static Task loadSettingAssetsTask;
public enum Condition public enum Condition
{ {
...@@ -187,19 +185,9 @@ namespace MDPro3.Servant ...@@ -187,19 +185,9 @@ namespace MDPro3.Servant
public static bool loaded; public static bool loaded;
public async UniTask LoadSettingAssets() public async UniTask LoadSettingAssets()
{ {
Task taskToAwait; if (!loaded && matForFace != null) return;
lock (loadSettingAssetsLock) loaded = false;
{ await LoadSettingAssetsCore();
if (loadSettingAssetsTask == null || loadSettingAssetsTask.IsCompleted)
{
loaded = false;
loadSettingAssetsTask = LoadSettingAssetsCore().AsTask();
}
taskToAwait = loadSettingAssetsTask;
}
await taskToAwait;
} }
private static void ApplyFrameTexture(Material material, Sprite sprite) private static void ApplyFrameTexture(Material material, Sprite sprite)
......
...@@ -51,8 +51,6 @@ namespace MDPro3.Servant ...@@ -51,8 +51,6 @@ namespace MDPro3.Servant
if (servantUI != null) if (servantUI != null)
RefreshDeckSelector(); RefreshDeckSelector();
// Re-roll random duel icon/frame/protector whenever returning to lobby.
_ = Program.instance.appearance.LoadSettingAssets();
StartCoroutine(RefreshMyCardAssets()); StartCoroutine(RefreshMyCardAssets());
} }
......
...@@ -35,11 +35,12 @@ namespace MDPro3.Servant ...@@ -35,11 +35,12 @@ namespace MDPro3.Servant
public static bool NeedSide; public static bool NeedSide;
public static bool JoinWithReconnect; public static bool JoinWithReconnect;
public static bool SideWaitingObserver; public static bool SideWaitingObserver;
public static bool FromSolo;
public static bool SoloLockHand; public static bool SoloLockHand;
public static int CoreShowing = 0;
public static bool FromSolo;
public static bool FromLocalHost; public static bool FromLocalHost;
public static bool FromHandTest; public static bool FromHandTest;
public static int CoreShowing = 0;
public class Player public class Player
{ {
...@@ -68,8 +69,8 @@ namespace MDPro3.Servant ...@@ -68,8 +69,8 @@ namespace MDPro3.Servant
CoreShowing = 0; CoreShowing = 0;
Program.instance.ui_.chatPanel.Show(false); Program.instance.ui_.chatPanel.Show(false);
OcgCore.handler = Handler; OcgCore.handler = Handler;
// Re-roll random duel/watch icon & frame whenever entering a room. if(preDepth != Program.instance.deckSelector.Depth)
_ = Program.instance.appearance.LoadSettingAssets(); _ = Program.instance.appearance.LoadSettingAssets();
GetUI<RoomServantUI>().RefreshDeckSelector(); GetUI<RoomServantUI>().RefreshDeckSelector();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment