Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
System.cpp File Reference
#include <stdio.h>
#include <deque>
#include <list>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <sys/stat.h>
#include <unistd.h>
#include "StormLib.h"
#include "dbcfile.h"
#include "adt.h"
#include "wdt.h"
#include <fcntl.h>
#include <io.h>
Include dependency graph for System.cpp:

Go to the source code of this file.

Classes

struct  map_areaHeader
struct  map_fileheader
struct  map_heightHeader
struct  map_id
struct  map_liquidHeader

Macros

#define _CRT_SECURE_NO_DEPRECATE
#define ERROR_PATH_NOT_FOUND   ERROR_FILE_NOT_FOUND
#define LOCALES_COUNT   15
#define MAP_AREA_NO_AREA   0x0001
#define MAP_HEIGHT_AS_INT16   0x0002
#define MAP_HEIGHT_AS_INT8   0x0004
#define MAP_HEIGHT_NO_HEIGHT   0x0001
#define MAP_LIQUID_NO_HEIGHT   0x0002
#define MAP_LIQUID_NO_TYPE   0x0001
#define MAP_LIQUID_TYPE_DARK_WATER   0x10
#define MAP_LIQUID_TYPE_MAGMA   0x04
#define MAP_LIQUID_TYPE_NO_WATER   0x00
#define MAP_LIQUID_TYPE_OCEAN   0x02
#define MAP_LIQUID_TYPE_SLIME   0x08
#define MAP_LIQUID_TYPE_WATER   0x01
#define MAP_LIQUID_TYPE_WMO_WATER   0x20
#define NEW_BASE_SET_BUILD   15211
#define OPEN_FLAGS   (O_RDONLY | O_BINARY)

Enumerations

enum  Extract { EXTRACT_MAP = 1 , EXTRACT_DBC = 2 , EXTRACT_CAMERA = 4 }

Functions

bool ConvertADT (char *filename, char *filename2, int, int, uint32 build)
void CreateDir (std::string const &path)
void ExtractCameraFiles (int locale, bool basicLocale)
void ExtractDB2Files (int l, bool basicLocale)
void ExtractDBCFiles (int l, bool basicLocale)
bool ExtractFile (HANDLE fileInArchive, char const *filename)
void ExtractMapsFromMpq (uint32 build)
bool FileExists (TCHAR const *fileName)
void HandleArgs (int argc, char *arg[])
void LoadCommonMPQFiles (uint32 build)
bool LoadLocaleMPQFile (int locale)
int main (int argc, char *arg[])
void ReadAreaTableDBC ()
uint32 ReadBuild (int locale)
void ReadLiquidTypeTableDBC ()
uint32 ReadMapDBC ()
float selectUInt16StepStore (float maxDiff)
float selectUInt8StepStore (float maxDiff)
void Usage (char const *prg)

Variables

uint16 area_flags [ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]
uint16areas
uint32 const Builds [] = {16016, 16048, 16057, 16309, 16357, 16516, 16650, 16844, 16965, 17116, 17266, 17325, 17345, 17538, 17645, 17688, 17898, 18273}
bool CONF_allow_float_to_int = false
bool CONF_allow_height_limit = true
int CONF_extract = EXTRACT_MAP | EXTRACT_DBC | EXTRACT_CAMERA
float CONF_flat_height_delta_limit = 0.005f
float CONF_flat_liquid_delta_limit = 0.001f
float CONF_float_to_int16_limit = 2048.0f
float CONF_float_to_int8_limit = 2.0f
char const * CONF_mpq_list []
uint32 CONF_TargetBuild = 18273
float CONF_use_minHeight = -500.0f
uint16 holes [ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]
char input_path [128] = "."
uint16LiqType
uint16 liquid_entry [ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]
uint8 liquid_flags [ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]
float liquid_height [ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]
bool liquid_show [ADT_GRID_SIZE][ADT_GRID_SIZE]
HANDLE LocaleMpq = NULL
char const * Locales [LOCALES_COUNT]
TCHAR const * LocalesT [LOCALES_COUNT]
static char const * MAP_AREA_MAGIC = "AREA"
static char const * MAP_HEIGHT_MAGIC = "MHGT"
map_idmap_ids
static char const * MAP_LIQUID_MAGIC = "MLIQ"
static char const * MAP_MAGIC = "MAPS"
static char const * MAP_VERSION_MAGIC = "v1.4"
uint32 maxAreaId = 0
char output_path [128] = "."
uint16 uint16_V8 [ADT_GRID_SIZE][ADT_GRID_SIZE]
uint16 uint16_V9 [ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]
uint8 uint8_V8 [ADT_GRID_SIZE][ADT_GRID_SIZE]
uint8 uint8_V9 [ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]
float V8 [ADT_GRID_SIZE][ADT_GRID_SIZE]
float V9 [ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]
HANDLE WorldMpq = NULL

