public override void Initialize()
        {
            IO.TextFile inifile = LoadIniFile();

            IO.TextSection videosettings = inifile.GetSection("Video Settings");
            if (videosettings != null)
            {
                m_screensize       = videosettings.GetAttribute <Point>("ScreenSize", m_screensize);
                m_useoldshader     = videosettings.GetAttribute <Boolean>("UseOldShader", m_useoldshader);
                m_vsync            = videosettings.GetAttribute <Boolean>("VSync", m_vsync);
                m_screenshotformat = videosettings.GetAttribute <ScreenShotFormat>("ScreenShotFormat", m_screenshotformat);
            }

            IO.TextSection replaysettings = inifile.GetSection("Replay Settings");
            if (replaysettings != null)
            {
                m_recordreplay    = replaysettings.GetAttribute <Boolean>("RecordReplay", m_recordreplay);
                m_quitafterreplay = replaysettings.GetAttribute <Boolean>("QuitAfterReplay", m_quitafterreplay);
            }

            IO.TextSection debugsettings = inifile.GetSection("Debug Settings");
            if (debugsettings != null)
            {
                m_diagonsticwindow = debugsettings.GetAttribute <Boolean>("ShowDiagnosticWindow", m_diagonsticwindow);
                m_keeplog          = debugsettings.GetAttribute <Boolean>("Keep Log", m_keeplog);
            }

            IO.TextSection gamesettings = inifile.GetSection("Game Settings");
            if (gamesettings != null)
            {
                m_preloadsprites = gamesettings.GetAttribute <Boolean>("PreloadCharacterSprites", m_preloadsprites);
                m_roundlength    = gamesettings.GetAttribute <Int32>("RoundLength", m_roundlength);
                m_soundchannels  = gamesettings.GetAttribute <Int32>("SoundChannels", m_soundchannels);
            }

            IO.TextSection systemkeys = inifile.GetSection("System Keys");
            if (systemkeys != null)
            {
                foreach (SystemButton systembutton in Enum.GetValues(typeof(SystemButton)))
                {
                    if (systembutton == SystemButton.None)
                    {
                        continue;
                    }

                    Keys key = systemkeys.GetAttribute <Keys>(systembutton.ToString(), Keys.None);
                    if (key == Keys.None)
                    {
                        continue;
                    }

                    m_systemkeys.Add(systembutton, key);
                }
            }

            IO.TextSection p1keys = inifile.GetSection("Player 1 Keys");
            if (p1keys != null)
            {
                foreach (PlayerButton playerbutton in Enum.GetValues(typeof(PlayerButton)))
                {
                    if (playerbutton == PlayerButton.None)
                    {
                        continue;
                    }

                    Keys key = p1keys.GetAttribute <Keys>(playerbutton.ToString(), Keys.None);
                    if (key == Keys.None)
                    {
                        continue;
                    }

                    m_p1keys.Add(playerbutton, key);
                }
            }

            IO.TextSection p2keys = inifile.GetSection("Player 2 Keys");
            if (p2keys != null)
            {
                foreach (PlayerButton playerbutton in Enum.GetValues(typeof(PlayerButton)))
                {
                    if (playerbutton == PlayerButton.None)
                    {
                        continue;
                    }

                    Keys key = p2keys.GetAttribute <Keys>(playerbutton.ToString(), Keys.None);
                    if (key == Keys.None)
                    {
                        continue;
                    }

                    m_p2keys.Add(playerbutton, key);
                }
            }

#if TEST
            m_screensize = Mugen.ScreenSize * 3;
#endif
        }
Пример #2
0
        Replay.Recording BuildRecording(String filepath)
        {
            if (filepath == null)
            {
                throw new ArgumentNullException("filepath");
            }

            ProfileLoader profiles = m_subsystems.GetSubSystem <ProfileLoader>();

            if (m_subsystems.GetSubSystem <IO.FileSystem>().DoesFileExist(filepath) == false)
            {
                return(null);
            }

            IO.TextFile    text   = m_subsystems.GetSubSystem <IO.FileSystem>().OpenTextFile(filepath);
            IO.TextSection header = text.GetSection("xnaMugen Replay Header");
            IO.TextSection data   = text.GetSection("xnaMugen Replay Data");

            if (header == null || data == null)
            {
                return(null);
            }

            Int32      version   = header.GetAttribute <Int32>("Version", 0);
            CombatMode mode      = header.GetAttribute <CombatMode>("Combat Mode", CombatMode.None);
            String     p1name    = header.GetAttribute <String>("Player 1 Name", null);
            String     p1version = header.GetAttribute <String>("Player 1 Version", null);
            Int32      p1palette = header.GetAttribute <Int32>("Player 1 Palette", Int32.MinValue);
            String     p2name    = header.GetAttribute <String>("Player 2 Name", null);
            String     p2version = header.GetAttribute <String>("Player 2 Version", null);
            Int32      p2palette = header.GetAttribute <Int32>("Player 2 Palette", Int32.MinValue);
            String     stagepath = header.GetAttribute <String>("Stage Path", null);
            Int32      seed      = header.GetAttribute <Int32>("Seed", Int32.MinValue);

            if (version != 1 || mode == CombatMode.None || stagepath == null || seed == Int32.MinValue)
            {
                return(null);
            }
            if (p1name == null || p1version == null || p1palette == Int32.MinValue)
            {
                return(null);
            }

            PlayerProfile p1profile    = profiles.FindPlayerProfile(p1name, p1version);
            PlayerProfile p2profile    = profiles.FindPlayerProfile(p2name, p2version);
            StageProfile  stageprofile = profiles.FindStageProfile(stagepath);

            if (p1profile == null || p2profile == null || stageprofile == null)
            {
                return(null);
            }

            Combat.EngineInitialization initsettings = new Combat.EngineInitialization(mode, p1profile, p1palette, p2profile, p2palette, stageprofile, seed);

            List <Replay.RecordingData> replaydata = new List <Replay.RecordingData>();

            Regex           line_regex = new Regex(@"^(\d+),\s*(\d+),\s*(\d+),\s*(\d+),\s*(\d+)$", RegexOptions.IgnoreCase);
            StringConverter converter  = profiles.GetSubSystem <StringConverter>();

            foreach (String dataline in data.Lines)
            {
                Match match = line_regex.Match(dataline);
                if (match.Success == false)
                {
                    continue;
                }

                Replay.RecordingData inputdata = new Replay.RecordingData(
                    converter.Convert <Int32>(match.Groups[1].Value),
                    converter.Convert <Int32>(match.Groups[2].Value),
                    converter.Convert <Int32>(match.Groups[3].Value),
                    converter.Convert <Int32>(match.Groups[4].Value),
                    converter.Convert <Int32>(match.Groups[5].Value)
                    );

                replaydata.Add(inputdata);
            }

            return(new Replay.Recording(initsettings, replaydata));
        }