server-master/srcs/WingsAPI.Game/Skills/IWildKeeperComponent.cs
2026-02-10 18:21:30 +01:00

73 lines
No EOL
1.4 KiB
C#

using System.Threading;
namespace WingsEmu.Game.Skills;
public interface IWildKeeperComponent
{
public void IncreaseElementStacks();
public void DecreaseElementStacks();
public void ResetElementStacks();
public short ElementStacks();
}
public class WildKeeperComponent : IWildKeeperComponent
{
private readonly ReaderWriterLockSlim _lock = new();
private short _elementsCounter;
public void IncreaseElementStacks()
{
_lock.EnterWriteLock();
try
{
_elementsCounter++;
}
finally
{
_lock.ExitWriteLock();
}
}
public void DecreaseElementStacks()
{
_lock.EnterWriteLock();
try
{
_elementsCounter--;
if (_elementsCounter < 0)
{
_elementsCounter = 0;
}
}
finally
{
_lock.ExitWriteLock();
}
}
public void ResetElementStacks()
{
_lock.EnterWriteLock();
try
{
_elementsCounter = 0;
}
finally
{
_lock.ExitWriteLock();
}
}
public short ElementStacks()
{
_lock.EnterReadLock();
try
{
return _elementsCounter;
}
finally
{
_lock.ExitReadLock();
}
}
}