00001
00002
00003
00004
00005
00007
00008 #ifndef HGERESOURCEREADER__
00009 #define HGERESOURCEREADER__
00010
00011 #include <hge.h>
00012
00014
00015
00016 class hgeResourceReader
00017 {
00018 protected:
00019
00020
00021 HGE *hge;
00022
00023
00024 size_t rpos;
00025
00026
00027 byte *data;
00028
00029
00030 DWORD size;
00031
00032 public:
00033
00034 hgeResourceReader(const char *filename)
00035 {
00036 hge = hgeCreate( HGE_VERSION );
00037
00038 data = (byte*)hge->Resource_Load( filename, &size );
00039
00040 if (!data) size = 0;
00041
00042 rpos = 0;
00043 }
00044
00045 void read(void *dstbuf, size_t elementsize, size_t count)
00046 {
00047 size_t tsize = elementsize * count;
00048
00049 if (rpos + tsize > size)
00050 {
00051 hge->System_Log("hgeResourceReader: Error in read(). Attempted to read past buffer end");
00052 return;
00053 }
00054
00055 memcpy( dstbuf, &data[rpos], tsize );
00056 rpos += tsize;
00057 }
00058
00059 void close()
00060 {
00061 hge->Resource_Free( data );
00062 }
00063
00064 };
00065
00066 #endif