Beispiel #1
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);
        }
Beispiel #2
0
 public void Update()
 {
     RecordingData data = new RecordingData(m_input[0], m_input[1], m_input[2], m_input[3], m_input[4]);
     m_data.AddLast(data);
 }
Beispiel #3
0
        private Replay.Recording BuildRecording(string filepath)
        {
            if (filepath == null)
            {
                throw new ArgumentNullException(nameof(filepath));
            }

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

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

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

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

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

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

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

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

            // TODO: fix team modes and p2 profiles
            var initsettings = new Combat.EngineInitialization(mode, TeamMode.None, TeamMode.None,
                                                               p1profile, p1palette, PlayerMode.Human,
                                                               p1profile, p1palette, PlayerMode.Human,
                                                               p2profile, p2palette, PlayerMode.Human,
                                                               p2profile, p2palette, PlayerMode.Human,
                                                               stageprofile, seed);

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

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

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

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

                replaydata.Add(inputdata);
            }

            return(new Replay.Recording(initsettings, replaydata));
        }
Beispiel #4
0
        public void Update()
        {
            RecordingData data = new RecordingData(m_input[0], m_input[1], m_input[2], m_input[3], m_input[4]);

            m_data.AddLast(data);
        }
Beispiel #5
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));
        }