【存盘】默认打开没有解锁完成主题

iOS_release
zhangaotian 2024-08-22 15:05:59 +08:00
parent 9a0fb7c3f8
commit 2923def249
10 changed files with 69 additions and 25 deletions

View File

@ -1,4 +1,5 @@
using Gameplay.Manager; using Gameplay.Manager;
using Framework.Manager;
using Framework.BI; using Framework.BI;
using UnityEngine; using UnityEngine;
using PhxhSDK; using PhxhSDK;
@ -60,6 +61,10 @@ namespace Gameplay.Game
{ {
ADManager.Instance.Release(); ADManager.Instance.Release();
_game.Release(); _game.Release();
//建造释放
BuildSelectManager.Instance.Release();
BuildManager.Instance.Release();
} }
} }
} }

View File

@ -26,7 +26,6 @@ namespace Gameplay
_Register<AppInfoManager>(); _Register<AppInfoManager>();
_Register<GameStateManager>(); _Register<GameStateManager>();
_Register<LevelSelectManager>(); _Register<LevelSelectManager>();
_Register<BuildSelectManager>();
_Register<LoadingExecutorManager>(); _Register<LoadingExecutorManager>();
SDKManager.Instance.Init(); SDKManager.Instance.Init();

View File

@ -28,7 +28,7 @@ namespace Gameplay.Game
public void OnExit() public void OnExit()
{ {
BuildManager.Instance.Release(); BuildManager.Instance.CurBuildRelease();
UIManager.Instance.CloseAllUI(true); UIManager.Instance.CloseAllUI(true);
GfxManager.Instance.ReturnGfxObj("Effect_SelectSequin", true); GfxManager.Instance.ReturnGfxObj("Effect_SelectSequin", true);
GfxManager.Instance.ReturnGfxObj("Effect_Sequin", true); GfxManager.Instance.ReturnGfxObj("Effect_Sequin", true);

View File

@ -82,7 +82,7 @@ public class UISelectBuildController : UIWindow
private void GoBuild() private void GoBuild()
{ {
if (!_curBuildID.Equals(BuildManager.Instance.UserBuildInfo.CurBuildId)) if (!_curBuildID.Equals(BuildManager.Instance.CurBuildInfo.BuildSceneID))
{ {
BuildManager.Instance.ChangeBuildSceneID = true; BuildManager.Instance.ChangeBuildSceneID = true;
GameStateManager.Instance.ChangeState(new GameStateStart(buildID: _curBuildID)); GameStateManager.Instance.ChangeState(new GameStateStart(buildID: _curBuildID));

View File

@ -39,7 +39,7 @@ public class UIStartMainController : UIWindow
{ {
OnStart(); OnStart();
} }
private void InitBlueprint() private void InitBlueprint()
{ {
_blueprint = FindObj("ResultPanel"); _blueprint = FindObj("ResultPanel");
@ -87,7 +87,7 @@ public class UIStartMainController : UIWindow
private async void ChangeBuildScene() private async void ChangeBuildScene()
{ {
await UIManager.Instance.OpenWindow(UIConstants.UISelectBuild, BuildManager.Instance.UserBuildInfo.CurBuildId); await UIManager.Instance.OpenWindow(UIConstants.UISelectBuild, BuildManager.Instance.CurBuildInfo.BuildSceneID);
} }
/// <summary> /// <summary>

View File

@ -1,12 +1,12 @@
using System.ComponentModel; using System.ComponentModel;
using Gameplay.ForestLevel;
using Framework.Constants; using Framework.Constants;
using LC.Newtonsoft.Json; using LC.Newtonsoft.Json;
using Framework.Manager;
using Gameplay.Manager; using Gameplay.Manager;
using Framework.Event; using Framework.Event;
using Framework.Manager; using Gameplay.Game;
using Gameplay.Level;
using Framework.UI; using Framework.UI;
using Gameplay.ForestLevel;
using PhxhSDK; using PhxhSDK;
public partial class SROptions public partial class SROptions
@ -39,6 +39,9 @@ public partial class SROptions
public void PassAllLevel() public void PassAllLevel()
{ {
LevelSelectManager.Instance.PassAllLevel(); LevelSelectManager.Instance.PassAllLevel();
BuildManager.Instance.ChangeBuildSceneID = true;
GameStateManager.Instance.ChangeState(
new GameStateStart(buildID: BuildManager.Instance.CurBuildInfo.BuildSceneID));
} }
[Category("关卡相关"), DisplayName("开启新手引导")] [Category("关卡相关"), DisplayName("开启新手引导")]
@ -78,7 +81,7 @@ public partial class SROptions
{ {
LevelSelectManager.Instance.ClearFile(); LevelSelectManager.Instance.ClearFile();
} }
[Category("存档相关"), DisplayName("清除当前场景所有选择节点")] [Category("存档相关"), DisplayName("清除当前场景所有选择节点")]
public void ClearBuildOption() public void ClearBuildOption()
{ {

View File

@ -2,13 +2,12 @@ using System;
using PhxhSDK; using PhxhSDK;
using UnityEngine; using UnityEngine;
using System.Linq; using System.Linq;
using PhxhSDK.Phxh;
using LC.Newtonsoft.Json; using LC.Newtonsoft.Json;
using Framework.Constants; using Framework.Constants;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using Cysharp.Threading.Tasks; using Cysharp.Threading.Tasks;
using System.Collections.Generic; using System.Collections.Generic;
using cfg.Build;
using PhxhSDK.Phxh;
using UnityEngine.AddressableAssets; using UnityEngine.AddressableAssets;
namespace Framework.Manager namespace Framework.Manager
@ -124,8 +123,12 @@ namespace Framework.Manager
public class BuildInfo public class BuildInfo
{ {
public string BuildSceneID; public string BuildSceneID;
public Dictionary<string, string> ChooseNodeInfo; public Dictionary<string, string> ChooseNodeInfo;
//当前节点
public bool Complete;
public BuildInfo() public BuildInfo()
{ {
ChooseNodeInfo = new Dictionary<string, string>(); ChooseNodeInfo = new Dictionary<string, string>();
@ -192,9 +195,9 @@ namespace Framework.Manager
private UserBuildInfo _userBuildInfo; private UserBuildInfo _userBuildInfo;
/// <summary> /// <summary>
/// 当前主题玩家选择情况 /// 当前玩家选择主题
/// </summary> /// </summary>
public BuildInfo BuildInfo public BuildInfo CurBuildInfo
{ {
get => _curBuildInfo; get => _curBuildInfo;
private set => _curBuildInfo = value; private set => _curBuildInfo = value;
@ -245,6 +248,7 @@ namespace Framework.Manager
{ {
InitForStorage(); InitForStorage();
var lastBuildID = _curBuildInfo;
var buildConfigId = !string.IsNullOrEmpty(buildID) ? buildID : _userBuildInfo.CurBuildId; var buildConfigId = !string.IsNullOrEmpty(buildID) ? buildID : _userBuildInfo.CurBuildId;
if (!TableManager.Instance.Tables.BuildConfig.DataMap.TryGetValue(buildConfigId, out var buildConfig)) if (!TableManager.Instance.Tables.BuildConfig.DataMap.TryGetValue(buildConfigId, out var buildConfig))
@ -267,8 +271,12 @@ namespace Framework.Manager
await Init(buildData, true); await Init(buildData, true);
await Addressables.LoadSceneAsync(buildConfig.Path).ToUniTask(); await Addressables.LoadSceneAsync(buildConfig.Path).ToUniTask();
_userBuildInfo.CurBuildId = buildConfigId;
StorageManager.Instance.SaveWithoutUpdate(); if (lastBuildID is { Complete: true } && !_curBuildInfo.Complete)
{
_userBuildInfo.CurBuildId = buildConfigId;
StorageManager.Instance.SaveWithoutUpdate();
}
} }
/// <summary> /// <summary>
@ -546,7 +554,7 @@ namespace Framework.Manager
if (_curBuildInfo.ChooseNodeInfo.TryGetValue(node, out var oldOption)) if (_curBuildInfo.ChooseNodeInfo.TryGetValue(node, out var oldOption))
{ {
_curBuildInfo.ChooseNodeInfo[node] = option; _curBuildInfo.ChooseNodeInfo[node] = option;
DebugUtil.LogY($"场景{_userBuildInfo.CurBuildId}中的节点{node}保存了{option}选择"); DebugUtil.LogY($"场景{_curBuildInfo.BuildSceneID}中的节点{node}保存了{option}选择");
} }
else else
{ {
@ -554,6 +562,19 @@ namespace Framework.Manager
_curBuildInfo.ChooseNodeInfo.Add(node, option); _curBuildInfo.ChooseNodeInfo.Add(node, option);
} }
var complete = true;
foreach (var chooseNode in _curBuildInfo.ChooseNodeInfo)
{
if (string.IsNullOrEmpty(chooseNode.Value))
{
complete = false;
break;
}
}
if (complete)
_curBuildInfo.Complete = true;
StorageManager.Instance.SaveWithoutUpdate(); StorageManager.Instance.SaveWithoutUpdate();
} }
@ -643,13 +664,13 @@ namespace Framework.Manager
private void DebugUserChooseNode() private void DebugUserChooseNode()
{ {
foreach (var infos in BuildInfo.ChooseNodeInfo) foreach (var infos in CurBuildInfo.ChooseNodeInfo)
{ {
DebugUtil.LogError("节点 {0} 选择的的是 {1}", infos.Key, infos.Value); DebugUtil.LogError("节点 {0} 选择的的是 {1}", infos.Key, infos.Value);
} }
} }
public void Release() public void CurBuildRelease()
{ {
foreach (var icon in _iconSprites) foreach (var icon in _iconSprites)
{ {
@ -659,5 +680,10 @@ namespace Framework.Manager
CurBlueprint = null; CurBlueprint = null;
CurTopBuildUI = null; CurTopBuildUI = null;
} }
public void Release()
{
CurBuildRelease();
}
} }
} }

View File

@ -7,7 +7,7 @@ using Framework.Constants;
using Cysharp.Threading.Tasks; using Cysharp.Threading.Tasks;
using System.Collections.Generic; using System.Collections.Generic;
public class BuildSelectManager : Singlenton<BuildSelectManager>, IInitable public class BuildSelectManager
{ {
public class BuildSelectItem public class BuildSelectItem
{ {
@ -17,6 +17,21 @@ public class BuildSelectManager : Singlenton<BuildSelectManager>, IInitable
public int Index; public int Index;
} }
private static BuildSelectManager _instance;
public static BuildSelectManager Instance
{
get
{
if (_instance == null)
{
_instance = new BuildSelectManager();
}
return _instance;
}
}
public Dictionary<string, BuildSelectItem> BuildSelectItems; public Dictionary<string, BuildSelectItem> BuildSelectItems;
private bool _isInit; private bool _isInit;
@ -81,10 +96,6 @@ public class BuildSelectManager : Singlenton<BuildSelectManager>, IInitable
return BuildSelectItems.Values.FirstOrDefault(item => item.Index == index - 1); return BuildSelectItems.Values.FirstOrDefault(item => item.Index == index - 1);
} }
public void Init()
{
}
public void Release() public void Release()
{ {
foreach (var buildSelectItem in BuildSelectItems) foreach (var buildSelectItem in BuildSelectItems)

View File

@ -321,7 +321,7 @@ public class BuildBoot : MonoBehaviour
/// </summary> /// </summary>
private void UpdateBuildDisplay() private void UpdateBuildDisplay()
{ {
var chooseNodeInfo = BuildManager.Instance.BuildInfo.ChooseNodeInfo; var chooseNodeInfo = BuildManager.Instance.CurBuildInfo.ChooseNodeInfo;
if (chooseNodeInfo == null || chooseNodeInfo.Count <= 0) if (chooseNodeInfo == null || chooseNodeInfo.Count <= 0)
{ {
DebugUtil.LogError("Build Boot: 玩家在该场景的建造信息获取错误"); DebugUtil.LogError("Build Boot: 玩家在该场景的建造信息获取错误");

View File

@ -52,7 +52,7 @@ namespace Framework.GameBuild
{ {
if (!BuildManager.Instance.BuildInGame) if (!BuildManager.Instance.BuildInGame)
{ {
BuildManager.Instance.Release(); BuildManager.Instance.CurBuildRelease();
} }
} }