feat(upserver): 接入认证与KV存档并完成限定钓鱼闭环
This commit is contained in:
@@ -16,6 +16,39 @@ public class BuffDataCenter
|
||||
Dictionary<int, FishBuffTimeData> globalBuffDataList = new Dictionary<int, FishBuffTimeData>();
|
||||
FishBuffTimeData fishDailyBuff = null;
|
||||
public List<FishBuffTimeData> showFishBuffIds = new List<FishBuffTimeData>();
|
||||
|
||||
internal static game.PlayerDataStorage.PlayerKVBuffState DecodeForKVLoad(IReadOnlyDictionary<string,string> raw,
|
||||
game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) =>
|
||||
game.PlayerDataStorage.PlayerKVSaveSchema.DecodeBuffs(raw,snapshot,errors);
|
||||
internal void ResetForKVLoad()
|
||||
{
|
||||
mapBuffDataList=new Dictionary<int,FishBuffTimeData>();
|
||||
targetBuffDataList=new List<FishBuffTimeData>();
|
||||
globalBuffDataList=new Dictionary<int,FishBuffTimeData>();
|
||||
showFishBuffIds=new List<FishBuffTimeData>(); fishDailyBuff=null;
|
||||
}
|
||||
static FishBuffTimeData MaterializeKVBuff(game.PlayerDataStorage.PlayerKVBuffValue value) => value==null ? null : new FishBuffTimeData
|
||||
{ SortID=value.SortID,sourceID=value.sourceID,buffID=value.buffID,isEnd=value.isEnd,buffEndTime=value.buffEndTime,isNew=false,addDown=0 };
|
||||
internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVBuffState state)
|
||||
{
|
||||
if(state==null) throw new ArgumentNullException(nameof(state));
|
||||
var map=new Dictionary<int,FishBuffTimeData>(); var global=new Dictionary<int,FishBuffTimeData>(); var target=new List<FishBuffTimeData>();
|
||||
foreach(var item in state.Map) map.Add(item.Key,MaterializeKVBuff(item.Value));
|
||||
foreach(var item in state.Global) global.Add(item.Key,MaterializeKVBuff(item.Value));
|
||||
foreach(var item in state.Target) target.Add(MaterializeKVBuff(item));
|
||||
mapBuffDataList=map; globalBuffDataList=global; targetBuffDataList=target; fishDailyBuff=MaterializeKVBuff(state.Daily);
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
internal FishBuffTimeData BuffForKVValidation(int kind,int key)
|
||||
{
|
||||
if(kind==0) return mapBuffDataList.TryGetValue(key,out var value) ? value : null;
|
||||
if(kind==1) return targetBuffDataList.Count>key ? targetBuffDataList[key] : null;
|
||||
if(kind==2) return fishDailyBuff;
|
||||
return globalBuffDataList.TryGetValue(key,out var global) ? global : null;
|
||||
}
|
||||
internal bool IsEmptyForKVValidation => mapBuffDataList.Count==0 && targetBuffDataList.Count==0 &&
|
||||
globalBuffDataList.Count==0 && showFishBuffIds.Count==0 && fishDailyBuff==null;
|
||||
#endif
|
||||
public void InitData(Dictionary<string, string> userDatas)
|
||||
{
|
||||
if (userDatas.TryGetValue("BuffDataList", out string buffDataStr))
|
||||
@@ -558,4 +591,4 @@ public class AddGlobalBuffEvent
|
||||
{
|
||||
this.buffID = buffID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user