Lots more work on implementing battling

This commit is contained in:
2024-08-10 09:44:46 +02:00
parent 554e1cf2cd
commit a049dda240
29 changed files with 1226 additions and 48 deletions

View File

@@ -1,3 +1,4 @@
using PkmnLib.Dynamic.ScriptHandling;
using PkmnLib.Dynamic.ScriptHandling.Registry;
using PkmnLib.Static.Libraries;
@@ -30,6 +31,11 @@ public interface IDynamicLibrary
/// calculators.
/// </summary>
IMiscLibrary MiscLibrary { get; }
/// <summary>
/// A holder of the script types that can be resolved by this library.
/// </summary>
ScriptResolver ScriptResolver { get; }
}
/// <inheritdoc />
@@ -52,17 +58,19 @@ public class DynamicLibraryImpl : IDynamicLibrary
throw new InvalidOperationException("Stat calculator not found in plugins.");
if (registry.MiscLibrary is null)
throw new InvalidOperationException("Misc library not found in plugins.");
var scriptResolver = new ScriptResolver(registry.ScriptTypes);
return new DynamicLibraryImpl(staticLibrary, registry.BattleStatCalculator,
registry.DamageCalculator, registry.MiscLibrary);
registry.DamageCalculator, registry.MiscLibrary, scriptResolver);
}
private DynamicLibraryImpl(IStaticLibrary staticLibrary, IBattleStatCalculator statCalculator,
IDamageCalculator damageCalculator, IMiscLibrary miscLibrary)
IDamageCalculator damageCalculator, IMiscLibrary miscLibrary, ScriptResolver scriptResolver)
{
StaticLibrary = staticLibrary;
StatCalculator = statCalculator;
DamageCalculator = damageCalculator;
MiscLibrary = miscLibrary;
ScriptResolver = scriptResolver;
}
/// <inheritdoc />
@@ -76,4 +84,7 @@ public class DynamicLibraryImpl : IDynamicLibrary
/// <inheritdoc />
public IMiscLibrary MiscLibrary { get; }
/// <inheritdoc />
public ScriptResolver ScriptResolver { get; }
}