2020-07-19 10:33:22 +00:00
|
|
|
using System.Linq;
|
2020-12-23 11:27:58 +00:00
|
|
|
using NUnit.Framework;
|
2020-07-19 10:33:22 +00:00
|
|
|
using PkmnLibSharp.Battling;
|
|
|
|
using PkmnLibSharp.Library;
|
|
|
|
using PkmnLibSharp.Library.GrowthRates;
|
|
|
|
using PkmnLibSharp.Library.Items;
|
|
|
|
using PkmnLibSharp.Library.Moves;
|
|
|
|
|
|
|
|
namespace PkmnLibSharpTests.Battling
|
|
|
|
{
|
|
|
|
public static class BattleLibraryHelper
|
|
|
|
{
|
|
|
|
private static BattleLibrary _cache;
|
2020-12-23 11:27:58 +00:00
|
|
|
private static readonly object Lock = new object();
|
2020-07-19 10:33:22 +00:00
|
|
|
|
|
|
|
public static BattleLibrary GetLibrary()
|
|
|
|
{
|
2020-12-23 11:27:58 +00:00
|
|
|
lock (Lock)
|
|
|
|
{
|
|
|
|
if (_cache != null)
|
|
|
|
return _cache;
|
|
|
|
|
|
|
|
TestContext.WriteLine("Building battle library");
|
|
|
|
var scriptLibrary = new AngelScriptResolver();
|
|
|
|
_cache = new BattleLibrary(BuildStatic(), new StatCalculator(), new DamageLibrary(),
|
|
|
|
new ExperienceLibrary(),
|
|
|
|
scriptLibrary, new MiscLibrary());
|
|
|
|
scriptLibrary.Initialize(_cache);
|
|
|
|
return _cache;
|
|
|
|
}
|
2020-07-19 10:33:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private static PokemonLibrary BuildStatic()
|
|
|
|
{
|
|
|
|
var settings = new LibrarySettings(100, 4, 4096);
|
|
|
|
var species = new SpeciesLibrary(10);
|
2020-08-08 11:57:54 +00:00
|
|
|
species.Insert("testSpecies", new Species(1, "testSpecies",
|
|
|
|
new Forme("default", 10f, 10f, 100, new byte[] {0, 1}, 100,
|
2020-07-19 10:33:22 +00:00
|
|
|
100, 100, 100, 100, 100, new[] {"testAbility", "testAbility2"},
|
2020-08-10 17:13:17 +00:00
|
|
|
new[] {"testHiddenAbility"}, new LearnableMoves(100), new string[0]), 0.5f, "growthRate",
|
|
|
|
20, 100, new[]{"testEggGroup"}, new string[0]));
|
2020-07-19 10:33:22 +00:00
|
|
|
|
2020-08-08 11:57:54 +00:00
|
|
|
var moves = new MoveLibrary(10);
|
|
|
|
moves.Insert("testMove", new MoveData("testMove", 0, MoveCategory.Physical, 100,
|
2020-07-25 10:52:18 +00:00
|
|
|
100, 20, MoveTarget.Any, 0, 0f, "",
|
|
|
|
new EffectParameter[0], new string[0]));
|
2020-08-08 11:57:54 +00:00
|
|
|
moves.Insert("testMove2", new MoveData("testMove2", 0, MoveCategory.Physical, 100,
|
2020-07-25 10:52:18 +00:00
|
|
|
100, 20, MoveTarget.Any, 0, 0f, "",
|
|
|
|
new EffectParameter[0], new string[0]));
|
|
|
|
|
2020-07-19 10:33:22 +00:00
|
|
|
var items = new ItemLibrary(10);
|
2020-08-08 11:57:54 +00:00
|
|
|
items.Insert("testItem", new Item("testItem", ItemCategory.MiscItem, BattleItemCategory.None,
|
2021-03-07 18:36:09 +00:00
|
|
|
500, "", new EffectParameter[0], new string[] { }, 20));
|
2020-07-19 10:33:22 +00:00
|
|
|
var gr = new GrowthRateLibrary(10);
|
|
|
|
gr.AddGrowthRate("growthRate",
|
|
|
|
new LookupGrowthRate(
|
|
|
|
Enumerable.Range(1, 100).Select(x => (uint)x * 100).ToArray()));
|
|
|
|
var types = new TypeLibrary(10);
|
2020-07-31 12:19:21 +00:00
|
|
|
types.RegisterType("normal");
|
|
|
|
types.RegisterType("fighting");
|
2020-07-19 10:33:22 +00:00
|
|
|
var natures = new NatureLibrary(10);
|
|
|
|
natures.LoadNature("testNature", new Nature());
|
2020-08-08 11:57:54 +00:00
|
|
|
var lib = new PokemonLibrary(settings, species, moves, items, gr, types, natures);
|
2020-07-19 10:33:22 +00:00
|
|
|
return lib;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|