Macro Definition Documentation

◆ _CRT_SECURE_NO_DEPRECATE

#define _CRT_SECURE_NO_DEPRECATE

Definition at line 6 of file System.cpp.

◆ ERROR_PATH_NOT_FOUND

#define ERROR_PATH_NOT_FOUND   ERROR_FILE_NOT_FOUND

Definition at line 23 of file System.cpp.

Referenced by LoadCommonMPQFiles(), LoadLocaleMPQFile(), main(), and main().

◆ LOCALES_COUNT

#define LOCALES_COUNT   15

Definition at line 106 of file System.cpp.

Referenced by main(), and main().

◆ MAP_AREA_NO_AREA

#define MAP_AREA_NO_AREA   0x0001

Definition at line 389 of file System.cpp.

◆ MAP_HEIGHT_AS_INT16

#define MAP_HEIGHT_AS_INT16   0x0002

Definition at line 399 of file System.cpp.

◆ MAP_HEIGHT_AS_INT8

#define MAP_HEIGHT_AS_INT8   0x0004

Definition at line 400 of file System.cpp.

◆ MAP_HEIGHT_NO_HEIGHT

#define MAP_HEIGHT_NO_HEIGHT   0x0001

Definition at line 398 of file System.cpp.

◆ MAP_LIQUID_NO_HEIGHT

#define MAP_LIQUID_NO_HEIGHT   0x0002

Definition at line 420 of file System.cpp.

◆ MAP_LIQUID_NO_TYPE

#define MAP_LIQUID_NO_TYPE   0x0001

Definition at line 419 of file System.cpp.

◆ MAP_LIQUID_TYPE_DARK_WATER

#define MAP_LIQUID_TYPE_DARK_WATER   0x10

Definition at line 416 of file System.cpp.

◆ MAP_LIQUID_TYPE_MAGMA

#define MAP_LIQUID_TYPE_MAGMA   0x04

Definition at line 413 of file System.cpp.

◆ MAP_LIQUID_TYPE_NO_WATER

#define MAP_LIQUID_TYPE_NO_WATER   0x00

Definition at line 410 of file System.cpp.

◆ MAP_LIQUID_TYPE_OCEAN

#define MAP_LIQUID_TYPE_OCEAN   0x02

Definition at line 412 of file System.cpp.

◆ MAP_LIQUID_TYPE_SLIME

#define MAP_LIQUID_TYPE_SLIME   0x08

Definition at line 414 of file System.cpp.

◆ MAP_LIQUID_TYPE_WATER

#define MAP_LIQUID_TYPE_WATER   0x01

Definition at line 411 of file System.cpp.

◆ MAP_LIQUID_TYPE_WMO_WATER

#define MAP_LIQUID_TYPE_WMO_WATER   0x20

Definition at line 417 of file System.cpp.

◆ NEW_BASE_SET_BUILD

#define NEW_BASE_SET_BUILD   15211

Definition at line 105 of file System.cpp.

Referenced by LoadCommonMPQFiles(), and LoadLocaleMPQFile().

◆ OPEN_FLAGS

#define OPEN_FLAGS   (O_RDONLY | O_BINARY)

Definition at line 46 of file System.cpp.

Enumeration Type Documentation

◆ Extract

enum Extract
Enumerator
EXTRACT_MAP 
EXTRACT_DBC 
EXTRACT_CAMERA 

Definition at line 68 of file System.cpp.

Function Documentation

◆ ConvertADT()

bool ConvertADT ( char * filename,
char * filename2,
int ,
int ,
uint32 build )

Definition at line 459 of file System.cpp.

