Exemple #1
0
 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);
                 }
             }
         }
     }
 }
Exemple #2
0
        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);
        }