static void Main(string[] args)
        {
            var zelda1 = new NESGame("The Legend of Zelda", "Action/RPG", 1987);

            var megaman2 = new NESGame("Mega Man 2", "Action/Adventure", 1989);

            var punchout = new NesGame("Mike Tyson's Punch Out", "Sports", 1987);

            var robocop = new Movies("Robocop", "Sci-Fi/Action", 1987);

            var pulpfiction = new Movies("Pulp Fiction", "Drama", 1994);

            var threeamigos = new Movies("Three Amigos", "Comedy", 1986);

            var wutang = new Bands("Wu-Tang Clan", "HipHop", "Enter The 36 Chambers");

            var midnight = new Bands("The Midnight", "SynthWave", "Endless Summer");

            var prince = new Bands("Prince", "Pop", "Purple Rain");

            var batman = new Comics("Batman", "DC", "Justice League");

            var punisher = new Comics("The Punisher", "Marvel", "Defenders");

            var wolverine = new Comics("Wolverine", "Marvel", "X-Men");

            // Calling The NES Games //
            Console.WriteLine("These are a few of my favorite NES games:");
            Console.WriteLine(zelda1.Name + " is a " + zelda1.Genre + " game released in " + zelda1.Year);
            Console.WriteLine(megaman2.Name + " is a " + megaman2.Genre + " game released in " + megaman2.Year);
            Console.WriteLine(punchout.Name + " is a " + punchout.Genre + " game released in " + punchout.Year);
            Console.WriteLine("");

            // Calling The Movies //
            Console.WriteLine("These are a few of my favorite movies:");
            Console.WriteLine(robocop.Name + " is an " + robocop.Genre + " movie released in " + robocop.Year);
            Console.WriteLine(pulpfiction.Name + " is an " + pulpfiction.Genre + " movie released in " + pulpfiction.Year);
            Console.WriteLine(threeamigos.Name + " is an " + threeamigos.Genre + " movie released in " + threeamigos.Year);
            Console.WriteLine("");

            // Calling The Artists //
            Console.WriteLine("These are a few of my favorite artists:");
            Console.WriteLine(wutang.Name + " is a " + wutang.Genre + " artist. " + wutang.Album + " is my favorite album.");
            Console.WriteLine(midnight.Name + " is a " + midnight.Genre + " artist. " + midnight.Album + " is my favorite album.");
            Console.WriteLine(prince.Name + " is a " + prince.Genre + " artist. " + prince.Album + " is my favorite album.");
            Console.WriteLine("");

            // Calling The Comics //
            Console.WriteLine("These are a few of my favorite comics:");
            Console.WriteLine(batman.Name + " is a " + batman.Brand + " comic. The " + batman.Affilation + " is his affilation.");
            Console.WriteLine(punisher.Name + " is a " + punisher.Brand + " comic. The " + punisher.Affilation + " is his affilation.");
            Console.WriteLine(wolverine.Name + " is a " + wolverine.Brand + " comic. The " + wolverine.Affilation + " is his affilation.");

            Console.ReadKey();
        }
示例#2
0
        private void buttonShowGameGenieDatabase_Click(object sender, EventArgs e)
        {
            if (!(currentApp is NesGame))
            {
                return;
            }
            NesGame           nesGame = currentApp as NesGame;
            GameGenieCodeForm lFrm    = new GameGenieCodeForm(nesGame);

            if (lFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                textBoxGameGenie.Text = nesGame.GameGenie;
            }
        }
示例#3
0
        public override void Execute()
        {
            ReportProgress(0);
            try
            {
                var apps = new List <NesMiniApplication>();
                addedApplications = null;
                //bool NoForAllUnsupportedMappers = false;
                bool YesForAllUnsupportedMappers = false;
                YesForAllPatches = false;
                int count = 0;
                ReportStatus(Properties.Resources.AddingGames);
                foreach (var sourceFileName in _GamesToAdd)
                {
                    NesMiniApplication app = null;
                    try
                    {
                        var    fileName  = sourceFileName;
                        var    ext       = Path.GetExtension(sourceFileName).ToLower();
                        bool?  needPatch = YesForAllPatches ? (bool?)true : null;
                        byte[] rawData   = null;
                        string tmp       = null;
                        if (ext == ".7z" || ext == ".zip" || ext == ".rar")
                        {
                            SevenZipExtractor.SetLibraryPath(Path.Combine(Program.BaseDirectoryInternal, IntPtr.Size == 8 ? @"tools\7z64.dll" : @"tools\7z.dll"));
                            using (var szExtractor = new SevenZipExtractor(sourceFileName))
                            {
                                var filesInArchive     = new List <string>();
                                var gameFilesInArchive = new List <string>();
                                foreach (var f in szExtractor.ArchiveFileNames)
                                {
                                    var e = Path.GetExtension(f).ToLower();
                                    if (e == ".desktop" || Manager.EmulatorManager.getInstance().isFileValidRom(e))
                                    {
                                        gameFilesInArchive.Add(f);
                                    }
                                    filesInArchive.Add(f);
                                }
                                if (gameFilesInArchive.Count == 1) // Only one NES file (or app)
                                {
                                    fileName = gameFilesInArchive[0];
                                }
                                else if (gameFilesInArchive.Count > 1) // Many NES files, need to select
                                {
                                    var r = SelectFile(gameFilesInArchive.ToArray());
                                    if (r == DialogResult.OK)
                                    {
                                        fileName = selectedFile;
                                    }
                                    else if (r == DialogResult.Ignore)
                                    {
                                        fileName = sourceFileName;
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                                else if (filesInArchive.Count == 1) // No NES files but only one another file
                                {
                                    fileName = filesInArchive[0];
                                }
                                else // Need to select
                                {
                                    var r = SelectFile(filesInArchive.ToArray());
                                    if (r == DialogResult.OK)
                                    {
                                        fileName = selectedFile;
                                    }
                                    else if (r == DialogResult.Ignore)
                                    {
                                        fileName = sourceFileName;
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                                if (fileName != sourceFileName)
                                {
                                    var o = new MemoryStream();
                                    if (Path.GetExtension(fileName).ToLower() == ".desktop" || // App in archive, need the whole directory
                                        szExtractor.ArchiveFileNames.Contains(Path.GetFileNameWithoutExtension(fileName) + ".jpg") || // Or it has cover in archive
                                        szExtractor.ArchiveFileNames.Contains(Path.GetFileNameWithoutExtension(fileName) + ".png"))
                                    {
                                        tmp = Path.Combine(Path.GetTempPath(), fileName);
                                        Directory.CreateDirectory(tmp);
                                        szExtractor.ExtractArchive(tmp);
                                        fileName = Path.Combine(tmp, fileName);
                                    }
                                    else
                                    {
                                        szExtractor.ExtractFile(fileName, o);
                                        rawData = new byte[o.Length];
                                        o.Seek(0, SeekOrigin.Begin);
                                        o.Read(rawData, 0, (int)o.Length);
                                    }
                                }
                            }
                        }
                        if (Path.GetExtension(fileName).ToLower() == ".nes")
                        {
                            try
                            {
                                app = NesGame.Import(fileName, sourceFileName, YesForAllUnsupportedMappers ? (bool?)true : null, ref needPatch, needPatchCallback, null, rawData);

                                // Trying to import Game Genie codes
                                var lGameGeniePath = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + ".xml");
                                if (File.Exists(lGameGeniePath))
                                {
                                    GameGenieDataBase lGameGenieDataBase = new GameGenieDataBase(app);
                                    lGameGenieDataBase.ImportCodes(lGameGeniePath, true);
                                    lGameGenieDataBase.Save();
                                }
                            }
                            catch (Exception ex)
                            {
                                if (ex is UnsupportedMapperException || ex is UnsupportedFourScreenException)
                                {
                                    var r = MessageBoxFromThread(
                                        (ex is UnsupportedMapperException)
                                           ? string.Format(Properties.Resources.MapperNotSupported, Path.GetFileName(fileName), (ex as UnsupportedMapperException).ROM.Mapper)
                                           : string.Format(Properties.Resources.FourScreenNotSupported, Path.GetFileName(fileName)),
                                        Properties.Resources.AreYouSure,
                                        _GamesToAdd.Count() <= 1 ? MessageBoxButtons.YesNo : MessageBoxButtons.AbortRetryIgnore,
                                        MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, true);
                                    if (r == DialogResult.Abort)
                                    {
                                        YesForAllUnsupportedMappers = true;
                                    }
                                    if (r == DialogResult.Yes || r == DialogResult.Abort || r == DialogResult.Retry)
                                    {
                                        app = NesGame.Import(fileName, sourceFileName, true, ref needPatch, needPatchCallback, null, rawData);
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                                else
                                {
                                    throw ex;
                                }
                            }
                        }
                        else
                        {
                            app = NesMiniApplication.Import(fileName, sourceFileName, rawData);
                        }
                        if (!string.IsNullOrEmpty(tmp) && Directory.Exists(tmp))
                        {
                            Directory.Delete(tmp, true);
                        }
                        ConfigIni.SelectedGames += ";" + app.Code;
                    }
                    catch (Exception ex)
                    {
                        if (ex is System.Threading.ThreadAbortException)
                        {
                            ReportCompleted();
                        }
                        Debug.WriteLine(ex.Message + ex.StackTrace);
                        ReportError(ex.Message, false);
                    }
                    if (app != null)
                    {
                        apps.Add(app);
                    }
                    ReportProgress((++count * 100 / _GamesToAdd.Count()));
                }
                addedApplications = apps;

                ReportCompleted();
            }
            catch (Exception exc)
            {
                ReportError(exc.Message, true);
            }
        }