References ADT_CELL_SIZE, ADT_CELLS_PER_GRID, ADT_GRID_SIZE, area_flags, adt_MCNK::areaid, map_fileheader::areaMapOffset, map_fileheader::areaMapSize, areas, map_fileheader::buildMagic, ChunkedFile::chunks, CONF_allow_float_to_int, CONF_allow_height_limit, CONF_flat_height_delta_limit, CONF_flat_liquid_delta_limit, CONF_float_to_int16_limit, CONF_float_to_int8_limit, CONF_use_minHeight, adt_MCLQ::flags, adt_MCNK::flags, map_areaHeader::flags, map_heightHeader::flags, map_liquidHeader::flags, map_areaHeader::fourcc, map_heightHeader::fourcc, map_liquidHeader::fourcc, ChunkedFile::GetChunk(), adt_MH2O::getLiquidData(), adt_MH2O::getLiquidHeightMap(), adt_MH2O::getLiquidLightMap(), adt_MH2O::getLiquidShowMap(), map_areaHeader::gridArea, map_heightHeader::gridHeight, map_heightHeader::gridMaxHeight, adt_liquid_header::height, adt_MCLQ::liquid_data::height, map_liquidHeader::height, adt_MCVT::height_map, adt_liquid_header::heightLevel1, map_fileheader::heightMapOffset, map_fileheader::heightMapSize, adt_MCNK::holes, holes, map_fileheader::holesOffset, map_fileheader::holesSize, adt_MCNK::ix, adt_MCNK::iy, LiqType, adt_MCLQ::liquid, liquid_entry, liquid_flags, liquid_height, liquid_show, LIQUID_TYPE_MAGMA, LIQUID_TYPE_OCEAN, LIQUID_TYPE_SLIME, LIQUID_TYPE_WATER, map_liquidHeader::liquidLevel, map_fileheader::liquidMapOffset, map_fileheader::liquidMapSize, adt_liquid_header::liquidType, map_liquidHeader::liquidType, ChunkedFile::loadFile(), MAP_AREA_MAGIC, MAP_AREA_NO_AREA, MAP_HEIGHT_AS_INT16, MAP_HEIGHT_AS_INT8, MAP_HEIGHT_MAGIC, MAP_HEIGHT_NO_HEIGHT, MAP_LIQUID_MAGIC, MAP_LIQUID_NO_HEIGHT, MAP_LIQUID_NO_TYPE, MAP_LIQUID_TYPE_DARK_WATER, MAP_LIQUID_TYPE_MAGMA, MAP_LIQUID_TYPE_OCEAN, MAP_LIQUID_TYPE_SLIME, MAP_LIQUID_TYPE_WATER, MAP_MAGIC, MAP_VERSION_MAGIC, map_fileheader::mapMagic, maxAreaId, map_liquidHeader::offsetX, map_liquidHeader::offsetY, selectUInt16StepStore(), selectUInt8StepStore(), adt_MCNK::sizeMCLQ, uint16_V8, uint16_V9, uint8_V8, uint8_V9, V8, V9, map_fileheader::versionMagic, adt_liquid_header::width, map_liquidHeader::width, WorldMpq, adt_liquid_header::xOffset, adt_liquid_header::yOffset, and adt_MCNK::ypos.

Referenced by ExtractMapsFromMpq().

◆ CreateDir()

void CreateDir ( std::string const & path)

◆ ExtractCameraFiles()

void ExtractCameraFiles ( int locale,
bool basicLocale )

◆ ExtractDB2Files()

void ExtractDB2Files ( int l,
bool basicLocale )

Definition at line 1172 of file System.cpp.

References CreateDir(), ExtractFile(), LocaleMpq, Locales, and output_path.

Referenced by main().

◆ ExtractDBCFiles()

void ExtractDBCFiles ( int l,
bool basicLocale )

Definition at line 1054 of file System.cpp.

References CreateDir(), ExtractFile(), FileExists(), LocaleMpq, Locales, and output_path.

Referenced by main().

◆ ExtractFile()

bool ExtractFile ( HANDLE fileInArchive,
char const * filename )

Definition at line 1031 of file System.cpp.

Referenced by ExtractCameraFiles(), ExtractDB2Files(), and ExtractDBCFiles().

◆ ExtractMapsFromMpq()

◆ FileExists()

