67 lines
1.5 KiB
C#
67 lines
1.5 KiB
C#
using StgSharp;
|
|
using StgSharp.Control;
|
|
using StgSharp.Logic;
|
|
|
|
namespace StgSharp.Math
|
|
{
|
|
public class M128Map
|
|
{
|
|
public readonly long mapID;
|
|
|
|
internal readonly StgSharp.LinkedListNode<long> _unusedM128Header;
|
|
|
|
internal StgSharp.LinkedList<long> m128Map =
|
|
new StgSharp.LinkedList<long>();
|
|
|
|
public bool isFull
|
|
{
|
|
get
|
|
{
|
|
return _unusedM128Header == m128Map._hook;
|
|
}
|
|
}
|
|
|
|
public M128Map()
|
|
{
|
|
long M128Ptr = internalIO.internalInitBigM128Map(4*30*30);
|
|
m128Map.Add(0);
|
|
|
|
_unusedM128Header = m128Map._hook._next;
|
|
|
|
for (int i = 1; i < 80*80/4; i++)
|
|
{
|
|
m128Map.Add(M128Ptr);
|
|
M128Ptr += 4;
|
|
}
|
|
|
|
mapID = Calc.RandomSeed();
|
|
}
|
|
|
|
internal long RegistManagedM128Ptr()
|
|
{
|
|
LinkedListNode<long> m128 = _unusedM128Header._next;
|
|
LinkedListNode<long> m128Previous = _unusedM128Header._previous;
|
|
|
|
m128._next._previous = _unusedM128Header.Next;
|
|
m128Previous._next = m128;
|
|
m128._previous = m128Previous;
|
|
_unusedM128Header._next = m128._next;
|
|
m128._next = _unusedM128Header;
|
|
_unusedM128Header._previous = m128;
|
|
|
|
return m128._value;
|
|
|
|
}
|
|
|
|
internal void RecycleManagedM128Ptr()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|