diff --git a/src/SAM/Stats/Factories/SteamStatisticFactory.cs b/src/SAM/Stats/Factories/SteamStatisticFactory.cs
index 71db04c7..1599d796 100644
--- a/src/SAM/Stats/Factories/SteamStatisticFactory.cs
+++ b/src/SAM/Stats/Factories/SteamStatisticFactory.cs
@@ -17,44 +17,46 @@ public static class SteamStatisticFactory
///
/// Occurs when the , , or the is or empty.
/// Occurs when an unkown type is supplied.
- public static SteamStatisticBase CreateStat(Client client, StatInfoBase stat)
+ public static SteamStatisticBase CreateStat(Client client, StatInfoBase stat)
+{
+ if (client == null) throw new ArgumentNullException(nameof(client));
+ if (string.IsNullOrEmpty(stat?.Id)) throw new ArgumentNullException(nameof(stat));
+
+ switch (stat)
{
- if (client == null) throw new ArgumentNullException(nameof(client));
- if (string.IsNullOrEmpty(stat?.Id)) throw new ArgumentNullException(nameof(stat));
+ // STAT_INT
+ case IntegerStatInfo intDefinition:
+ {
+ if (!client.SteamUserStats.GetStatValue(intDefinition.Id, out int value)) break;
- switch (stat)
+ intDefinition.Value = value;
+
+ return new IntegerSteamStatistic(intDefinition);
+ }
+ // STAT_AVGRATE
+ case AvgRateStatInfo avgRateDefinition:
{
- // STAT_INT
- case IntegerStatInfo intDefinition:
- {
- if (!client.SteamUserStats.GetStatValue(intDefinition.Id, out int value)) break;
-
- intDefinition.Value = value;
-
- return new IntegerSteamStatistic(intDefinition);
- }
- // STAT_AVGRATE
- case AvgRateStatInfo avgRateDefinition:
- {
- if (!client.SteamUserStats.GetStatValue(avgRateDefinition.Id, out float value)) break;
-
- avgRateDefinition.Value = value;
-
- // NOTE: average rate stats are always treated as floats
- return new FloatSteamStatistic(avgRateDefinition);
- }
- // STAT_FLOAT
- case FloatStatInfo floatDefinition:
- {
- if (!client.SteamUserStats.GetStatValue(floatDefinition.Id, out float value)) break;
-
- floatDefinition.Value = value;
-
- return new FloatSteamStatistic(floatDefinition);
- }
+ if (!client.SteamUserStats.GetStatValue(avgRateDefinition.Id, out float value)) break;
+
+ avgRateDefinition.Value = value;
+
+ // NOTE: average rate stats are always treated as floats
+ return new FloatSteamStatistic(avgRateDefinition);
}
+ // STAT_FLOAT
+ case FloatStatInfo floatDefinition:
+ {
+ if (!client.SteamUserStats.GetStatValue(floatDefinition.Id, out float value)) break;
- throw new ArgumentOutOfRangeException(nameof(stat));
+ floatDefinition.Value = value;
+
+ return new FloatSteamStatistic(floatDefinition);
+ }
+ default:
+ // Log the type of the unhandled stat
+ Console.WriteLine($"Unhandled stat type: {stat.GetType()} with ID: {stat.Id}");
+ break;
}
+ throw new ArgumentOutOfRangeException(nameof(stat), $"Unhandled stat type: {stat?.GetType()} with ID: {stat?.Id}");
}