feat(upserver): 接入认证与KV存档并完成限定钓鱼闭环
This commit is contained in:
@@ -32,6 +32,31 @@ public class AchievementDataManager : IDisposable
|
||||
{
|
||||
_tables = tables;
|
||||
}
|
||||
internal static game.PlayerDataStorage.PlayerKVAchievementState DecodeForKVLoad(
|
||||
IReadOnlyDictionary<string, string> raw, IReadOnlyDictionary<string, string> modern,
|
||||
game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors)
|
||||
=> game.PlayerDataStorage.PlayerKVSaveSchema.DecodeAchievements(raw, modern, snapshot, errors);
|
||||
|
||||
internal void ResetForKVLoad()
|
||||
{
|
||||
_achievementDatas = new Dictionary<ConditionType, AchievementData>();
|
||||
}
|
||||
|
||||
internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVAchievementState state)
|
||||
{
|
||||
if (state == null) throw new ArgumentNullException(nameof(state));
|
||||
var replacement = new Dictionary<ConditionType, AchievementData>();
|
||||
foreach (var entry in state.Values)
|
||||
replacement.Add((ConditionType)entry.Key, new AchievementData
|
||||
{ Id = entry.Value.Id, Target = entry.Value.Target, day = entry.Value.Day });
|
||||
_achievementDatas = replacement;
|
||||
}
|
||||
|
||||
internal bool IsEmptyForKVValidation => _achievementDatas.Count == 0;
|
||||
internal AchievementData FindForKVValidation(ConditionType key)
|
||||
=> _achievementDatas.TryGetValue(key, out var value)
|
||||
? new AchievementData { Id = value.Id, Target = value.Target, day = value.day } : null;
|
||||
|
||||
public void LoadAchievementData(string value)
|
||||
{
|
||||
_achievementDatas = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<ConditionType, AchievementData>>(value);
|
||||
|
||||
Reference in New Issue
Block a user