diff --git a/PkmnLibSharp/Library/Forme.cs b/PkmnLibSharp/Library/Forme.cs
index 911dc54..fa90923 100644
--- a/PkmnLibSharp/Library/Forme.cs
+++ b/PkmnLibSharp/Library/Forme.cs
@@ -143,6 +143,12 @@ namespace PkmnLibSharp.Library
{
}
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ _moves?.MarkAsDeleted();
+ }
+
protected override void DeletePtr()
{
SpeciesVariant.Destruct(Ptr);
diff --git a/PkmnLibSharp/Library/Items/ItemLibrary.cs b/PkmnLibSharp/Library/Items/ItemLibrary.cs
index 5d14ae3..d5872bf 100644
--- a/PkmnLibSharp/Library/Items/ItemLibrary.cs
+++ b/PkmnLibSharp/Library/Items/ItemLibrary.cs
@@ -63,6 +63,15 @@ namespace PkmnLibSharp.Library.Items
{
}
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ foreach (var item in _cache)
+ {
+ item.Value.MarkAsDeleted();
+ }
+ }
+
protected override void DeletePtr()
{
Creatureliblibrary.Generated.ItemLibrary.Destruct(Ptr);
diff --git a/PkmnLibSharp/Library/Moves/MoveLibrary.cs b/PkmnLibSharp/Library/Moves/MoveLibrary.cs
index 2c09877..08d91e9 100644
--- a/PkmnLibSharp/Library/Moves/MoveLibrary.cs
+++ b/PkmnLibSharp/Library/Moves/MoveLibrary.cs
@@ -66,6 +66,15 @@ namespace PkmnLibSharp.Library.Moves
{
}
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ foreach (var moveData in _cache)
+ {
+ moveData.Value.MarkAsDeleted();
+ }
+ }
+
protected override void DeletePtr()
{
AttackLibrary.Destruct(Ptr);
diff --git a/PkmnLibSharp/Library/NatureLibrary.cs b/PkmnLibSharp/Library/NatureLibrary.cs
index 741b0f6..22e85ac 100644
--- a/PkmnLibSharp/Library/NatureLibrary.cs
+++ b/PkmnLibSharp/Library/NatureLibrary.cs
@@ -58,5 +58,14 @@ namespace PkmnLibSharp.Library
{
Pkmnlib.Generated.NatureLibrary.Destruct(Ptr);
}
+
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ foreach (var nature in _cache)
+ {
+ nature.Value.MarkAsDeleted();
+ }
+ }
}
}
\ No newline at end of file
diff --git a/PkmnLibSharp/Library/PokemonLibrary.cs b/PkmnLibSharp/Library/PokemonLibrary.cs
index 2e28dba..39ff734 100644
--- a/PkmnLibSharp/Library/PokemonLibrary.cs
+++ b/PkmnLibSharp/Library/PokemonLibrary.cs
@@ -133,5 +133,17 @@ namespace PkmnLibSharp.Library
{
Pkmnlib.Generated.PokemonLibrary.Destruct(Ptr);
}
+
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ _settings?.MarkAsDeleted();
+ _species?.MarkAsDeleted();
+ _moves?.MarkAsDeleted();
+ _items?.MarkAsDeleted();
+ _growthRateLibrary?.MarkAsDeleted();
+ _typeLibrary?.MarkAsDeleted();
+ _natureLibrary?.MarkAsDeleted();
+ }
}
}
\ No newline at end of file
diff --git a/PkmnLibSharp/Library/Species.cs b/PkmnLibSharp/Library/Species.cs
index 5368cf6..e96b1c8 100644
--- a/PkmnLibSharp/Library/Species.cs
+++ b/PkmnLibSharp/Library/Species.cs
@@ -84,6 +84,15 @@ namespace PkmnLibSharp.Library
return s;
}
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ foreach (var forme in _formes)
+ {
+ forme.Value.MarkAsDeleted();
+ }
+ }
+
protected override void DeletePtr()
{
PokemonSpecies.Destruct(Ptr);
diff --git a/PkmnLibSharp/Library/SpeciesLibrary.cs b/PkmnLibSharp/Library/SpeciesLibrary.cs
index 08d4124..e781477 100644
--- a/PkmnLibSharp/Library/SpeciesLibrary.cs
+++ b/PkmnLibSharp/Library/SpeciesLibrary.cs
@@ -67,5 +67,14 @@ namespace PkmnLibSharp.Library
{
Creatureliblibrary.Generated.SpeciesLibrary.Destruct(Ptr);
}
+
+ protected internal override void MarkAsDeleted()
+ {
+ base.MarkAsDeleted();
+ foreach (var species in _cache)
+ {
+ species.Value.MarkAsDeleted();
+ }
+ }
}
}
\ No newline at end of file
diff --git a/PkmnLibSharp/PkmnLibSharp.csproj b/PkmnLibSharp/PkmnLibSharp.csproj
index 86ec704..7e23032 100644
--- a/PkmnLibSharp/PkmnLibSharp.csproj
+++ b/PkmnLibSharp/PkmnLibSharp.csproj
@@ -22,4 +22,7 @@
+
+
+
diff --git a/PkmnLibSharp/Utilities/PointerWrapper.cs b/PkmnLibSharp/Utilities/PointerWrapper.cs
index 4aa51cc..d138074 100644
--- a/PkmnLibSharp/Utilities/PointerWrapper.cs
+++ b/PkmnLibSharp/Utilities/PointerWrapper.cs
@@ -1,7 +1,5 @@
using System;
using System.Collections.Concurrent;
-using System.Linq;
-using System.Reflection;
namespace PkmnLibSharp.Utilities
{
@@ -70,9 +68,14 @@ namespace PkmnLibSharp.Utilities
{
if (_isDeleted)
return;
- Cached.TryRemove(Ptr, out _);
DeletePtr();
+ MarkAsDeleted();
+ }
+
+ protected internal virtual void MarkAsDeleted()
+ {
_isDeleted = true;
+ Cached.TryRemove(_ptr, out _);
}
protected bool Equals(PointerWrapper other)