bool FileExists ( TCHAR const * fileName)

Definition at line 147 of file System.cpp.

Referenced by ExtractCameraFiles(), ExtractDBCFiles(), and ExtractSingleModel().

◆ HandleArgs()

void HandleArgs ( int argc,
char * arg[] )

Definition at line 173 of file System.cpp.

References CONF_allow_float_to_int, CONF_extract, CONF_TargetBuild, input_path, output_path, and Usage().

Referenced by main().

◆ LoadCommonMPQFiles()

void LoadCommonMPQFiles ( uint32 build)

Definition at line 1322 of file System.cpp.

References Builds, CONF_mpq_list, CONF_TargetBuild, ERROR_PATH_NOT_FOUND, input_path, NEW_BASE_SET_BUILD, and WorldMpq.

Referenced by main().

◆ LoadLocaleMPQFile()

bool LoadLocaleMPQFile ( int locale)

Definition at line 1218 of file System.cpp.

References Builds, CONF_TargetBuild, ERROR_PATH_NOT_FOUND, input_path, LocaleMpq, and LocalesT.

Referenced by main().

◆ main()

◆ ReadAreaTableDBC()

◆ ReadBuild()

uint32 ReadBuild ( int locale)

Definition at line 228 of file System.cpp.

References LocaleMpq, and Locales.

Referenced by main().

◆ ReadLiquidTypeTableDBC()

void ReadLiquidTypeTableDBC ( )

◆ ReadMapDBC()

◆ selectUInt16StepStore()

float selectUInt16StepStore ( float maxDiff)

Definition at line 439 of file System.cpp.

Referenced by ConvertADT().

◆ selectUInt8StepStore()

float selectUInt8StepStore ( float maxDiff)

Definition at line 434 of file System.cpp.

Referenced by ConvertADT().

◆ Usage()

void Usage ( char const * prg)

Definition at line 159 of file System.cpp.

References CONF_TargetBuild.

Referenced by HandleArgs().

Variable Documentation

◆ area_flags

Definition at line 444 of file System.cpp.

Referenced by ConvertADT().

◆ areas

uint16* areas

Definition at line 59 of file System.cpp.

Referenced by ConvertADT(), ExtractMapsFromMpq(), and ReadAreaTableDBC().

◆ Builds

uint32 const Builds[] = {16016, 16048, 16057, 16309, 16357, 16516, 16650, 16844, 16965, 17116, 17266, 17325, 17345, 17538, 17645, 17688, 17898, 18273}

Definition at line 103 of file System.cpp.

Referenced by LoadCommonMPQFiles(), and LoadLocaleMPQFile().

◆ CONF_allow_float_to_int

bool CONF_allow_float_to_int = false

Definition at line 83 of file System.cpp.

Referenced by ConvertADT(), and HandleArgs().

◆ CONF_allow_height_limit

bool CONF_allow_height_limit = true

Definition at line 79 of file System.cpp.

Referenced by ConvertADT().

◆ CONF_extract

int CONF_extract = EXTRACT_MAP | EXTRACT_DBC | EXTRACT_CAMERA

Definition at line 76 of file System.cpp.

Referenced by HandleArgs(), and main().

◆ CONF_flat_height_delta_limit

float CONF_flat_height_delta_limit = 0.005f

Definition at line 86 of file System.cpp.

Referenced by ConvertADT().

◆ CONF_flat_liquid_delta_limit

float CONF_flat_liquid_delta_limit = 0.001f

Definition at line 87 of file System.cpp.

Referenced by ConvertADT().

◆ CONF_float_to_int16_limit

float CONF_float_to_int16_limit = 2048.0f

Definition at line 85 of file System.cpp.

Referenced by ConvertADT().

◆ CONF_float_to_int8_limit

float CONF_float_to_int8_limit = 2.0f

Definition at line 84 of file System.cpp.

Referenced by ConvertADT().

◆ CONF_mpq_list

char const* CONF_mpq_list[]
Initial value:
=
{
"world.MPQ",
"model.MPQ",
"misc.MPQ",
"expansion1.MPQ",
"expansion2.MPQ",
"expansion3.MPQ",
"expansion4.MPQ"
}

Definition at line 92 of file System.cpp.

Referenced by LoadCommonMPQFiles().

