Nature Library, Nature wrapper and tests, cleanup to ensure no duplicate enums are visible outside the library.
This commit is contained in:
@@ -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()))
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
11
PkmnLibSharp/Library/Items/BattleItemCategory.cs
Normal file
11
PkmnLibSharp/Library/Items/BattleItemCategory.cs
Normal file
@@ -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);
|
||||
}
|
||||
|
||||
14
PkmnLibSharp/Library/Items/ItemCategory.cs
Normal file
14
PkmnLibSharp/Library/Items/ItemCategory.cs
Normal file
@@ -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,5 +1,6 @@
|
||||
using System;
|
||||
using Creatureliblibrary.Generated;
|
||||
using PkmnLibSharp.Library.Moves;
|
||||
using PkmnLibSharp.Utilities;
|
||||
|
||||
namespace PkmnLibSharp.Library
|
||||
|
||||
9
PkmnLibSharp/Library/Moves/MoveCategory.cs
Normal file
9
PkmnLibSharp/Library/Moves/MoveCategory.cs
Normal file
@@ -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
PkmnLibSharp/Library/Moves/MoveTarget.cs
Normal file
18
PkmnLibSharp/Library/Moves/MoveTarget.cs
Normal 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
PkmnLibSharp/Library/Nature.cs
Normal file
36
PkmnLibSharp/Library/Nature.cs
Normal 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
PkmnLibSharp/Library/NatureLibrary.cs
Normal file
56
PkmnLibSharp/Library/NatureLibrary.cs
Normal 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
PkmnLibSharp/Library/Statistic.cs
Normal file
12
PkmnLibSharp/Library/Statistic.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace PkmnLibSharp.Library
|
||||
{
|
||||
public enum Statistic : byte
|
||||
{
|
||||
Health = 0,
|
||||
Attack = 1,
|
||||
Defense = 2,
|
||||
SpecialAttack = 3,
|
||||
SpecialDefense = 4,
|
||||
Speed = 5
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user