Exemplo n.º 1
0
        private static FortniteReplay ReadReplay(FileInfo replayFile)
        {
            var reader = new ReplayReader();
            var replay = reader.ReadReplay(replayFile.FullName);

            return(replay);
        }
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection()
                                    .AddLogging(loggingBuilder => loggingBuilder
                                                .AddConsole()
                                                .SetMinimumLevel(LogLevel.Error));
            var provider = serviceCollection.BuildServiceProvider();
            var logger   = provider.GetService <ILogger <Program> >();

            //var localAppDataFolder = GetFolderPath(SpecialFolder.LocalApplicationData);
            //var replayFilesFolder = Path.Combine(localAppDataFolder, @"FortniteGame\Saved\Demos");
            var replayFilesFolder = @"F:\Projects\FortniteReplayCollection\_upload\season 11\";
            var replayFiles       = Directory.EnumerateFiles(replayFilesFolder, "*.replay");

            var  sw     = new Stopwatch();
            var  reader = new ReplayReader(logger, ParseMode.Full);
            long total  = 0;

            foreach (var replayFile in replayFiles)
            {
                sw.Restart();
                try
                {
                    var replay = reader.ReadReplay(replayFile);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                sw.Stop();
                Console.WriteLine($"---- {replayFile} : done in {sw.ElapsedMilliseconds} milliseconds ----");
                total += sw.ElapsedMilliseconds;
            }
            Console.WriteLine($"total: {total / 1000} seconds ----");

            //var replayFile = "Replays/shootergame.replay";
            //var replayFile = "Replays/season6.10.replay";
            //var replayFile = "Replays/season11.11.replay";
            //var replayFile = "Replays/season11.31.replay";
            //var replayFile = "Replays/season11.replay";
            //var replayFile = "Replays/season12.replay";
            //var replayFile = "Replays/collectPickup.replay";

            //var sw = new Stopwatch();
            //sw.Start();
            //var reader = new ReplayReader(logger, ParseMode.Debug);
            //var replay = reader.ReadReplay(replayFile);
            //sw.Stop();

            //Console.WriteLine($"---- done in {(sw.ElapsedMilliseconds / 1000)} seconds ----");
            Console.ReadLine();
        }
