11 #include "../clib/cfgelem.h" 12 #include "../clib/cfgfile.h" 13 #include "../clib/fileutil.h" 14 #include "../clib/iohelp.h" 15 #include "../pol/uofile.h" 32 _cur_mapblock_index( -1 ),
37 _cur_maptile_index( -1 ),
41 _ofs_base.exceptions( std::ios_base::failbit | std::ios_base::badbit );
42 _ofs_solidx1.exceptions( std::ios_base::failbit | std::ios_base::badbit );
43 _ofs_solidx2.exceptions( std::ios_base::failbit | std::ios_base::badbit );
44 _ofs_solids.exceptions( std::ios_base::failbit | std::ios_base::badbit );
45 _ofs_maptile.exceptions( std::ios_base::failbit | std::ios_base::badbit );
50 std::string filename =
"realm/" +
_realm_name +
"/realm.cfg";
51 std::ofstream ofs_cfg;
52 ofs_cfg.exceptions( std::ios_base::failbit | std::ios_base::badbit );
57 ofs_cfg <<
"{" << std::endl;
58 ofs_cfg <<
" width " <<
_width << std::endl;
59 ofs_cfg <<
" height " <<
_height << std::endl;
60 ofs_cfg <<
" mapserver memory" << std::endl;
63 ofs_cfg <<
" num_static_patches " << num_static_patches << std::endl;
64 ofs_cfg <<
" num_map_patches " << num_map_patches << std::endl;
65 ofs_cfg <<
" season 1" << std::endl;
66 ofs_cfg <<
"}" << std::endl;
73 std::string filename = directory +
"base.dat";
76 memset( &empty, 0,
sizeof empty );
79 _ofs_base.write( reinterpret_cast<const char*>( &empty ),
sizeof empty );
86 std::string filename = directory +
"solidx1.dat";
92 _ofs_solidx1.write( reinterpret_cast<const char*>( &elem ),
sizeof elem );
98 std::string filename = directory +
"solidx2.dat";
107 std::string filename = directory +
"solids.dat";
116 std::string filename = directory +
"maptile.dat";
119 memset( &maptile_empty, 0,
sizeof maptile_empty );
122 _ofs_maptile.write( reinterpret_cast<const char*>( &maptile_empty ),
sizeof maptile_empty );
133 std::string directory =
"realm/" +
_realm_name +
"/";
153 std::string directory =
"realm/" +
_realm_name +
"/";
155 std::string realm_cfg_filename = directory +
"realm.cfg";
158 if ( !cf.
read( elem ) )
159 throw std::runtime_error(
"Unable to read realm from " + realm_cfg_filename );
163 std::string filename = directory +
"base.dat";
168 filename = directory +
"solidx1.dat";
172 filename = directory +
"solidx2.dat";
178 filename = directory +
"solids.dat";
184 filename = directory +
"maptile.dat";
233 size_t offset = blockIdx *
sizeof(
_block );
234 _ofs_base.seekg( offset, std::ios_base::beg );
259 _ofs_maptile.read( reinterpret_cast<char*>( &_maptile_block ),
sizeof _maptile_block );
270 _ofs_base.seekp( offset, std::ios_base::beg );
307 _ofs_solidx2.write( reinterpret_cast<const char*>( &elem ),
sizeof elem );
312 unsigned int offset )
319 _ofs_solidx1.write( reinterpret_cast<const char*>( &offset ),
sizeof offset );
void AppendSolid(const SOLIDS_ELEM &solid)
const unsigned MAPBLOCK_CELLMASK
unsigned int NextSolidOffset()
std::fstream _ofs_maptile
unsigned int total_maptile_blocks()
unsigned int total_solid_blocks()
unsigned int total_blocks()
char * binary(unsigned int val, int nbits)
void open_file(std::fstream &ofs, std::string &filename, std::ios::openmode mode)
MAPTILE_CELL cell[MAPTILE_CHUNK][MAPTILE_CHUNK]
void CreateBaseDat(const std::string &realm_name, const std::string &directory)
unsigned int num_static_patches
const unsigned MAPTILE_SHIFT
void CreateSolidx1Dat(const std::string &realm_name, const std::string &directory)
unsigned int num_map_patches
const unsigned MAPBLOCK_CHUNK
void CreateSolidx2Dat(const std::string &realm_name, const std::string &directory)
void SetMapTile(unsigned short x, unsigned short y, MAPTILE_CELL cell)
std::fstream _ofs_solidx2
MAPCELL cell[MAPBLOCK_CHUNK][MAPBLOCK_CHUNK]
unsigned int NextSolidIndex()
std::fstream::pos_type total_size()
void AppendSolidx2Elem(const SOLIDX2_ELEM &elem)
void CreateMaptileDat(const std::string &realm_name, const std::string &directory)
void CreateSolidsDat(const std::string &realm_name, const std::string &directory)
void SetMapCell(unsigned short x, unsigned short y, MAPCELL cell)
MAPTILE_BLOCK _maptile_block
const unsigned MAPTILE_CHUNK
unsigned short remove_ushort(const char *propname)
void SetSolidx2Offset(unsigned short x_base, unsigned short y_base, unsigned int offset)
bool read(ConfigElem &elem)
void CreateNewFiles(const std::string &realm_name, unsigned short width, unsigned short height)
std::fstream _ofs_solidx1
unsigned int NextSolidx2Offset()
const unsigned MAPBLOCK_SHIFT
void OpenExistingFiles(const std::string &realm_name)
int make_dir(const char *dir)
const unsigned MAPTILE_CELLMASK