feat(upserver): 接入认证与KV存档并完成限定钓鱼闭环

This commit is contained in:
Liubing\LB
2026-09-28 18:14:01 +08:00
parent f40a816cc4
commit 0eb43b2b40
129 changed files with 11612 additions and 573 deletions

View File

@@ -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);
}
}
}
}