using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using Alphaleonis.Win32.Filesystem; using Microsoft.Win32; namespace Wabbajack.Common { public enum Game { //MO2 GAMES Morrowind, Oblivion, Fallout3, FalloutNewVegas, Skyrim, SkyrimSpecialEdition, Fallout4, SkyrimVR, //VORTEX GAMES DarkestDungeon } public class GameMetaData { public ModManager SupportedModManager { get; internal set; } public string MO2ArchiveName { get; internal set; } public Game Game { get; internal set; } public string NexusName { get; internal set; } public string MO2Name { get; internal set; } public string GameLocationRegistryKey { get; internal set; } public List SteamIDs { get; internal set; } public string GameLocation { get { if (Consts.TestMode) return Directory.GetCurrentDirectory(); return (string) Registry.GetValue(GameLocationRegistryKey, "installed path", null) ?? (string) Registry.GetValue( GameLocationRegistryKey.Replace(@"HKEY_LOCAL_MACHINE\SOFTWARE\", @"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\"), "installed path", null); } } } public class GameRegistry { public static GameMetaData GetByMO2ArchiveName(string gameName) { var gamename = gameName.ToLower(); return Games.Values.FirstOrDefault(g => g.MO2ArchiveName?.ToLower() == gamename); } public static Dictionary Games = new Dictionary { /*{ Game.Morrowind, new GameMetaData() },*/ { Game.Oblivion, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.Oblivion, NexusName = "oblivion", MO2Name = "Oblivion", MO2ArchiveName = "oblivion", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Oblivion", SteamIDs = new List{22330} } }, { Game.Fallout3, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.Fallout3, NexusName = "fallout3", MO2Name = "fallout3", MO2ArchiveName = "fallout3", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Fallout3", SteamIDs = new List{22300, 22370} // base game and GotY } }, { Game.FalloutNewVegas, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.FalloutNewVegas, NexusName = "newvegas", MO2Name = "New Vegas", MO2ArchiveName = "falloutnv", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\falloutnv", SteamIDs = new List{22380} } }, { Game.Skyrim, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.Skyrim, NexusName = "skyrim", MO2Name = "Skyrim", MO2ArchiveName = "skyrim", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\skyrim", SteamIDs = new List{72850} } }, { Game.SkyrimSpecialEdition, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.SkyrimSpecialEdition, NexusName = "skyrimspecialedition", MO2Name = "Skyrim Special Edition", MO2ArchiveName = "skyrimse", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Skyrim Special Edition", SteamIDs = new List{489830} } }, { Game.Fallout4, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.Fallout4, NexusName = "fallout4", MO2Name = "Fallout 4", MO2ArchiveName = "fallout4", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Fallout4", SteamIDs = new List{377160} } }, /*{ Game.Fallout4VR, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.Fallout4VR, NexusName = "fallout4", MO2Name = "Fallout 4", MO2ArchiveName = "fallout4", SteamIDs = new List{611660} } },*/ { Game.SkyrimVR, new GameMetaData { SupportedModManager = ModManager.MO2, Game = Game.SkyrimVR, NexusName = "skyrimspecialedition", MO2Name = "Skyrim VR", MO2ArchiveName = "skyrimse", GameLocationRegistryKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Skyrim VR", SteamIDs = new List{611670} } }, { Game.DarkestDungeon, new GameMetaData() { SupportedModManager = ModManager.Vortex, Game = Game.DarkestDungeon, NexusName = "darkestdungeon", SteamIDs = new List{262060} } } }; } }