public AppInfoItem GetAppInfoItem(ulong AppID) { AppInfoItem result = null; foreach (AppInfoItem current in AppInfoItems) { if ((ulong)current.AppID == AppID) { result = current; break; } } return(result); }
public AppInfoVDF(string appinfofile) { if (new FileInfo(appinfofile).Exists) { using (FileStream fileStream = new FileStream(appinfofile, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader binaryReader = new BinaryReader(fileStream); m_VersionSignature = binaryReader.ReadUInt32(); m_Universe = binaryReader.ReadUInt32(); if (m_VersionSignature == 123094054u) { bool flag = true; while (flag) { uint num = binaryReader.ReadUInt32(); if (num == 0u) { flag = false; } else { int num2 = binaryReader.ReadInt32(); byte[] arg_8D_0 = binaryReader.ReadBytes(num2); AppInfoItem appInfoItem = new AppInfoItem(num, num2); using (BinaryReader binaryReader2 = new BinaryReader(new MemoryStream(arg_8D_0, false))) { appInfoItem.State = binaryReader2.ReadUInt32(); appInfoItem.LastUpdated = binaryReader2.ReadUInt32(); appInfoItem.AccessToken = binaryReader2.ReadUInt64(); string text = ""; for (int i = 0; i < 20; i++) { text += binaryReader2.ReadByte().ToString(); } appInfoItem.SHA1 = text; appInfoItem.ChangeNumber = binaryReader2.ReadUInt32(); var appInfoItemKey = new AppInfoItemKey { Name = "App Info Section", Type = 1 }; bool flag2 = true; while (flag2) { if (binaryReader2.ReadByte() == 0) { flag2 = false; } else { appInfoItem.AddKeyValues(binaryReader2, appInfoItemKey); } } appInfoItem.AppInfoKey = appInfoItemKey; } AppInfoItems.Add(appInfoItem); } } } } } }
public void AddKeyValues(BinaryReader reader, AppInfoItemKey AIIK) { try { for (byte b = reader.ReadByte(); b != 8; b = reader.ReadByte()) { string name = AppInfoItem.ReadString(reader); AppInfoItemKey appInfoItemKey = new AppInfoItemKey { Name = name, Type = b }; string typeDescription; switch (b) { case 1: { string value = AppInfoItem.ReadString(reader); appInfoItemKey.Value = value; typeDescription = "String"; break; } case 2: appInfoItemKey.Value = reader.ReadInt32().ToString(); typeDescription = "Int32"; break; case 3: appInfoItemKey.Value = reader.ReadSingle().ToString(); typeDescription = "Single"; break; case 4: typeDescription = "Pointer"; break; case 5: { string text = AppInfoItem.ReadWideString(reader); appInfoItemKey.Value = text.ToString(); typeDescription = "WString"; break; } case 6: { byte b2 = reader.ReadByte(); byte b3 = reader.ReadByte(); byte b4 = reader.ReadByte(); appInfoItemKey.Value = string.Concat(new string[] { b2.ToString(), " ", b3.ToString(), " ", b4.ToString() }); typeDescription = "Color"; break; } case 7: appInfoItemKey.Value = reader.ReadUInt64().ToString(); typeDescription = "UInt64"; break; default: typeDescription = "String"; break; } appInfoItemKey.TypeDescription = typeDescription; AIIK.keys.Add(appInfoItemKey); if (b == 0) { AddKeyValues(reader, appInfoItemKey); } } } catch { } }