Nature Library, Nature wrapper and tests, cleanup to ensure no duplicate enums are visible outside the library.

This commit is contained in:
Deukhoofd committed 2020-05-06 14:40:29 +02:00
1 parent 8845f33d04
commit 95a2270ca3
78 files changed
+366 -109

No files matched your search

+9
View File
@@ -4,6 +4,15 @@ using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
{
public enum EffectParameterType
{
None = 0,
Bool = 1,
Int = 2,
Float = 3,
String = 4,
}
public class EffectParameter : PointerWrapper
{
public EffectParameter(string s) : base(Creatureliblibrary.Generated.EffectParameter.FromString(s.ToPtr()))
+13 -6
View File
@@ -40,12 +40,17 @@ namespace PkmnLibSharp.Library
}
}
public uint BaseHealth => SpeciesVariant.GetStatistic(Ptr, Statistic.Health);
public uint BaseAttack => SpeciesVariant.GetStatistic(Ptr, Statistic.PhysicalAttack);
public uint BaseDefense => SpeciesVariant.GetStatistic(Ptr, Statistic.PhysicalDefense);
public uint BaseSpecialAttack => SpeciesVariant.GetStatistic(Ptr, Statistic.MagicalAttack);
public uint BaseSpecialDefense => SpeciesVariant.GetStatistic(Ptr, Statistic.MagicalDefense);
public uint BaseSpeed => SpeciesVariant.GetStatistic(Ptr, Statistic.Speed);
public uint BaseHealth => SpeciesVariant.GetStatistic(Ptr, (byte) Statistic.Health);
public uint BaseAttack => SpeciesVariant.GetStatistic(Ptr, (Creatureliblibrary.Statistic) Statistic.Attack);
public uint BaseDefense => SpeciesVariant.GetStatistic(Ptr, (Creatureliblibrary.Statistic) Statistic.Defense);
public uint BaseSpecialAttack =>
SpeciesVariant.GetStatistic(Ptr, (Creatureliblibrary.Statistic) Statistic.SpecialAttack);
public uint BaseSpecialDefense =>
SpeciesVariant.GetStatistic(Ptr, (Creatureliblibrary.Statistic) Statistic.SpecialDefense);
public uint BaseSpeed => SpeciesVariant.GetStatistic(Ptr, (Creatureliblibrary.Statistic) Statistic.Speed);
public ImmutableArray<string> Abilities
{
@@ -67,6 +72,7 @@ namespace PkmnLibSharp.Library
return _abilities;
}
}
public ImmutableArray<string> HiddenAbilities
{
get
@@ -98,6 +104,7 @@ namespace PkmnLibSharp.Library
{
_moves = new LearnableMoves(movesPtr);
}
return _moves;
}
}
@@ -0,0 +1,11 @@
namespace PkmnLibSharp.Library.Items
{
public enum BattleItemCategory
{
None = 0,
Healing = 1,
StatusHealing = 2,
Pokeball = 3,
MiscBattleItem = 4,
}
}
@@ -1,10 +1,8 @@
using System;
using System.Linq;
using PkmnLibSharp.Utilities;
using BattleItemCategory = Pkmnlib.BattleItemCategory;
using ItemCategory = Pkmnlib.ItemCategory;
namespace PkmnLibSharp.Library
namespace PkmnLibSharp.Library.Items
{
public class Item : PointerWrapper
{
@@ -12,8 +10,10 @@ namespace PkmnLibSharp.Library
public string Name => _name ??= Creatureliblibrary.Generated.Item.GetName(Ptr).PtrString();
public ItemCategory Category => (ItemCategory) Creatureliblibrary.Generated.Item.GetCategory(Ptr);
public BattleItemCategory BattleCategory =>
(BattleItemCategory) Creatureliblibrary.Generated.Item.GetBattleCategory(Ptr);
public int Price => Creatureliblibrary.Generated.Item.GetPrice(Ptr);
public byte FlingPower => Pkmnlib.Generated.Item.GetFlingPower(Ptr);
@@ -21,7 +21,7 @@ namespace PkmnLibSharp.Library
{
return Creatureliblibrary.Generated.Item.HasFlag(Ptr, s.ToPtr()) == MarshalHelper.True;
}
internal Item(IntPtr ptr) : base(ptr)
{
}
@@ -31,8 +31,8 @@ namespace PkmnLibSharp.Library
string[] flags, byte flingPower)
{
var convertedFlags = flags.Select(x => x.ToPtr()).ToArray().ArrayPtr();
var p = Pkmnlib.Generated.Item.Construct(name.ToPtr(), category, battleCategory, price, convertedFlags,
(ulong) flags.Length, flingPower);
var p = Pkmnlib.Generated.Item.Construct(name.ToPtr(), (Pkmnlib.ItemCategory) category,
(Pkmnlib.BattleItemCategory) battleCategory, price, convertedFlags, (ulong) flags.Length, flingPower);
return new Item(p);
}
@@ -0,0 +1,14 @@
namespace PkmnLibSharp.Library
{
public enum ItemCategory
{
MiscItem = 0,
Pokeball = 1,
Medicine = 2,
Berry = 3,
TechnicalMachine = 4,
FormeChanger = 5,
KeyItem = 6,
Mail = 7,
}
}
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
namespace PkmnLibSharp.Library.Items
{
public class ItemLibrary : PointerWrapper
{
+1
View File
@@ -1,5 +1,6 @@
using System;
using Creatureliblibrary.Generated;
using PkmnLibSharp.Library.Moves;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
@@ -0,0 +1,9 @@
namespace PkmnLibSharp.Library.Moves
{
public enum MoveCategory
{
Physical = 0,
Special = 1,
Status = 2,
}
}
@@ -1,12 +1,11 @@
using System;
using System.Linq;
using System.Runtime.InteropServices;
using Creatureliblibrary.Generated;
using Pkmnlib;
using PkmnLibSharp.Utilities;
using AttackCategory = Creatureliblibrary.AttackCategory;
namespace PkmnLibSharp.Library
namespace PkmnLibSharp.Library.Moves
{
public class MoveData : PointerWrapper
{
@@ -19,7 +18,7 @@ namespace PkmnLibSharp.Library
public byte BasePower => AttackData.GetBasePower(Ptr);
public byte Accuracy => AttackData.GetAccuracy(Ptr);
public byte BaseUsages => AttackData.GetBaseUsages(Ptr);
public AttackTarget Target => (AttackTarget) AttackData.GetTarget(Ptr);
public MoveTarget Target => (MoveTarget) AttackData.GetTarget(Ptr);
public sbyte Priority => AttackData.GetPriority(Ptr);
public bool HasSecondaryEffect => AttackData.HasSecondaryEffect(Ptr) == 1;
public float SecondaryEffectChance => AttackData.GetSecondaryEffectChance(Ptr);
@@ -33,7 +32,7 @@ namespace PkmnLibSharp.Library
}
public static MoveData Create(string name, byte type, MoveCategory category, byte power, byte accuracy,
byte baseUsage, AttackTarget target, sbyte priority, float effectChance, string effectName,
byte baseUsage, MoveTarget target, sbyte priority, float effectChance, string effectName,
EffectParameter[] parameters, string[] flags)
{
var ptr = IntPtr.Zero;
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using Creatureliblibrary.Generated;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
namespace PkmnLibSharp.Library.Moves
{
public class MoveLibrary : PointerWrapper
{
+18
View File
@@ -0,0 +1,18 @@
namespace PkmnLibSharp.Library.Moves
{
public enum MoveTarget
{
Adjacent = 0,
AdjacentAlly = 1,
AdjacentAllySelf = 2,
AdjacentOpponent = 3,
All = 4,
AllAdjacent = 5,
AllAdjacentOpponent = 6,
AllAlly = 7,
AllOpponent = 8,
Any = 9,
RandomOpponent = 10,
Self = 11,
}
}
+36
View File
@@ -0,0 +1,36 @@
using System;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
{
public class Nature : PointerWrapper
{
internal Nature(IntPtr ptr) : base(ptr){}
public Nature(Statistic increasedStat, Statistic decreasedStat, float increasedModifier = 1.1f,
float decreasedModifier = 0.9f) : base(Pkmnlib.Generated.Nature.Construct((Pkmnlib.Statistic) increasedStat,
(Pkmnlib.Statistic) decreasedStat,
increasedModifier, decreasedModifier))
{
}
public Nature() : this(Statistic.Health, Statistic.Health, 1f, 1f)
{
}
public float IncreasedModifier => Pkmnlib.Generated.Nature.GetIncreaseModifier(Ptr);
public float DecreasedModifier => Pkmnlib.Generated.Nature.GetDecreaseModifier(Ptr);
public Statistic IncreasedStat => (Statistic) Pkmnlib.Generated.Nature.GetIncreasedStat(Ptr);
public Statistic DecreasedStat => (Statistic) Pkmnlib.Generated.Nature.GetDecreasedStat(Ptr);
public float GetStatModifier(Statistic stat)
{
return Pkmnlib.Generated.Nature.GetStatModifier(Ptr, (Pkmnlib.Statistic) stat);
}
protected override void DeletePtr()
{
Pkmnlib.Generated.Nature.Destruct(Ptr);
}
}
}
+56
View File
@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
{
public class NatureLibrary : PointerWrapper
{
private readonly Dictionary<string, Nature> _cache =
new Dictionary<string, Nature>(StringComparer.InvariantCultureIgnoreCase);
private readonly Dictionary<IntPtr, string> _natureNames = new Dictionary<IntPtr, string>();
public NatureLibrary(ulong initialCapacity) : base(Pkmnlib.Generated.NatureLibrary.Construct(initialCapacity))
{
}
public void LoadNature(string name, Nature nature)
{
Pkmnlib.Generated.NatureLibrary.LoadNature(Ptr, name.ToPtr(), nature.Ptr).Assert();
_cache.Add(name, nature);
_natureNames.Add(nature.Ptr, name);
}
public Nature GetNature(string name)
{
if (_cache.TryGetValue(name, out var nature))
return nature;
var ptr = IntPtr.Zero;
Pkmnlib.Generated.NatureLibrary.GetNatureByName(Ptr, name.ToPtr(), ref ptr).Assert();
if (TryResolvePointer(ptr, out nature))
{
_cache.Add(name, nature);
_natureNames.Add(ptr, name);
return nature;
}
nature = new Nature(ptr);
_cache.Add(name, nature);
_natureNames.Add(ptr, name);
return nature;
}
public string GetNatureName(Nature nature)
{
if (_natureNames.TryGetValue(nature.Ptr, out var s))
return s;
var ptr = IntPtr.Zero;
Pkmnlib.Generated.NatureLibrary.GetNatureName(Ptr, nature.Ptr, ref ptr).Assert();
return ptr.PtrString();
}
protected override void DeletePtr()
{
Pkmnlib.Generated.NatureLibrary.Destruct(Ptr);
}
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace PkmnLibSharp.Library
{
public enum Statistic : byte
{
Health = 0,
Attack = 1,
Defense = 2,
SpecialAttack = 3,
SpecialDefense = 4,
Speed = 5
}
}