#include "dynos.cpp.h" extern "C" { } ///////////// // Parsing // ///////////// DataNode* DynOS_Rooms_Parse(GfxData* aGfxData, DataNode* aNode) { if (aNode->mData) return aNode; // U8 data aNode->mSize = (u32) (aNode->mTokens.Count()); aNode->mData = New(aNode->mSize); for (u32 i = 0; i != aNode->mSize; ++i) { aNode->mData[i] = (u8) aNode->mTokens[i].ParseInt(); } aNode->mLoadIndex = aGfxData->mLoadIndex++; return aNode; } ///////////// // Writing // ///////////// void DynOS_Rooms_Write(FILE* aFile, GfxData* aGfxData, DataNode *aNode) { if (!aNode->mData) return; // Name WriteBytes(aFile, DATA_TYPE_ROOMS); aNode->mName.Write(aFile); // Data WriteBytes(aFile, aNode->mSize); for (u32 i = 0; i != aNode->mSize; ++i) { WriteBytes(aFile, aNode->mData[i]); } } ///////////// // Reading // ///////////// DataNode* DynOS_Rooms_Load(FILE *aFile, GfxData *aGfxData) { DataNode *_Node = New>(); // Name _Node->mName.Read(aFile); // Data _Node->mSize = ReadBytes(aFile); _Node->mData = New(_Node->mSize); for (u32 i = 0; i != _Node->mSize; ++i) { _Node->mData[i] = ReadBytes(aFile); } // Add it if (aGfxData != NULL) { aGfxData->mRooms.Add(_Node); } return _Node; }