feat(upserver): 保存M2客户端KV迁移至本人统计写检查点
保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using asap.core;
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using game;
|
||||
using GameCore;
|
||||
@@ -12,6 +12,8 @@ using UnityEngine;
|
||||
public class AquariumManager
|
||||
{
|
||||
public const string AquariumEventDataNewKey = "AquariumEventDataNewKey";
|
||||
readonly game.PlayerDataStorage.IPlayerSaveStore saveStore;
|
||||
readonly IUserService loginUser;
|
||||
private cfg.Tables _tables;
|
||||
private ICustomServerMgr customServerMgr;
|
||||
public AquariumManagerData data { get; private set; }
|
||||
@@ -21,12 +23,15 @@ public class AquariumManager
|
||||
public List<AquariumSlotData> sellList;
|
||||
public AquariumManager()
|
||||
{
|
||||
saveStore = GContext.container.Resolve<game.PlayerDataStorage.IPlayerSaveStore>();
|
||||
loginUser = GContext.container.Resolve<IUserService>();
|
||||
_tables = GContext.container.Resolve<Tables>();
|
||||
customServerMgr = GContext.container.Resolve<ICustomServerMgr>();
|
||||
}
|
||||
public static AquariumManagerData GetAquariumManagerData()
|
||||
public static AquariumManagerData GetAquariumManagerData(game.PlayerDataStorage.IPlayerSaveStore store = null)
|
||||
{
|
||||
string dataStr = PlayFabMgr.Instance.GetLocalData(AquariumEventDataNewKey);
|
||||
var source = store ?? GContext.container.Resolve<game.PlayerDataStorage.IPlayerSaveStore>();
|
||||
string dataStr = source.Read(AquariumEventDataNewKey).ValueOrThrow();
|
||||
if (!string.IsNullOrEmpty(dataStr))
|
||||
{
|
||||
try
|
||||
@@ -43,7 +48,8 @@ public class AquariumManager
|
||||
public async Task Synchrodata()
|
||||
{
|
||||
//从服务器拿数据
|
||||
var dataSever = GetAquariumManagerData();
|
||||
if (!saveStore.IsCurrent) throw new OperationCanceledException();
|
||||
var dataSever = GetAquariumManagerData(saveStore);
|
||||
if (dataSever == null)
|
||||
{
|
||||
//新数据
|
||||
@@ -63,8 +69,9 @@ public class AquariumManager
|
||||
return;
|
||||
}
|
||||
GetAquariumDataRequest request = new GetAquariumDataRequest();
|
||||
request.playFabId = GContext.container.Resolve<IUserService>().UserId;
|
||||
request.playFabId = loginUser.UserId;
|
||||
string result = await customServerMgr.CustomServerPost("aquarium/GetAquariumData", Newtonsoft.Json.JsonConvert.SerializeObject(request));
|
||||
if (!saveStore.IsCurrent) throw new OperationCanceledException();
|
||||
AquariumServerData serverData = null;
|
||||
if (result != null)
|
||||
{
|
||||
@@ -611,7 +618,7 @@ public class AquariumManager
|
||||
}
|
||||
void UpdateUserData()
|
||||
{
|
||||
PlayFabMgr.Instance.UpdateUserDataValue(AquariumEventDataNewKey, data.Serialize());
|
||||
saveStore.Write(AquariumEventDataNewKey, data.Serialize()).RequireAccepted();
|
||||
}
|
||||
void SaveData(bool all = false)
|
||||
{
|
||||
@@ -637,7 +644,7 @@ public class AquariumManager
|
||||
if (all)
|
||||
{
|
||||
UpdateAquariumAllDataRequest request = new UpdateAquariumAllDataRequest();
|
||||
request.playFabId = GContext.container.Resolve<IUserService>().UserId;
|
||||
request.playFabId = loginUser.UserId;
|
||||
request.data = new AquariumServerData()
|
||||
{
|
||||
startTime = data.startTime,
|
||||
@@ -653,7 +660,7 @@ public class AquariumManager
|
||||
else
|
||||
{
|
||||
UpdateSlotDatasRequest request = new UpdateSlotDatasRequest();
|
||||
request.playFabId = GContext.container.Resolve<IUserService>().UserId;
|
||||
request.playFabId = loginUser.UserId;
|
||||
request.slotDatas = data.slotDatas;
|
||||
request.cardLv = string.Join(',', cardLv);
|
||||
customServerMgr.CustomServerPost("aquarium/UpdateSlotData", Newtonsoft.Json.JsonConvert.SerializeObject(request));
|
||||
|
||||
Reference in New Issue
Block a user