public void ResOpen(uint id)
{ // load resource ID into memory
MemHandle memHandle = ResHandle(id);
if (memHandle == null)
return;
if (memHandle.cond == MemMan.MEM_FREED)
{ // memory has been freed
uint size = ResLength(id);
_memMan.Alloc(memHandle, size);
var clusFile = ResFile(id);
Debug.Assert(clusFile != null);
clusFile.Seek(ResOffset(id), SeekOrigin.Begin);
clusFile.Read(memHandle.data, 0, (int)size);
}
else
_memMan.SetCondition(memHandle, MemMan.MEM_DONT_FREE);
memHandle.refCount++;
if (memHandle.refCount > 20)
{
// TODO: debug(1, "%d references to id %d. Guess there's something wrong.", memHandle.refCount, id);
}
}