chore(m2): 保存功能验收及后续清理前检查点

This commit is contained in:
Liubing\LB
2026-10-10 20:40:27 +08:00
parent d3c5394a55
commit 144e7f739f
110 changed files with 12672 additions and 7514 deletions

View File

@@ -13,17 +13,6 @@ namespace game
public class AggUserService : PlayFabUserService
{
public AggUserService() { }
internal AggUserService(PlayerDataStorage.PlayerKVControlledLoadCapability capability) : base(capability) { }
internal IReadOnlyList<PlayerDataStorage.PlayerKVIdentityChannel> KVLinkedAccounts { get; private set; } =
Array.Empty<PlayerDataStorage.PlayerKVIdentityChannel>();
internal override void ResetForKVLoad()
{
base.ResetForKVLoad();
KVLinkedAccounts=Array.Empty<PlayerDataStorage.PlayerKVIdentityChannel>();
}
internal override void ReplaceKVLinked(PlayerDataStorage.PlayerKVLoginState state)
{ KVLinkedAccounts=new List<PlayerDataStorage.PlayerKVIdentityChannel>(state.Linked).AsReadOnly(); }
protected override string NewPlayerName
{
get
@@ -56,15 +45,6 @@ namespace game
public override async Task<ELoginStep> Login(Action<int> progress, bool tryLoginByToken = true)
{
#if UNITY_EDITOR && !SERVICE_HOST
if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled)
{
CustomId=game.PlayerDataStorage.PlayerKVGameplayLoop.Permit.PlayerId;
OnInitData+=InitData;
try { return await LoginWithBackend(progress,"kv-loop"); }
finally { OnInitData-=InitData; }
}
#endif
var backend=CaptureSaveBackend();
if(RejectSaveBackend(backend)) return ELoginStep.Api;
var generation = logoutGeneration;
@@ -190,9 +170,8 @@ namespace game
public override void Logout()
{
base.Logout();
if(IsControlledKVInstance) return;
TYSdkFacade.Instance.Logout();
base.Logout();
}
public override async Task<bool> GetLinkState(EAccoutType accoutType)
@@ -218,25 +197,8 @@ namespace game
return (linkResult.code, linkResult.userId);
}
internal int KVNotificationCount { get; private set; }
internal override async Task<PlayerDataStorage.PlayerKVGameLoadResult> LoadKVForValidationAsync(PlayerDataStorage.PlayerKVGameLoadCapability capability)
{
EnterKVReceiver(ReceiveKVData);
try { return await base.LoadKVForValidationAsync(capability); }
finally { ExitKVReceiver(); }
}
void ReceiveKVData(IDictionary<string,string> data)
{
if(!IsControlledKVInstance || KVLoadingCopy==null || data.Count!=KVLoadingCopy.Count)
throw new InvalidOperationException("Controlled notification window invalid.");
KVNotificationCount++;
}
private void InitData(IDictionary<string, string> data)
{
#if UNITY_EDITOR && !SERVICE_HOST
// Editor loop has no channel SDK login. M31 already replaced account URLs and linked flags.
if(PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return;
#endif
if (data.TryGetValue(EAccoutType.hwGoogle.ToString(), out var google) && google == "1")
{
TYSdkFacade.TYAccountInfo.linkedAccout.Add(EAccoutType.hwGoogle);