Rework constructors to remove the Create pattern.

This commit is contained in:
2020-08-08 13:57:54 +02:00
parent 1b025ea3cf
commit e0f4a38309
22 changed files with 148 additions and 147 deletions

View File

@@ -112,7 +112,7 @@ namespace PkmnLibSharp.Library
return Types[index];
}
public static Forme Create(string name, float height, float weight, uint baseExperience, byte[] types,
public Forme(string name, float height, float weight, uint baseExperience, byte[] types,
ushort baseHealth, ushort baseAttack, ushort baseDefense, ushort baseSpecialAttack,
ushort baseSpecialDefense, ushort baseSpeed, string[] abilities, string[] hiddenAbilities,
LearnableMoves moves)
@@ -130,7 +130,7 @@ namespace PkmnLibSharp.Library
Marshal.FreeHGlobal(intPtr);
foreach (var intPtr in hiddenAbilitiesConverted)
Marshal.FreeHGlobal(intPtr);
return f;
Initialize(ptr);
}
public byte GetRandomAbility(Random rand)

View File

@@ -13,7 +13,7 @@ namespace PkmnLibSharp.Library.GrowthRates
{
}
public static ExternGrowthRate Create(CalculateLevelDelegate levelFunc,
public ExternGrowthRate(CalculateLevelDelegate levelFunc,
CalculateExperienceDelegate experienceFunc)
{
var ptr = IntPtr.Zero;
@@ -21,7 +21,7 @@ namespace PkmnLibSharp.Library.GrowthRates
Marshal.GetFunctionPointerForDelegate(levelFunc),
Marshal.GetFunctionPointerForDelegate(experienceFunc)
);
return new ExternGrowthRate(ptr);
Initialize(ptr);
}
protected override void DeletePtr()

View File

@@ -8,6 +8,8 @@ namespace PkmnLibSharp.Library.GrowthRates
internal GrowthRate(IntPtr ptr) : base(ptr)
{
}
protected GrowthRate(){}
public byte CalculateLevel(uint experience)
{

View File

@@ -26,14 +26,14 @@ namespace PkmnLibSharp.Library.Items
return Creaturelib.Generated.Item.HasFlag(Ptr, s.ToPtr()) == MarshalHelper.True;
}
public static Item Create(string name, ItemCategory category, BattleItemCategory battleCategory,
public Item (string name, ItemCategory category, BattleItemCategory battleCategory,
int price,
string[] flags, byte flingPower)
{
var convertedFlags = flags.Select(x => x.ToPtr()).ToArray().ArrayPtr();
var p = Pkmnlib.Generated.Item.Construct(name.ToPtr(), (Pkmnlib.ItemCategory) category,
(Pkmnlib.BattleItemCategory) battleCategory, price, convertedFlags, (ulong) flags.Length, flingPower);
return new Item(p);
Initialize(p);
}
protected override void DeletePtr()

View File

@@ -11,11 +11,11 @@ namespace PkmnLibSharp.Library
{
}
public static LearnableMoves Create(byte maxLevel)
public LearnableMoves(byte maxLevel)
{
var ptr = IntPtr.Zero;
LearnableAttacks.Construct(ref ptr, maxLevel);
return new LearnableMoves(ptr);
Initialize(ptr);
}
public void AddLevelAttack(byte level, MoveData move)

View File

@@ -34,7 +34,7 @@ namespace PkmnLibSharp.Library.Moves
return AttackData.HasFlag(Ptr, s.ToPtr()) == 1;
}
public static MoveData Create(string name, byte type, MoveCategory category, byte power, byte accuracy,
public MoveData(string name, byte type, MoveCategory category, byte power, byte accuracy,
byte baseUsage, MoveTarget target, sbyte priority, float effectChance, string effectName,
EffectParameter[] parameters, string[] flags)
{
@@ -45,7 +45,7 @@ namespace PkmnLibSharp.Library.Moves
AttackData.Construct(ref ptr, name.ToPtr(), type, (AttackCategory) category, power, accuracy, baseUsage,
(AttackTarget) target, priority, effectChance, effectName.ToPtr(), pars,
(ulong) parameters.Length, f, (ulong) flags.Length).Assert();
return new MoveData(ptr);
Initialize(ptr);
}
protected override void DeletePtr()

View File

@@ -63,11 +63,11 @@ namespace PkmnLibSharp.Library.Moves
return move;
}
public static MoveLibrary Create(ulong defaultCapacity)
public MoveLibrary(ulong defaultCapacity)
{
var ptr = IntPtr.Zero;
AttackLibrary.Construct(ref ptr, defaultCapacity).Assert();
return new MoveLibrary(ptr);
Initialize(ptr);
}
protected internal override void MarkAsDeleted()

View File

@@ -119,14 +119,14 @@ namespace PkmnLibSharp.Library
{
}
public static PokemonLibrary Create(LibrarySettings settings, SpeciesLibrary species, MoveLibrary moves,
public PokemonLibrary(LibrarySettings settings, SpeciesLibrary species, MoveLibrary moves,
ItemLibrary items,
GrowthRateLibrary growthRates, TypeLibrary types, NatureLibrary natures)
{
var ptr = IntPtr.Zero;
Pkmnlib.Generated.PokemonLibrary.Construct(ref ptr, settings.Ptr, species.Ptr, moves.Ptr, items.Ptr,
growthRates.Ptr, types.Ptr, natures.Ptr).Assert();
return new PokemonLibrary(ptr);
Initialize(ptr);
}
protected override void DeletePtr()

View File

@@ -81,15 +81,14 @@ namespace PkmnLibSharp.Library
{
}
public static Species Create(ushort id, string name, Forme defaultForme, float genderRatio, string growthRate,
public Species(ushort id, string name, Forme defaultForme, float genderRatio, string growthRate,
byte captureRate, byte baseHappiness)
{
var ptr = IntPtr.Zero;
PokemonSpecies.Construct(ref ptr, id, name.ToPtr(), defaultForme.Ptr, genderRatio,
growthRate.ToPtr(), captureRate, baseHappiness).Assert();
var s = new Species(ptr);
s._formes.Add("default", defaultForme);
return s;
_formes.Add("default", defaultForme);
Initialize(ptr);
}
protected internal override void MarkAsDeleted()