◆ CONF_TargetBuild

uint32 CONF_TargetBuild = 18273

◆ CONF_use_minHeight

float CONF_use_minHeight = -500.0f

Definition at line 80 of file System.cpp.

Referenced by ConvertADT().

◆ holes

◆ input_path

char input_path[128] = "."

◆ LiqType

uint16* LiqType

Definition at line 60 of file System.cpp.

Referenced by ConvertADT(), main(), ReadLiquidTypeTableDBC(), and ReadLiquidTypeTableDBC().

◆ liquid_entry

Definition at line 453 of file System.cpp.

Referenced by ConvertADT().

◆ liquid_flags

Definition at line 454 of file System.cpp.

Referenced by ConvertADT().

◆ liquid_height

float liquid_height[ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]

Definition at line 456 of file System.cpp.

Referenced by ConvertADT().

◆ liquid_show

bool liquid_show[ADT_GRID_SIZE][ADT_GRID_SIZE]

Definition at line 455 of file System.cpp.

Referenced by ConvertADT().

◆ LocaleMpq

◆ Locales

char const* Locales[LOCALES_COUNT]
Initial value:
=
{
"enGB", "enUS",
"deDE", "esES",
"frFR", "koKR",
"zhCN", "zhTW",
"enCN", "enTW",
"esMX", "ruRU",
"ptBR", "ptPT",
"itIT",
}

Definition at line 108 of file System.cpp.

Referenced by ExtractCameraFiles(), ExtractDB2Files(), ExtractDBCFiles(), LoadLocaleMPQFile(), main(), main(), and ReadBuild().

◆ LocalesT

TCHAR const* LocalesT[LOCALES_COUNT]
Initial value:
=
{
_T("enGB"), _T("enUS"),
_T("deDE"), _T("esES"),
_T("frFR"), _T("koKR"),
_T("zhCN"), _T("zhTW"),
_T("enCN"), _T("enTW"),
_T("esMX"), _T("ruRU"),
_T("ptBR"), _T("ptPT"),
_T("itIT"),
}

Definition at line 120 of file System.cpp.

Referenced by LoadLocaleMPQFile(), and ReadLiquidTypeTableDBC().

◆ MAP_AREA_MAGIC

char const* MAP_AREA_MAGIC = "AREA"
static

Definition at line 370 of file System.cpp.

Referenced by ConvertADT().

◆ MAP_HEIGHT_MAGIC

char const* MAP_HEIGHT_MAGIC = "MHGT"
static

Definition at line 371 of file System.cpp.

Referenced by ConvertADT().

◆ map_ids

map_id* map_ids

Definition at line 58 of file System.cpp.

Referenced by ExtractMapsFromMpq(), main(), ParsMapFiles(), and ReadMapDBC().

◆ MAP_LIQUID_MAGIC

char const* MAP_LIQUID_MAGIC = "MLIQ"
static

Definition at line 372 of file System.cpp.

Referenced by ConvertADT().

◆ MAP_MAGIC

char const* MAP_MAGIC = "MAPS"
static

Definition at line 368 of file System.cpp.

Referenced by ConvertADT().

◆ MAP_VERSION_MAGIC

char const* MAP_VERSION_MAGIC = "v1.4"
static

Definition at line 369 of file System.cpp.

Referenced by ConvertADT().

◆ maxAreaId

uint32 maxAreaId = 0

Definition at line 63 of file System.cpp.

Referenced by ConvertADT(), and ReadAreaTableDBC().

◆ output_path

char output_path[128] = "."

◆ uint16_V8

Definition at line 448 of file System.cpp.

Referenced by ConvertADT().

◆ uint16_V9

Definition at line 449 of file System.cpp.

Referenced by ConvertADT().

◆ uint8_V8

Definition at line 450 of file System.cpp.

Referenced by ConvertADT().

◆ uint8_V9

Definition at line 451 of file System.cpp.

Referenced by ConvertADT().

◆ V8

Definition at line 446 of file System.cpp.

Referenced by ConvertADT(), and MMAP::TerrainBuilder::loadMap().

◆ V9

float V9[ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]

Definition at line 447 of file System.cpp.

Referenced by ConvertADT(), and MMAP::TerrainBuilder::loadMap().

◆ WorldMpq