feat(upserver): 接入认证与KV存档并完成限定钓鱼闭环
This commit is contained in:
@@ -10,6 +10,32 @@ namespace game
|
||||
{
|
||||
public class EventPinataPackDataManager:IOrderReplenishment,IOrderSuccess
|
||||
{
|
||||
private readonly EventPinataPackData _kvTarget;
|
||||
private EventPinataPackDataManager(EventPinataPackData target) { _kvTarget=target; }
|
||||
internal static EventPinataPackDataManager CreateForKVLoad()
|
||||
{
|
||||
var target=GContext.container.Resolve<EventPinataPackData>();
|
||||
if(target==null) throw new System.InvalidOperationException("KV Pinata target is not registered.");
|
||||
return new EventPinataPackDataManager(target);
|
||||
}
|
||||
private EventPinataPackData RequireKVTarget()
|
||||
{
|
||||
var target=GContext.container.Resolve<EventPinataPackData>();
|
||||
if(target==null || (_kvTarget!=null && !ReferenceEquals(target,_kvTarget)))
|
||||
throw new System.InvalidOperationException("KV Pinata target changed.");
|
||||
return target;
|
||||
}
|
||||
internal static PlayerDataStorage.PlayerKVPinataState DecodeForKVLoad(IReadOnlyDictionary<string,string> raw,
|
||||
PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => PlayerDataStorage.PlayerKVSaveSchema.DecodePinata(raw,errors);
|
||||
internal void ResetForKVLoad()
|
||||
{
|
||||
var target=RequireKVTarget(); target.EventID=0; target.PinataMainID=0; target.PurchasedCount=0;
|
||||
}
|
||||
internal void ReplaceFromKVDecoded(PlayerDataStorage.PlayerKVPinataState state)
|
||||
{
|
||||
if(state==null) throw new System.ArgumentNullException(nameof(state));
|
||||
var target=RequireKVTarget(); target.EventID=state.EventID; target.PinataMainID=state.PinataMainID; target.PurchasedCount=state.PurchasedCount;
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
private bool m_IsCheckCondition = true;
|
||||
#else
|
||||
@@ -173,4 +199,4 @@ namespace game
|
||||
data?.AddPurchasedCount(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user