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 }
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)); }