Exemplo n.º 3
0
        private void WatcherOnChanged(object sender, FileSystemEventArgs e)
        {
            _logger.LogInformation("Starting Process @ {time}", DateTimeOffset.Now);
            var replay      = _reader.ReadReplay(e.FullPath);
            var newFileName = _config.GetActualFileName(replay);

            if (_config.MoveToThisFolder == string.Empty || !Directory.Exists(_config.MoveToThisFolder))
            {
                File.Move(e.FullPath, e.FullPath.Replace("autosave", newFileName));
            }
            else
            {
                File.Move(e.FullPath, _config.MoveToThisFolder + @$ "\{newFileName}.pmv");
Exemplo n.º 4
0
        public static void Main(string[] args)
        {
            var replayPath = args[0];
            var reader     = new ReplayReader();
            var replay     = reader.ReadReplay(replayPath);
            var players    = new List <PlayerData>();

            foreach (PlayerData playerData in replay.PlayerData)
            {
                if (!String.IsNullOrEmpty(playerData.PlayerId))
                {
                    players.Add(playerData);
                }
            }
            var data = new { players = players, killfeed = replay.Eliminations };

            Console.Write(JsonSerializer.Serialize(data));
        }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection()
                                    .AddLogging(loggingBuilder => loggingBuilder
                                                .AddConsole()
                                                .SetMinimumLevel(LogLevel.Warning));
            var provider = serviceCollection.BuildServiceProvider();
            var logger   = provider.GetService <ILogger <Program> >();

            //var localAppDataFolder = GetFolderPath(SpecialFolder.LocalApplicationData);
            ////var replayFilesFolder = Path.Combine(localAppDataFolder, @"FortniteGame\Saved\Demos");
            //var replayFilesFolder = @"D:\Projects\FortniteReplayCollection";
            //var replayFiles = Directory.EnumerateFiles(replayFilesFolder, "*.replay");

            //foreach (var replayFile in replayFiles)
            //{
            //    var reader = new ReplayReader(logger);
            //    var replay = reader.ReadReplay(replayFile);
            //}

            //var replayFile = "Replays/shootergame.replay";
            //var replayFile = "Replays/season6.10.replay";
            var replayFile = "Replays/season11.11.replay";
            //var replayFile = "Replays/season11.31.replay";
            //var replayFile = "Replays/season11.replay";
            //var replayFile = "Replays/season12.replay";
            //var replayFile = "Replays/collectPickup.replay";

            var sw = new Stopwatch();

            sw.Start();
            var reader = new ReplayReader(logger, Unreal.Core.Models.Enums.ParseMode.Debug);
            var replay = reader.ReadReplay(replayFile);

            sw.Stop();

            Console.WriteLine($"---- done in {(sw.ElapsedMilliseconds / 1000)} seconds ----");
            Console.ReadLine();
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection()
                                    .AddLogging(loggingBuilder => loggingBuilder
                                                .AddConsole()
                                                .SetMinimumLevel(LogLevel.Warning));
            var provider = serviceCollection.BuildServiceProvider();
            var logger   = provider.GetService <ILogger <Program> >();

            //var localAppDataFolder = GetFolderPath(SpecialFolder.LocalApplicationData);
            ////var replayFilesFolder = Path.Combine(localAppDataFolder, @"FortniteGame\Saved\Demos");
            //var replayFilesFolder = @"D:\Projects\FortniteReplayCollection";
            //var replayFiles = Directory.EnumerateFiles(replayFilesFolder, "*.replay");

            //foreach (var replayFile in replayFiles)
            //{
            //    var reader = new ReplayReader(logger);
            //    var replay = reader.ReadReplay(replayFile);
            //}

            //var replayFile = "Replays/shootergame.replay";
            var replayFile = "Replays/season6.10.replay";
            //var replayFile = "Replays/season11.11.replay";
            //var replayFile = "Replays/season11.replay";
            //var replayFile = "Replays/UnsavedReplay-2018.10.06-22.00.32.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.04.05-20.22.58.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.05.03-21.24.46.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.05.22-16.58.41.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.06.30-20.39.37.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.09.12-21.39.37.replay";
            //var replayFile = "Replays/00769AB3D5F45A5ED7B01553227A8A82E07CC592.replay";

            var reader = new ReplayReader(logger);
            var replay = reader.ReadReplay(replayFile);

            Console.WriteLine("---- done ----");
            Console.ReadLine();
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            var reader = new ReplayReader();
            var file   = args[0];
            var replay = reader.ReadReplay(file, ParseType.Full);

            file = file.Split("/")[file.Split("/").Length - 1];
            file = file.Split("\\")[file.Split("\\").Length - 1];
            int     real = 0, totalPlayers = 0, team = -1;
            string  owner = "", session = replay.GameInformation.GameState.SessionId, timeStart = replay.Info.Timestamp.ToString();
            JObject playerList = new JObject();
            JArray  players    = new JArray();
            JArray  killFeed   = new JArray();
            JObject stats      = new JObject();
            JArray  placements = new JArray();

            /* Real Player & Player List Processing */
            foreach (var player in replay.GameInformation.Players)
            {
                if (player.Teamindex > 2)
                {
                    totalPlayers++;
                }
                if (player.IsPlayersReplay)
                {
                    owner = player.EpicId.ToLower();
                    team  = player.Teamindex - 2;
                }
                else if (!player.IsBot && player.EpicId != null)
                {
                    JArray t = new JArray();
                    t.Add(player.Teamindex - 2);
                    t.Add(player.EpicId.ToLower());
                    t.Add(player.Platform);
                    players.Add(t);
                    real++;
                }
            }

            /* Kill Feed Processing */
            string killer, killed;

            foreach (var kill in replay.GameInformation.KillFeed)
            {
                if (kill.FinisherOrDowner != null && kill.Player != null && (kill.CurrentPlayerState == PlayerState.Killed || kill.CurrentPlayerState == PlayerState.Knocked || kill.CurrentPlayerState == PlayerState.BleedOut || kill.CurrentPlayerState == PlayerState.FinallyEliminated))
                {
                    JArray t = new JArray();
                    if (kill.FinisherOrDowner.Teamindex <= 2)
                    {
                        killer = "NPC";
                    }
                    else
                    {
                        killer = kill.FinisherOrDowner.IsBot ? "BOT" : kill.FinisherOrDowner.EpicId == null ? "bad id" : kill.FinisherOrDowner.EpicId.ToLower();
                    }
                    if (kill.Player.Teamindex <= 2)
                    {
                        killed = "NPC";
                    }
                    else
                    {
                        killed = kill.Player.IsBot ? "BOT" : kill.Player.EpicId.ToLower();
                    }
                    t.Add(killer);
                    t.Add(killed);
                    t.Add(UpdateDeathTag(kill.DeathTags));
                    t.Add(kill.CurrentPlayerState == PlayerState.Knocked);
                    t.Add(TimeofDeath(kill.DeltaGameTimeSeconds));
                    t.Add(kill.DeathTags);
                    if (!(killer == "NPC" && killed == "NPC"))
                    {
                        killFeed.Add(t);
                    }
                }
            }

            /* Stats Processing */
            try {
                stats["kills"]    = replay.Stats.Eliminations;
                stats["assists"]  = replay.Stats.Assists;
                stats["accuracy"] = replay.Stats.Accuracy * 100;
                stats["dealt"]    = replay.Stats.DamageToPlayers;
                stats["taken"]    = replay.Stats.DamageTaken;
                stats["distance"] = replay.Stats.TotalTraveled;
            } catch (System.NullReferenceException) {             // fails in creative modes at times? no idea why
                stats["kills"]    = "N/A";
                stats["assists"]  = "N/A";
                stats["accuracy"] = "N/A";
                stats["dealt"]    = "N/A";
                stats["taken"]    = "N/A";
                stats["distance"] = "N/A";
            }

            /* Placements Processing */
            List <string> pList = new List <string>();

            foreach (var p in replay.GameInformation.Players)
            {
                if (p.Teamindex > 2 && !StringContains(pList, p.Teamindex.ToString()))
                {
                    pList.Add(p.Teamindex.ToString());
                    JObject t = new JObject();
                    t["team"]      = p.Teamindex - 2;
                    t["placement"] = p.Placement;
                    t["members"]   = p.IsBot ? "BOT" : p.EpicId.ToLower();
                    t["kills"]     = p.TeamKills;
                    placements.Add(t);
                }
                else if (p.Teamindex > 2)                   // adding a team member
                {
                    foreach (var t in placements)
                    {
                        if (t["team"].ToString() == (p.Teamindex - 2).ToString())
                        {
                            t["members"] += "," + (p.IsBot ? "BOT" : p.EpicId.ToLower());
                            if ((int)t["placement"] > p.Placement)
                            {
                                t["placement"] = p.Placement;                                                                // best player of that team takes rank, otherwise this doesn't look right in things like squad fills where someone leaves early and teammates have different placements
                            }
                            break;
                        }
                    }
                }
            }

            playerList["owner"]        = owner;
            playerList["team"]         = team;
            playerList["file"]         = file;
            playerList["session"]      = session;
            playerList["time"]         = timeStart;
            playerList["totalPlayers"] = totalPlayers;
            playerList["players"]      = players;
            playerList["killfeed"]     = killFeed;
            playerList["stats"]        = stats;
            playerList["placements"]   = placements;

            using (StreamWriter path = File.CreateText(@"playerList.json"))
                using (JsonTextWriter writer = new JsonTextWriter(path)) playerList.WriteTo(writer);
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection()
                                    .AddLogging(loggingBuilder => loggingBuilder
                                                .AddConsole()
                                                .SetMinimumLevel(LogLevel.Warning));
            var provider = serviceCollection.BuildServiceProvider();
            var logger   = provider.GetService <ILogger <Program> >();

            //var localAppDataFolder = GetFolderPath(SpecialFolder.LocalApplicationData);
            ////var replayFilesFolder = Path.Combine(localAppDataFolder, @"FortniteGame\Saved\Demos");
            //var replayFilesFolder = @"D:\Projects\FortniteReplayCollection";
            //var replayFiles = Directory.EnumerateFiles(replayFilesFolder, "*.replay");

            //foreach (var replayFile in replayFiles)
            //{
            //    var reader = new ReplayReader(logger);
            //    var replay = reader.ReadReplay(replayFile);
            //}

            //var replayFile = "Replays/season12_arena.replay";
            //var replayFile = "Replays/season11.31.replay
            var replayFile = "Replays/broken.replay"; //Used for testing
            //var replayFile = @"C:\Users\TnT\Source\Repos\FortniteReplayDecompressor_Shiqan\src\ConsoleReader\bin\Release\netcoreapp3.1\Replays\collectPickup.replay";

            //var replayFile = "Replays/season11.11.replay"; //Used for testing
            //var replayFile = "Replays/Test.replay"; //Used for testing
            //var replayFile = "Replays/shoottest.replay";
            //var replayFile = "Replays/tournament2.replay";
            //var replayFile = "Replays/creative-season11.21.replay";
            //var replayFile = "Replays/creative.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.12.11-02.43.14.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.12.10-17.47.46.replay";
            //var replayFile = "Replays/UnsavedReplay-2019.12.11-01.49.22.replay";
            //var replayFile = "Replays/123.replay";
            //var replayFile = "Replays/WCReplay.replay";
            //var replayFile = "Replays/00769AB3D5F45A5ED7B01553227A8A82E07CC592.replay";
            //var replayFile = "Replays/season12_arena.replay";
            //var replayFile = "Replays/1.replay";
            //var replayFile = "Replays/weapons2.replay";
            //var replayFile = "Replays/iceblocks2.replay";
            //var replayFile = "Replays/creativeShooting.replay";

            Stopwatch sw = new Stopwatch();

            double totalTime = 0;

            string appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            int    count   = 0;

            List <double> times = new List <double>();

            var reader = new ReplayReader(null, new FortniteReplaySettings
            {
                PlayerLocationType = LocationTypes.None,
            });

            string demoPath = Path.Combine(appData, "FortniteGame", "Saved", "Demos");

            foreach (string path in Directory.GetFiles(@"C:\Users\TnT\Source\Repos\FortniteReplayDecompressor_Shiqan\src\ConsoleReader\bin\Release\netcoreapp3.1\Replays"))
            {
                Console.WriteLine(path);

                for (int i = 0; i < 2; i++)
                {
                    ++count;

                    sw.Restart();
                    var replay = reader.ReadReplay(replayFile, ParseType.Full);

                    sw.Stop();

                    var b = replay.GameInformation.Players.OrderBy(x => x.Placement);

                    Console.WriteLine($"Elapsed: {sw.ElapsedMilliseconds}ms. Total Groups Read: {reader?.TotalGroupsRead}. Failed Bunches: {reader?.TotalFailedBunches}. Failed Replicator: {reader?.TotalFailedReplicatorReceives} Null Exports: {reader?.NullHandles} Property Errors: {reader?.PropertyError} Failed Property Reads: {reader?.FailedToRead}");

                    totalTime += sw.Elapsed.TotalMilliseconds;
                    times.Add(sw.Elapsed.TotalMilliseconds);
                }

                Console.WriteLine();
            }

            var fastest5 = times.OrderBy(x => x).Take(10);



            Console.WriteLine($"Total Time: {totalTime}ms. Average: {((double)totalTime / count):0.00}ms");
            Console.WriteLine($"Fastest 10 Time: {fastest5.Sum()}ms. Average: {(fastest5.Sum() / fastest5.Count()):0.00}ms");

            Console.WriteLine("---- done ----");
            //Console.WriteLine($"Total Errors: {reader?.TotalErrors}");
            Console.ReadLine();
        }
Exemplo n.º 9
0
        public ReplayData SingleScan(FileInfo file, int lines)
        {
            if (file != null)
            {
                if (file.Exists)
                {
                    ReplayData    replay    = new ReplayData();
                    DataCollector collector = new DataCollector();

                    replay.Path     = file.DirectoryName;
                    replay.Name     = file.Name;
                    replay.FullPath = file.FullName;
                    replay.Size     = Convert.ToInt32(file.Length / 1024);
                    string text = String.Empty;
                    if (lines > 0)
                    {
                        text = ReplayReader.ReadReplay(replay.FullPath, lines);
                    }
                    else
                    {
                        text = ReplayReader.ReadReplay(replay.FullPath);
                    }

                    if (String.IsNullOrEmpty(text))
                    {
                        return(replay);
                    }
                    bool isValidReplay = collector.GetReplayStatus(text);

                    replay.DateTime   = collector.DateTime(text);
                    replay.Map        = collector.GetMapName(text);
                    replay.Player     = collector.GetPlayerName(text);
                    replay.GamePlayId = collector.GetGamePlay(text);
                    replay.Respawn    = collector.Respawn(text);
                    replay.Players    = collector.Players(text);
                    replay.Status     = isValidReplay;
                    replay.Vehicle    = collector.PlayerVehicle(text);
                    replay.Version    = collector.Version(text);
                    replay.BattleType = collector.BattleType(text);
                    replay.HasMods    = collector.HasMods(text);
                    replay.RegionCode = collector.RegionCode(text);
                    replay.ServerName = collector.ServerName(text);
                    replay.PlayerId   = collector.PlayerId(text);

                    if (isValidReplay)
                    {
                        replay.Duration = collector.BattleDuration(text);
                        replay.Winner   = collector.Winner(text);
                        replay.Status   = collector.GetReplayStatus(text);
                    }
                    else
                    {
                        _broken++;
                    }

                    return(replay);
                }
            }

            return(null);
        }
Exemplo n.º 10
0
        static void Main(string[] args)
        {
            var  serviceCollection = new ServiceCollection().AddLogging(loggingBuilder => loggingBuilder.AddConsole().SetMinimumLevel(LogLevel.Error));
            var  provider          = serviceCollection.BuildServiceProvider();
            var  logger            = provider.GetService <ILogger <Program> >();
            var  desktopFolder     = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            var  replayFilesFolder = Path.Combine(desktopFolder, @"Replays");
            var  replayFiles       = Directory.EnumerateFiles(replayFilesFolder, "*.replay");
            var  sw     = new Stopwatch();
            var  reader = new ReplayReader(logger, ParseMode.Full);
            long total  = 0;

            foreach (var replayFile in replayFiles)
            {
                var count_player = 0;
                var count_bot    = 0;
                var pPSN         = 0;
                var pXBL         = 0;
                var pWIN         = 0;
                var pSWT         = 0;
                var pIOS         = 0;
                var pMAC         = 0;
                var pAND         = 0;
                var pMISC        = 0;
                sw.Restart();
                try
                {
                    var replay = reader.ReadReplay(replayFile);
                    foreach (var playerData in replay.PlayerData)
                    {
                        if (playerData.EpicId is not null)
                        {
                            count_player++;
                            var playerFeedStuff = $"EpicId: {playerData.EpicId.ToString().ToLower()}, IsBot?: {playerData.IsBot}, Placement #: {playerData.Placement}, Platform: {playerData.Platform}, SeasonLevel: {playerData.SeasonLevelUIDisplay}, PlayerNumber: {playerData.PlayerNumber}, TeamIndex: {playerData.TeamIndex}, TeamKills: {playerData.TeamKills}, IsThePartyLeader?: {playerData.IsPartyLeader}, HasThankedBusDriver?!: {playerData.HasThankedBusDriver}, IsUsingStreamerMode?: {playerData.IsUsingStreamerMode},  IsUsingAnonymousMode?: {playerData.IsUsingAnonymousMode}, DC'ed?: {playerData.Disconnected}, PlayerKills: {playerData.Kills}, Death Time: {playerData.DeathTime}, Reboot Counter: {playerData.RebootCounter}, CurrentWeapon (code): {playerData.CurrentWeapon}";
                            Console.WriteLine(playerFeedStuff.Pastel(Color.FromArgb(255, 165, 0)));
                            Console.WriteLine($" ");
                            Console.WriteLine($"--------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
                            var playerDataCosmetics = $"PlayerContrail: {playerData.Cosmetics.SkyDiveContrail}, Pickaxe: {playerData.Cosmetics.Pickaxe}, PlayerCharacter: {playerData.Cosmetics.Character}, Parts: {playerData.Cosmetics.Parts}, Glider: {playerData.Cosmetics.Glider}";
                            Console.WriteLine(playerDataCosmetics.Pastel(Color.FromArgb(255, 165, 0)));
                            switch (playerData.Platform)
                            {
                            case "PSN":
                                pPSN++;
                                break;

                            case "XBL":
                                pXBL++;
                                break;

                            case "WIN":
                                pWIN++;
                                break;

                            case "SWT":
                                pSWT++;
                                break;

                            case "IOS":
                                pIOS++;
                                break;

                            case "MAC":
                                pMAC++;
                                break;

                            case "AND":
                                pAND++;
                                break;

                            default:
                                pMISC++;
                                break;
                            }
                        }

                        if (playerData.BotId is not null)
                        {
                            count_bot++;
                        }
                    }

                    foreach (var c**t in replay.KillFeed)
                    {
                        if (c**t.PlayerName is not null && c**t.FinisherOrDownerName is not null)
                        {
                            var pName             = c**t?.PlayerName.ToLower();
                            var whoKilled         = c**t?.FinisherOrDownerName.ToLower();
                            var killFeedStuffCunt = $"Player: {pName}, IsBot: {c**t.PlayerIsBot}, IsDowned: {c**t.IsDowned}, DeathType (Code): {c**t.DeathCause}, DeathLocation: [{c**t.DeathLocation}], WhoKilled?: {whoKilled}, WasFinisherOrDownerAFknBot?: {c**t.FinisherOrDownerIsBot}, TimeAlive: {c**t.ReplicatedWorldTimeSeconds}, Was Revived?: {c**t.IsRevived}";
                            Console.WriteLine($" ");
                            Console.WriteLine(killFeedStuffCunt.Pastel(Color.FromArgb(219, 112, 147)));
                        }
                    }

                    /* Start game data stuff */

                    Console.WriteLine($" ");
                    var gameDataStuff = $" MapInfo: {replay.GameData.MapInfo}, TotalBots: {replay.GameData.TotalBots}, TotalTeams: {replay.GameData.TotalTeams}, WinningTeamID: {replay.GameData.WinningTeam}, TotalPlayerStructures: {replay.GameData.TotalPlayerStructures}, SafeZoneStartTime: {replay.GameData.SafeZonesStartTime}, MatchEndTime: {replay.GameData.MatchEndTime}";
                    Console.WriteLine(gameDataStuff.Pastel(Color.FromArgb(175, 238, 238)));
                    Console.WriteLine($" ");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }

                string totalCumulativePlayerPlatform = $"PSN: {pPSN}, XBL: {pXBL}, WIN: {pWIN}, SWT: {pSWT}, IOS: {pIOS}, MAC: {pMAC}, AND: {pAND}, MISC: {pMISC}";
                string totalCumulativePlayer         = $"Humans: {count_player}, Bots: {count_bot}";
                Console.WriteLine(totalCumulativePlayer.Pastel(Color.FromArgb(0, 250, 154)));
                Console.WriteLine(totalCumulativePlayerPlatform.Pastel(Color.FromArgb(0, 255, 127)));
                Console.WriteLine($"========================================================================================================".Pastel(Color.FromArgb(124, 252, 0)));
                sw.Stop();
                Console.WriteLine($"TotalProgramRuntime: {total / 1000} seconds ----".Pastel(Color.FromArgb(75, 0, 130)));
                Console.WriteLine($"---- {replayFile} : done in {sw.ElapsedMilliseconds} milliseconds ----".Pastel(Color.FromArgb(75, 0, 130)));
                total += sw.ElapsedMilliseconds;
            }

            Console.WriteLine($"TOTALS: {total / 1000} seconds ----".Pastel(Color.FromArgb(255, 68, 0)));

            /* Leave these lines for debug
             * Console.WriteLine($"TOTAL FROM ALL REPLAY FILES ----  Humans: {count_player}, Bots: {count_bot}");
             * Console.WriteLine($"TOTAL FOR ALL REPLAY FILES ---- PSN: {pPSN}, XBL: {pXBL}, WIN: {pWIN}, SWT: {pSWT}, IOS: {pIOS}, MAC: {pMAC}, AND: {pAND}, MISC: {pMISC}");
             */
            Console.WriteLine($"========================================================================================================".Pastel(Color.FromArgb(124, 252, 0)));
            Console.WriteLine($"DONE - press any key to end. VERSION: 1601697301".Pastel(Color.FromArgb(255, 68, 0)));
            Console.ReadLine();
        }