コード例 #1
0
ファイル: ModCrates.cs プロジェクト: TheBetaM/CrateModLoader
        /// <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);
            }
        }
コード例 #2
0
        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));
            }
        }