Getting started with implementing an explicit AI, based on the Essentials one.
All checks were successful
Build / Build (push) Successful in 1m2s
All checks were successful
Build / Build (push) Successful in 1m2s
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
using System.CommandLine.Parsing;
|
||||
using System.Reflection;
|
||||
using PkmnLib.Dynamic.AI;
|
||||
using PkmnLib.Dynamic.Libraries;
|
||||
using PkmnLib.Plugin.Gen7;
|
||||
using Serilog;
|
||||
|
||||
namespace AIRunner;
|
||||
@@ -14,9 +16,11 @@ internal static class Program
|
||||
{
|
||||
Log.Logger = new LoggerConfiguration().MinimumLevel.Information().WriteTo.Console().CreateLogger();
|
||||
Log.Information("Starting AI Runner...");
|
||||
_availableAIs = AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes())
|
||||
.Where(type => type.IsSubclassOf(typeof(PokemonAI)) && !type.IsAbstract).Select(Activator.CreateInstance)
|
||||
.Cast<PokemonAI>().ToList();
|
||||
AILogging.LogHandler = Log.Debug;
|
||||
var library = DynamicLibraryImpl.Create([
|
||||
new Gen7Plugin(),
|
||||
]);
|
||||
_availableAIs = PokemonAI.InstantiateAis(library);
|
||||
|
||||
var testCommand = new Command("test", "Run two AIs against each other")
|
||||
{
|
||||
@@ -58,7 +62,7 @@ internal static class Program
|
||||
var ai2 = _availableAIs!.First(a =>
|
||||
string.Equals(a.Name, ai2Name, StringComparison.InvariantCultureIgnoreCase));
|
||||
|
||||
return TestCommandRunner.RunTestCommand(ai1, ai2, result.GetRequiredValue<int>("--battles"));
|
||||
return TestCommandRunner.RunTestCommand(library, ai1, ai2, result.GetRequiredValue<int>("--battles"));
|
||||
});
|
||||
|
||||
var rootCommand = new RootCommand("PkmnLib.NET AI Runner")
|
||||
|
||||
@@ -13,12 +13,9 @@ namespace AIRunner;
|
||||
|
||||
public static class TestCommandRunner
|
||||
{
|
||||
internal static async Task RunTestCommand(PokemonAI ai1, PokemonAI ai2, int battles)
|
||||
internal static async Task RunTestCommand(IDynamicLibrary library, PokemonAI ai1, PokemonAI ai2, int battles)
|
||||
{
|
||||
var t1 = DateTime.UtcNow;
|
||||
var library = DynamicLibraryImpl.Create([
|
||||
new Gen7Plugin(),
|
||||
]);
|
||||
const int maxTasks = 10;
|
||||
|
||||
Log.Information("Running {Battles} battles between {AI1} and {AI2}", battles, ai1.Name, ai2.Name);
|
||||
|
||||
Reference in New Issue
Block a user