using StgSharp; using StgSharp.Control; using StgSharp.Logic; namespace StgSharp.Math { public class M128Map { public readonly long mapID; internal readonly StgSharp.LinkedListNode _unusedM128Header; internal StgSharp.LinkedList m128Map = new StgSharp.LinkedList(); 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 m128 = _unusedM128Header._next; LinkedListNode 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() { } } }