private void GetStatistics() { this.Statistics.Clear(); foreach (StatDefinition statDefinition in this.StatDefinitions) { if (!string.IsNullOrEmpty(statDefinition.Id)) { if (statDefinition is IntegerStatDefinition) { IntegerStatDefinition integerStatDefinition = (IntegerStatDefinition)statDefinition; int num = 0; if (this.SteamClient.SteamUserStats.GetStatValue(integerStatDefinition.Id, ref num)) { BindingList <StatInfo> statistics = this.Statistics; IntStatInfo intStatInfo1 = new IntStatInfo(); intStatInfo1.Id = integerStatDefinition.Id; intStatInfo1.DisplayName = integerStatDefinition.DisplayName; intStatInfo1.IntValue = num; intStatInfo1.OriginalValue = num; intStatInfo1.IncrementOnly = integerStatDefinition.IncrementOnly; intStatInfo1.Permission = integerStatDefinition.Permission; IntStatInfo intStatInfo2 = intStatInfo1; statistics.Add((StatInfo)intStatInfo2); } } else if (statDefinition is FloatStatDefinition) { FloatStatDefinition floatStatDefinition = (FloatStatDefinition)statDefinition; float num = 0.0f; if (this.SteamClient.SteamUserStats.GetStatValue(floatStatDefinition.Id, ref num)) { BindingList <StatInfo> statistics = this.Statistics; FloatStatInfo floatStatInfo1 = new FloatStatInfo(); floatStatInfo1.Id = floatStatDefinition.Id; floatStatInfo1.DisplayName = floatStatDefinition.DisplayName; floatStatInfo1.FloatValue = num; floatStatInfo1.OriginalValue = num; floatStatInfo1.IncrementOnly = floatStatDefinition.IncrementOnly; floatStatInfo1.Permission = floatStatDefinition.Permission; FloatStatInfo floatStatInfo2 = floatStatInfo1; statistics.Add((StatInfo)floatStatInfo2); } } } } }
private bool LoadUserGameStatsSchema() { string path; try { path = Path.Combine(Path.Combine(Path.Combine(Steam.GetInstallPath(), "appcache"), "stats"), string.Format("UserGameStatsSchema_{0}.bin", (object)this.GameId)); if (!System.IO.File.Exists(path)) { return(false); } } catch { return(false); } KeyValue keyValue1 = KeyValue.LoadAsBinary(path); if (keyValue1 == null) { return(false); } string currentGameLanguage = this.SteamClient.SteamApps003.GetCurrentGameLanguage(); this.AchievementDefinitions.Clear(); this.StatDefinitions.Clear(); KeyValue keyValue2 = keyValue1[this.GameId.ToString()]["stats"]; if (!keyValue2.Valid || keyValue2.Children == null) { return(false); } foreach (KeyValue child1 in keyValue2.Children) { if (child1.Valid) { switch (child1["type"].AsInteger(0)) { case 1: string defaultValue1 = child1["name"].AsString(""); string localizedString1 = this.GetLocalizedString(child1["display"]["name"], currentGameLanguage, defaultValue1); List <StatDefinition> statDefinitions1 = this.StatDefinitions; IntegerStatDefinition integerStatDefinition1 = new IntegerStatDefinition(); integerStatDefinition1.Id = child1["name"].AsString(""); integerStatDefinition1.DisplayName = localizedString1; integerStatDefinition1.MinValue = child1["min"].AsInteger(int.MinValue); integerStatDefinition1.MaxValue = child1["max"].AsInteger(int.MaxValue); integerStatDefinition1.MaxChange = child1["maxchange"].AsInteger(0); integerStatDefinition1.IncrementOnly = child1["incrementonly"].AsBoolean(false); integerStatDefinition1.DefaultValue = child1["default"].AsInteger(0); integerStatDefinition1.Permission = child1["permission"].AsInteger(0); IntegerStatDefinition integerStatDefinition2 = integerStatDefinition1; statDefinitions1.Add((StatDefinition)integerStatDefinition2); continue; case 2: case 3: string defaultValue2 = child1["name"].AsString(""); string localizedString2 = this.GetLocalizedString(child1["display"]["name"], currentGameLanguage, defaultValue2); List <StatDefinition> statDefinitions2 = this.StatDefinitions; FloatStatDefinition floatStatDefinition1 = new FloatStatDefinition(); floatStatDefinition1.Id = child1["name"].AsString(""); floatStatDefinition1.DisplayName = localizedString2; floatStatDefinition1.MinValue = child1["min"].AsFloat(float.MinValue); floatStatDefinition1.MaxValue = child1["max"].AsFloat(float.MaxValue); floatStatDefinition1.MaxChange = child1["maxchange"].AsFloat(0.0f); floatStatDefinition1.IncrementOnly = child1["incrementonly"].AsBoolean(false); floatStatDefinition1.DefaultValue = child1["default"].AsFloat(0.0f); floatStatDefinition1.Permission = child1["permission"].AsInteger(0); FloatStatDefinition floatStatDefinition2 = floatStatDefinition1; statDefinitions2.Add((StatDefinition)floatStatDefinition2); continue; case 4: case 5: if (child1.Children != null) { using (IEnumerator <KeyValue> enumerator = child1.Children.Where <KeyValue>((Func <KeyValue, bool>)(b => b.Name.ToLowerInvariant() == "bits")).GetEnumerator()) { while (enumerator.MoveNext()) { KeyValue current = enumerator.Current; if (current.Valid && current.Children != null) { foreach (KeyValue child2 in current.Children) { string defaultValue3 = child2["name"].AsString(""); string localizedString3 = this.GetLocalizedString(child2["display"]["name"], currentGameLanguage, defaultValue3); string localizedString4 = this.GetLocalizedString(child2["display"]["desc"], currentGameLanguage, ""); this.AchievementDefinitions.Add(new AchievementDefinition() { Id = defaultValue3, Name = localizedString3, Description = localizedString4, Icon = child2["display"]["icon"].AsString(""), IconGray = child2["display"]["icon_gray"].AsString(""), Hidden = child2["display"]["hidden"].AsBoolean(false), Permission = child2["permission"].AsInteger(0) }); } } } continue; } } else { continue; } default: throw new InvalidOperationException("invalid stat type"); } } } return(true); }