/// <summary> /// Optional region check. /// </summary> public static void VerifyModCrates(List <ModCrate> SupportedMods, string ShortName, RegionCode region) { bool modsdirty = false; foreach (var crate in SupportedMods) { if (!crate.IsActivated) { continue; } if (!crate.HasSettings || !crate.Settings.ContainsKey("GameRegion") || crate.Settings["GameRegion"] != region.Region.ToString()) { crate.IsActivated = false; modsdirty = true; } } if (modsdirty) { PopulateModList(SupportedMods, true, ShortName); } }
void SetGameType(string serial, ConsoleMode console, uint RegionID) { bool RegionNotSupported = true; RegionCode TargetRegion = new RegionCode(); Modder = null; SupportedMods = new List <ModCrate>(); if (SupportedGames.Count <= 0) { Console.WriteLine("ERROR: No games supported!"); return; } foreach (KeyValuePair <Game, Assembly> pair in SupportedGames) { Game game = pair.Key; if (!game.Consoles.Contains(console)) { continue; } RegionCode[] codelist; if (game.RegionID.ContainsKey(console)) { codelist = game.RegionID[console]; } else { codelist = null; Console.WriteLine("ERROR: Missing RegionID for game " + game.Name); } foreach (var r in codelist) { if (serial.Contains(r.Name)) { if (console == ConsoleMode.XBOX && RegionID != r.RegionNumber) { RegionNotSupported = true; } else { RegionNotSupported = false; Modder = (Modder)Activator.CreateInstance(game.ModderClass); Game = game; TargetRegion = r; break; } } } if (RegionNotSupported) { foreach (var r in codelist) { if (serial.Contains(r.Name)) { Modder = (Modder)Activator.CreateInstance(game.ModderClass); Game = game; TargetRegion = r; break; } } } if (Modder != null) { Modder.assembly = pair.Value; Modder.ConsolePipeline = Pipeline; Modder.GameRegion = TargetRegion; break; } } string cons_mod = ""; switch (console) { default: cons_mod = console.ToString(); break; case ConsoleMode.Undefined: cons_mod = "(" + ModLoaderText.UnknownConsole + ")"; break; } string region_mod = "(" + ModLoaderText.UnknownRegion + ")"; if (!RegionNotSupported) { switch (TargetRegion.Region) { case RegionType.NTSC_J: region_mod = "NTSC-J"; break; case RegionType.NTSC_U: region_mod = "NTSC-U"; break; case RegionType.PAL: region_mod = "PAL"; break; case RegionType.Global: region_mod = ""; break; default: region_mod = "(" + ModLoaderText.UnknownRegion + ")"; break; } } // UI stuff if (Modder == null) { LayoutChangeUnsupported.Invoke(this, new EventValueArgs <string>(cons_mod)); } else { Modder.PopulateProperties(); LayoutChangeSupported.Invoke(this, new EventGameDetails(Game, cons_mod, region_mod)); } }