From 7f4ccbfe2a4c37bbad0c736259af2ee76959a86f Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 8 Aug 2020 15:37:44 +0200 Subject: [PATCH] Implements all EvolutionData. --- PkmnLibSharp/{Battling => Library}/Gender.cs | 2 +- .../Species/Evolution/EvolutionData.cs | 65 +++++++++++++++++++ PkmnLibSharp/Library/Species/Species.cs | 2 +- PkmnLibSharp/Library/TimeOfDay.cs | 10 +++ .../Battling/PokemonBuilderTests.cs | 1 + 5 files changed, 78 insertions(+), 2 deletions(-) rename PkmnLibSharp/{Battling => Library}/Gender.cs (67%) create mode 100644 PkmnLibSharp/Library/TimeOfDay.cs diff --git a/PkmnLibSharp/Battling/Gender.cs b/PkmnLibSharp/Library/Gender.cs similarity index 67% rename from PkmnLibSharp/Battling/Gender.cs rename to PkmnLibSharp/Library/Gender.cs index 565ca0e..1ac6a5a 100644 --- a/PkmnLibSharp/Battling/Gender.cs +++ b/PkmnLibSharp/Library/Gender.cs @@ -1,4 +1,4 @@ -namespace PkmnLibSharp.Battling +namespace PkmnLibSharp.Library { public enum Gender { diff --git a/PkmnLibSharp/Library/Species/Evolution/EvolutionData.cs b/PkmnLibSharp/Library/Species/Evolution/EvolutionData.cs index a3b35e3..0111f85 100644 --- a/PkmnLibSharp/Library/Species/Evolution/EvolutionData.cs +++ b/PkmnLibSharp/Library/Species/Evolution/EvolutionData.cs @@ -1,4 +1,9 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using PkmnLibSharp.Library.Items; +using PkmnLibSharp.Library.Moves; using PkmnLibSharp.Utilities; namespace PkmnLibSharp.Library.Evolution @@ -13,6 +18,66 @@ namespace PkmnLibSharp.Library.Evolution { return new EvolutionData(Pkmnlib.Generated.EvolutionData.CreateLevelEvolution(level, into.Ptr)); } + public static EvolutionData CreateFriendshipEvolution(byte level, Species into) + { + return new EvolutionData(Pkmnlib.Generated.EvolutionData.CreateFriendshipEvolution(level, into.Ptr)); + } + public static EvolutionData CreateKnownMoveEvolution(MoveData move, Species into) + { + return new EvolutionData(Pkmnlib.Generated.EvolutionData.CreateKnownMoveEvolution(move.Ptr, into.Ptr)); + } + public static EvolutionData CreateLocationEvolution(string location, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateLocationEvolution(location.ToPtr(), into.Ptr)); + } + public static EvolutionData CreateTimeEvolution(TimeOfDay timeOfDay, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateTimeEvolution((Pkmnlib.TimeOfDay) timeOfDay, into.Ptr)); + } + public static EvolutionData CreateItemEvolution(Item item, Species into) + { + return new EvolutionData(Pkmnlib.Generated.EvolutionData.CreateItemEvolution(item.Ptr, into.Ptr)); + } + public static EvolutionData CreateGenderBasedEvolution(Gender gender, byte level, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateGenderBasedEvolution((Pkmnlib.Gender) gender, level, into.Ptr)); + } + public static EvolutionData CreateItemUseEvolution(Item item, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateItemUseEvolution(item.Ptr, into.Ptr)); + } + public static EvolutionData CreateItemUseWithGenderEvolution(Item item, Gender gender, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateItemUseWithGenderEvolution(item.Ptr, (Pkmnlib.Gender) gender, into.Ptr)); + } + public static EvolutionData CreateTradeEvolution(Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateTradeEvolution(into.Ptr)); + } + public static EvolutionData CreateTradeWithItemEvolution(Item item, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateTradeWithItemEvolution(item.Ptr, into.Ptr)); + } + public static EvolutionData CreateTradeWithSpeciesEvolution(Species with, Species into) + { + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateTradeWithSpeciesEvolution(with.Ptr, into.Ptr)); + } + public static EvolutionData CreateCustomEvolution(IList parameters, Species into) + { + var parametersPtrs = parameters.Select(x => x.Ptr).ToArray(); + GCHandle.Alloc(parametersPtrs, GCHandleType.Pinned); + var ptr = parametersPtrs.ArrayPtr(); + return new EvolutionData( + Pkmnlib.Generated.EvolutionData.CreateCustomEvolution(ptr, (ulong) parameters.Count, into.Ptr)); + } public EvolutionMethod Method => (EvolutionMethod) Pkmnlib.Generated.EvolutionData.GetMethod(Ptr); diff --git a/PkmnLibSharp/Library/Species/Species.cs b/PkmnLibSharp/Library/Species/Species.cs index 14db2cb..d4b1e41 100644 --- a/PkmnLibSharp/Library/Species/Species.cs +++ b/PkmnLibSharp/Library/Species/Species.cs @@ -5,7 +5,7 @@ using Pkmnlib; using Pkmnlib.Generated; using PkmnLibSharp.Utilities; using EvolutionData = PkmnLibSharp.Library.Evolution.EvolutionData; -using Gender = PkmnLibSharp.Battling.Gender; +using Gender = PkmnLibSharp.Library.Gender; using Random = PkmnLibSharp.Utilities.Random; namespace PkmnLibSharp.Library diff --git a/PkmnLibSharp/Library/TimeOfDay.cs b/PkmnLibSharp/Library/TimeOfDay.cs new file mode 100644 index 0000000..218178e --- /dev/null +++ b/PkmnLibSharp/Library/TimeOfDay.cs @@ -0,0 +1,10 @@ +namespace PkmnLibSharp.Library +{ + public enum TimeOfDay + { + Night = 0, + Morning = 1, + Afternoon = 2, + Evening = 3, + } +} \ No newline at end of file diff --git a/PkmnLibSharpTests/Battling/PokemonBuilderTests.cs b/PkmnLibSharpTests/Battling/PokemonBuilderTests.cs index 3dd804f..b7d9836 100644 --- a/PkmnLibSharpTests/Battling/PokemonBuilderTests.cs +++ b/PkmnLibSharpTests/Battling/PokemonBuilderTests.cs @@ -1,5 +1,6 @@ using NUnit.Framework; using PkmnLibSharp.Battling; +using PkmnLibSharp.Library; namespace PkmnLibSharpTests.Battling {