mapfile.cpp

Go to the documentation of this file.
00001 #include "stdafx.h"
00002 #include "mapfile.h"
00003 #include <string.h>
00004 
00005 MapFile::MapFile(FILESTRUCT* data)
00006 {
00007         if(data == NULL)
00008         {
00009                 m_nStatus = BL_ERROR;
00010                 return;
00011         }
00012 
00013         m_nStatus = BL_OK;
00014 
00015         //Get fileheader info
00016         strncpy(m_FileHeader.name, data->fileheader.name, 12);
00017         m_FileHeader.size = data->fileheader.size;
00018 
00019         uint32 nMemOffset = 0; 
00020         memcpy(&m_Map.nVersion, &data->data[nMemOffset], 4);
00021         nMemOffset += (sizeof(char) * 4);
00022 
00023         memcpy(&m_Map.StartPosition.x, &data->data[nMemOffset], 4);
00024         nMemOffset += (sizeof(char) * 4);
00025         
00026         memcpy(&m_Map.StartPosition.y, &data->data[nMemOffset], 4);
00027         nMemOffset += (sizeof(char) * 4);
00028         
00029         memcpy(&m_Map.StartPosition.z, &data->data[nMemOffset], 4);
00030         nMemOffset += (sizeof(char) * 4);       
00031         
00032         memcpy(&m_Map.nAngle , &data->data[nMemOffset], 2);
00033         nMemOffset += (sizeof(char) * 2);
00034 
00035         memcpy(&m_Map.nStartPointSecNum , &data->data[nMemOffset], 2);
00036         nMemOffset += (sizeof(char) * 2);
00037 
00038         //Read sector info
00039         memcpy(&m_Map.nNumSectors , &data->data[nMemOffset], 2);
00040         nMemOffset += (sizeof(char) * 2);
00041 
00042         memcpy(&m_Map.sectors[0] , &data->data[nMemOffset], m_Map.nNumSectors);
00043         nMemOffset += (sizeof(sectortype) * m_Map.nNumSectors);
00044 
00045         //Read wall info
00046         memcpy(&m_Map.nNumWalls , &data->data[nMemOffset], 2);
00047         nMemOffset += (sizeof(char) * 2);
00048         
00049         memcpy(&m_Map.walls[0] , &data->data[nMemOffset], m_Map.nNumWalls);
00050         nMemOffset += (sizeof(walltype) * m_Map.nNumWalls);
00051 
00052         //Read sprite info
00053         memcpy(&m_Map.nNumSprites , &data->data[nMemOffset], 2);
00054         nMemOffset += (sizeof(char) * 2);
00055         
00056         memcpy(&m_Map.sprites[0] , &data->data[nMemOffset], m_Map.nNumSprites);
00057         nMemOffset += (sizeof(spritetype) * m_Map.nNumSprites);
00058 
00059 }
00060 
00061 
00062 MapFile::MapFile(const char* sFilename)
00063 {
00064         m_nStatus = BL_OK;
00065 
00066         FILE *fp = fopen(sFilename, "rb");
00067         if(fp != NULL)
00068         {
00069                 //Read map version
00070                 fread(&m_Map.nVersion, sizeof(char), 4, fp);
00071 
00072                 fread(&m_Map.StartPosition.x, sizeof(char), 4, fp);
00073                 fread(&m_Map.StartPosition.y, sizeof(char), 4, fp);
00074                 fread(&m_Map.StartPosition.z, sizeof(char), 4, fp);
00075 
00076 
00077                 fread(&m_Map.nAngle, sizeof(char), 2, fp);
00078                 fread(&m_Map.nStartPointSecNum, sizeof(char), 2, fp);
00079 
00080                 //Read sector info
00081                 fread(&m_Map.nNumSectors, sizeof(char), 2, fp);
00082                 fread(&m_Map.sectors[0], sizeof(sectortype), m_Map.nNumSectors, fp);
00083 
00084                 //Read wall info
00085                 fread(&m_Map.nNumWalls, sizeof(char), 2, fp);
00086                 fread(&m_Map.walls[0], sizeof(walltype), m_Map.nNumWalls, fp);
00087 
00088                 //Read sprite info
00089                 fread(&m_Map.nNumSprites, sizeof(char), 2, fp);
00090                 fread(&m_Map.sprites[0], sizeof(spritetype), m_Map.nNumSprites, fp);
00091 
00092                 fclose(fp);
00093         }
00094         else
00095         {
00096                 m_nStatus = BL_ERROR;
00097         }
00098 
00099 
00100 }
00101 
00102 MapFile::MapFile()
00103 {
00104         m_nStatus = BL_OK;
00105 }
00106 
00107 
00108 MapFile::~MapFile()
00109 {
00110 }

Generated on Sat Jan 11 23:36:56 2003 for Build-Lib by doxygen1.2.18