diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs index 0c7aaf919..e87daf30e 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs @@ -2,9 +2,11 @@ using asap.core; using asap.playfab.async; using cfg; using game; +using game.PlayerDataStorage; using PlayFab.ClientModels; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Threading.Tasks; using tysdk; @@ -162,6 +164,27 @@ namespace GameCore { Statistics.Add(new StatisticUpdate() { StatisticName = names[i], Value = value[i] }); } + if (userService is KVUserService kvUser) + { + var store = kvUser.SaveStore; + var writtenNames = new HashSet(StringComparer.Ordinal); + bool accepted = false; + foreach (var statistic in Statistics) + { + if (!writtenNames.Add(statistic.StatisticName)) continue; + var write = store.Write(statistic.StatisticName, statistic.Value.ToString(CultureInfo.InvariantCulture)); + if (write.Accepted) accepted = true; + else Debug.LogError("KV statistic write failed: " + statistic.StatisticName + ": " + write.Error); + } + if (accepted) + { + var confirmation = await store.FlushAsync(); + if (confirmation.Status != PlayerSaveStatus.Confirmed) + Debug.LogError("KV statistic save not confirmed: " + string.Join(",", writtenNames) + + ": " + confirmation.Status + ": " + confirmation.Error); + } + return; + } UpdatePlayerStatisticsRequest request = new UpdatePlayerStatisticsRequest() { Statistics = Statistics,