211 lines
6.2 KiB
C#
211 lines
6.2 KiB
C#
using SoulstormReplayReader.Core;
|
|
|
|
string[] filePaths =
|
|
{
|
|
// @"TestReplays\replay_6p_2v2v2_001.rec",
|
|
// @"TestReplays\gens_builds\ork_many_researches.rec",
|
|
// @"TestReplays\lag\lag3.rec",
|
|
// "TestReplays/buildTest/ork_all_things.rec",
|
|
// "TestReplays/buildTest/eldar_all_things.rec",
|
|
// "TestReplays/buildTest/necr_all_things.rec",
|
|
// "TestReplays/buildTest/sisters_all_things.rec",
|
|
// "TestReplays/buildTest/eldar_aspect.rec",
|
|
// "TestReplays\\Unfair\\Cheats\\deletedArmy_4.rec",
|
|
// "TestReplays\\Tests\\steam_skip_data_test_1.rec",
|
|
// "TestReplays\\Tests\\some_error.rec",
|
|
// "TestReplays\\790059-W-DE-L-CSM.rec"
|
|
"TestReplays\\4p_withBots.rec",
|
|
// "TestReplays\\unification_anon_2_races.rec"
|
|
// "TestReplays\\Unfair\\Bugs\\SoB_2commanders_1squad.rec",
|
|
// @"TestReplays\Unfair\Cheats\eresArchitect_delet.rec",
|
|
// @"TestReplays\Broken\#860994_empty_name.rec",
|
|
// "TestReplays\\Unfair\\Cheats\\mono_in_1_min.rec",
|
|
// @"TestReplays\old\BM.rec"
|
|
// "TestReplays\\Unfair\\Bugs\\necr_action_110.rec",
|
|
};
|
|
string[] dirPaths =
|
|
{
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Many",
|
|
// "TestReplays\\Long",
|
|
// "TestReplays\\Tests",
|
|
// "TestReplays\\Broken",
|
|
// "TestReplays\\gens_builds",
|
|
// "TestReplays\\Unfair\\Cheats",
|
|
// "TestReplays\\Unfair\\Bugs",
|
|
};
|
|
|
|
var replayPaths = filePaths.Concat(dirPaths.SelectMany(Directory.EnumerateFiles)).ToArray().AsSpan(); // .Select(path => "..\\..\\..\\" + path)
|
|
|
|
foreach (var replayPath in replayPaths)
|
|
{
|
|
var stream = new MemoryStream(File.ReadAllBytes(replayPath), false); // 8192
|
|
|
|
// #if DEBUGLOGGING
|
|
// Console.WriteLine(replayPath);
|
|
// #endif
|
|
|
|
using var replayReader = new SsReplayReader(stream)
|
|
{
|
|
CheckForBugs = true,
|
|
SkipImages = true
|
|
};
|
|
var replay = replayReader.ReadFull();
|
|
|
|
Console.WriteLine(string.Join(' ', replay.WinConditions));
|
|
|
|
// #if DEBUGLOGGING
|
|
// Console.WriteLine(replay.TotalTicks);
|
|
// Console.WriteLine(replay.Actions?.GroupBy(x => x.Tick).Count());
|
|
// #endif
|
|
|
|
// foreach (var player in replay.Players.Where(player => player.BugChecker != null))
|
|
// {
|
|
// if (player.BugChecker.HasAccusations())
|
|
// {
|
|
// Console.WriteLine($"\n{filePath}");
|
|
// Console.WriteLine($"{player.Name} [{player.Race}]:\n {player.BugChecker.GetAccusationsList()}");
|
|
// }
|
|
// }
|
|
}
|
|
|
|
|
|
// Console.WriteLine(@$"
|
|
// ---------GAME SETTINGS---------
|
|
// world seed: {replay.WorldSeed}
|
|
// ai diff: {replay.GameSettings.AiDifficulty}
|
|
// start res: {replay.GameSettings.StartResources}
|
|
// lock teams: {replay.GameSettings.LockTeams}
|
|
// cheats on: {replay.GameSettings.CheatsOn}
|
|
// start location: {replay.GameSettings.StartingLocation}
|
|
// game speed: {replay.GameSettings.GameSpeed}
|
|
// res sharing: {replay.GameSettings.ResourceSharing}
|
|
// res rate: {replay.GameSettings.ResourceRate}
|
|
// glob: {replay.ConditionsString}
|
|
// ");
|
|
// }
|
|
|
|
// foreach (var cmd in replayReader.Actions)
|
|
// {
|
|
// actions.Add(cmd);
|
|
// }
|
|
// foreach (var action in replay.Actions)
|
|
// {
|
|
// var player = replay.Players[action.PlayerId];
|
|
// if (player.ResolvedRace == RaceEnum.Necrons)
|
|
// {
|
|
//
|
|
// }
|
|
// }
|
|
// TO WATCH
|
|
// #351207-W-ORK-L-NEC.rec
|
|
// #351190-W-ORK-L-NEC.rec
|
|
// #274008.rec
|
|
|
|
// foreach (var cmd in actions.OrderBy(a => a))
|
|
// {
|
|
// Console.Write($"{cmd} ");
|
|
// }
|
|
|
|
// foreach (var cmd in actions.OrderBy(a => a.Key).GroupBy(a => a.Key))
|
|
// {
|
|
// foreach (var a in cmd.DistinctBy(a => a.Value.Value).OrderBy(a => a.Value.Value))
|
|
// {
|
|
// Console.WriteLine($"{a.Key} {a.Value.Key} {a.Value.Value}");
|
|
// }
|
|
// }
|
|
|
|
// var emptyAction = new EmptyAction();
|
|
// IGameAction action = emptyAction;
|
|
// Console.WriteLine(0 == null);
|
|
|
|
// var inStream = new BufferedStream(File.OpenRead(@"TestReplays/gameTest/12_actions.rec"), 65536);
|
|
// var outStream = new BufferedStream(File.OpenWrite(@"TestReplays/gameTest/12_actions_renamed.rec"), 65536);
|
|
// ReplayService.Rename(inStream, outStream, "12 acutiomos").Wait();
|
|
|
|
/* primary commands:
|
|
117 - build building
|
|
2 - destroy building
|
|
*/
|
|
|
|
//1 1 e8 3 0 0 2 6 66 c3 0 0 0 54 1 61 0 1c 2
|
|
//1 1 e8 3 0 0 2 6 64 c3 0 0 0 bc fd a0 0 2c 1
|
|
|
|
|
|
/*
|
|
---------GAME SETTINGS---------
|
|
ai diff: 1
|
|
start res: 0
|
|
lock teams: 1
|
|
cheats on: 0
|
|
start location: 2
|
|
game speed: 0
|
|
res sharing: 2
|
|
res rate: 0
|
|
*/
|
|
|
|
// foreach (var kv in replayReader.ComPairs)
|
|
// {
|
|
// commands.Add(kv);
|
|
// }
|
|
|
|
|
|
// Console.WriteLine(@$".
|
|
// ------------GENERAL------------
|
|
// name: {replay.IngameName}
|
|
// mod: {replay.ModName}
|
|
// version: {replay.Version}
|
|
// engine: {replay.EngineName}
|
|
// engine addon: {replay.EngineAddon}
|
|
// active players: {replay.ActivePlayersCount}
|
|
// teams: {replay.TeamsCount}
|
|
// total ticks: {replay.TotalTicks}
|
|
// .
|
|
// --------------LAG--------------
|
|
// lag chunks: {replay.StreamInfo.LagChunks}
|
|
// .
|
|
// --------------MAP--------------
|
|
// map name: {replay.Map.Name}
|
|
// map size: {replay.Map.Size}
|
|
// ");
|
|
//
|
|
//
|
|
// foreach (var msg in replay.ChatMessages)
|
|
// {
|
|
// Console.WriteLine(msg.ToString());
|
|
// }
|
|
// }
|
|
|
|
// Console.WriteLine(@$"
|
|
// ---------GAME SETTINGS---------
|
|
// ai diff: {replay.GameSettings.AiDifficulty}
|
|
// start res: {replay.GameSettings.StartResources}
|
|
// lock teams: {replay.GameSettings.LockTeams}
|
|
// cheats on: {replay.GameSettings.CheatsOn}
|
|
// start location: {replay.GameSettings.StartingLocation}
|
|
// game speed: {replay.GameSettings.GameSpeed}
|
|
// res sharing: {replay.GameSettings.ResourceSharing}
|
|
// res rate: {replay.GameSettings.ResourceRate}
|
|
// ");
|
|
//
|