feat(upserver): 保存M2客户端KV迁移至本人统计写检查点

保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
This commit is contained in:
Liubing\LB
2026-09-30 19:19:05 +08:00
parent 1c0cdf7a99
commit 6813da149a
511 changed files with 151858 additions and 2376 deletions

View File

@@ -87,9 +87,12 @@ namespace GameCore
}
public async void ShowRankTierChange()
{
var store = playerSaveStore;
if (!store.IsCurrent) return;
if (rankTierChangeState > 0 && curSolomain != null)
{
GameObject go = await UIManager.Instance.ShowUI(UITypes.EventFishingDuelRankChangePopupPanel);
if (!store.IsCurrent) return;
EventFishingDuelRankChangePopupPanel changePopupPanel = go.GetComponent<EventFishingDuelRankChangePopupPanel>();
changePopupPanel.SetRank(rankTierChangeState == 1, curSolomain);
rankTierChangeState = 0;
@@ -98,7 +101,7 @@ namespace GameCore
}
public void SoloCheckClaimReward()
{
string json_duelData = PlayFabMgr.Instance.GetLocalData(FishingDuelManager.SoloDataKey);
string json_duelData = playerSaveStore.Read(FishingDuelManager.SoloDataKey).ValueOrThrow();
if (json_duelData != null)
{
duelData = Newtonsoft.Json.JsonConvert.DeserializeObject<DuelData>(json_duelData);
@@ -120,7 +123,7 @@ namespace GameCore
duelData.rewardEventID = 0;
duelData.preProgress = 0;
string json_duelData = Newtonsoft.Json.JsonConvert.SerializeObject(duelData);
PlayFabMgr.Instance.UpdateUserDataValue(FishingDuelManager.SoloDataKey, json_duelData);
playerSaveStore.Write(FishingDuelManager.SoloDataKey, json_duelData).RequireAccepted();
}
}
public void GMAddSoloProgress(int count)
@@ -133,7 +136,7 @@ namespace GameCore
}
public void InitSoloData(FishingEvent t)
{
string json_duelData = PlayFabMgr.Instance.GetLocalData(FishingDuelManager.SoloDataKey);
string json_duelData = playerSaveStore.Read(FishingDuelManager.SoloDataKey).ValueOrThrow();
if (json_duelData != null)
{
duelData = Newtonsoft.Json.JsonConvert.DeserializeObject<DuelData>(json_duelData);
@@ -262,7 +265,7 @@ namespace GameCore
public void AddPVPToken(int value)
{
PVPToken += value;
PlayFabMgr.Instance.UpdateUserDataValue("PVPToken", PVPToken.ToString());
playerSaveStore.Write("PVPToken", PVPToken.ToString()).RequireAccepted();
if (value < 0 && duelData != null)
{
duelData.rePVPToken -= value;
@@ -272,7 +275,7 @@ namespace GameCore
public void SaveDuelData()
{
string json_duelData = Newtonsoft.Json.JsonConvert.SerializeObject(duelData);
PlayFabMgr.Instance.UpdateUserDataValue(FishingDuelManager.SoloDataKey, json_duelData);
playerSaveStore.Write(FishingDuelManager.SoloDataKey, json_duelData).RequireAccepted();
}
#endregion SoloData
}