Browse Source

Fixed stats sync issue

James Peret 2 years ago
parent
commit
03a4349ba9
2 changed files with 19 additions and 13 deletions
  1. 1 7
      Runtime/SteamworksManager.cs
  2. 18 6
      Runtime/SteamworksStats.cs

+ 1 - 7
Runtime/SteamworksManager.cs

@@ -6,12 +6,6 @@ using KairoEngine.Core;
 
 namespace KairoEngine.SteamIntegration
 {
-    // Todo: Separete concerns into different scripts - manager, stats, achievements, friends, screenshoots...
-    // Todo: Update stats
-    // Todo: Sync stats with KairoEngine Statistics
-    // Todo: Steam screenshoot
-    // Todo: Send user data to Analytics system 
-
     [HideMonoScript]
     public class SteamworksManager : MonoBehaviour
     {
@@ -55,7 +49,7 @@ namespace KairoEngine.SteamIntegration
                 var playerSteamId = Steamworks.SteamClient.SteamId;
                 if(showDebug)  Debug.Log($"{playerName} ({playerSteamId})");
                 Timer.ExecuteRealTimeNotDisposable(1000, () => {
-                    if(useStats) stats.Start(steamStatsLibray);
+                    if(useStats) stats.Start(steamStatsLibray, showDebug);
                     if(useAchievements) achievements.Start();
                 });
                 //PrintFriendsList();

+ 18 - 6
Runtime/SteamworksStats.cs

@@ -13,16 +13,18 @@ namespace KairoEngine.SteamIntegration
         public string statisticsBroadcastEvent = "SetStatisticData";
         public bool listenForStatisticsEvents = true;
         public string statisticsEvent = "StatisticDataChanged";
+        public bool debug = false;
 
         [InlineEditor(InlineEditorObjectFieldModes.Boxed), PropertySpace(4,0)]
         public SteamworksStatLibrary steamStats;
 
-        public void Start(SteamworksStatLibrary steamStatsLibrary) 
+        public void Start(SteamworksStatLibrary steamStatsLibrary, bool debug = false) 
         { 
+            this.debug = debug;
             if(steamStats == null) steamStats = steamStatsLibrary;
+            if(broadcastStatsOnStart) BroadcastStats();
             Timer.ExecuteRealTimeNotDisposable(2000, () => 
             {
-                if(broadcastStatsOnStart) BroadcastStats();
                 if(listenForStatisticsEvents)
                 {
                     for (int i = 0; i < steamStats.library.Count; i++)
@@ -96,18 +98,28 @@ namespace KairoEngine.SteamIntegration
 
         public void BroadcastStats()
         {
+            if(debug) Debug.Log($"Broadcasting Steam Stats ({steamStats.library.Count})");
             for (int i = 0; i < steamStats.library.Count; i++)
             {
                 var stat = steamStats.library[i];
                 if(stat.statType == SteamStatType.Integer) 
                 {
-                    int value = Steamworks.SteamUserStats.GetStatInt(stat.name);
-                    if(value != 0) GenericEvents.Trigger(statisticsBroadcastEvent, stat.name, value);
+                    int value = Steamworks.SteamUserStats.GetStatInt(stat.statName);
+                    if(value != 0) 
+                    {
+                        if(debug) Debug.Log($"Broadcasting Steam stat event \"{stat.name}\" = {value}");
+                        GenericEvents.Trigger(statisticsBroadcastEvent, stat.name, value);
+                        
+                    }
                 }
                 else if(stat.statType == SteamStatType.Float) 
                 {
-                    float value = Steamworks.SteamUserStats.GetStatFloat(stat.name);
-                    if(value != 0) GenericEvents.Trigger(statisticsBroadcastEvent, stat.name, value);
+                    float value = Steamworks.SteamUserStats.GetStatFloat(stat.statName);
+                    if(value != 0) 
+                    {
+                        if(debug) Debug.Log($"Broadcasting Steam stat event \"{stat.name}\" = {value}");
+                        GenericEvents.Trigger(statisticsBroadcastEvent, stat.name, value);
+                    }
                 }
             }
         }