⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adt.h

📁 魔兽解压DBC的一些功能代码,专门用来分解魔兽客户端所使用的代码
💻 H
字号:
#ifndef ADT_H
#define ADT_H

#define TILESIZE (533.33333f)
#define CHUNKSIZE ((TILESIZE) / 16.0f)
#define UNITSIZE (CHUNKSIZE / 8.0f)

typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned int uint32;
class Liquid;
typedef struct {
    float x;
    float y;
    float z;
} svec;

typedef struct {
    double x;
    double y;
    double z;
} vec;

typedef struct{
    vec v[3];
} triangle;

typedef struct{
    float v9[16*8+1][16*8+1];
    float v8[16*8][16*8];
} Cell;

typedef struct{
    double v9[9][9];
    double v8[8][8];
    uint16 area_id;
} chunk;

class WMO;
class WMOManager;
void fixname(std::string &name);

typedef struct
{
    chunk ch[16][16];
} mcell;

struct MapChunkHeader {
    uint32 flags;
    uint32 ix;
    uint32 iy;
    uint32 nLayers;
    uint32 nDoodadRefs;
    uint32 ofsHeight;
    uint32 ofsNormal;
    uint32 ofsLayer;
    uint32 ofsRefs;
    uint32 ofsAlpha;
    uint32 sizeAlpha;
    uint32 ofsShadow;
    uint32 sizeShadow;
    uint32 areaid;
    uint32 nMapObjRefs;
    uint32 holes;
    uint16 s1;
    uint16 s2;
    uint32 d1;
    uint32 d2;
    uint32 d3;
    uint32 predTex;
    uint32 nEffectDoodad;
    uint32 ofsSndEmitters;
    uint32 nSndEmitters;
    uint32 ofsLiquid;                                       // not use in WotLK
    uint32 sizeLiquid;                                      // not use in WotLK
    float  zpos;
    float  xpos;
    float  ypos;
    uint32 textureId;                                       // new offsColorValues in WotLK
    uint32 props;
    uint32 effectId;
};

typedef struct {
    uint32 offsData1;
    uint32 used;
    uint32 offsData2;
} MH2O_offsData;

typedef struct {
    uint16 LiquidTypeId;
    uint16 type;
    float heightLevel1;
    float heightLevel2;
    uint8 xOffset;
    uint8 yOffset;
    uint8 width;
    uint8 height;
    uint32 ofsData2a;
    uint32 ofsData2b;
} MH2O_Data1;

enum LiquidType
{
    LIQUID_TYPE_WATER = 0,
    LIQUID_TYPE_OCEAN = 1,
    LIQUID_TYPE_MAGMA = 2,
    LIQUID_TYPE_SLIME = 3
};

class MPQFile;

bool MH2O_presence;
MH2O_offsData *LiqOffsData;
MH2O_Data1 *LiqChunkData1;
float *ChunkLiqHeight, *MapLiqHeight;
uint8* MapLiqFlag;
uint32 k, m, chunk_num;
void LoadMapChunk(MPQFile &, chunk*);
bool LoadWMO(char* filename);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -