1 #define __STORMLIB_SELF__
6 char * wdtGetPlainName(char * FileName
)
10 if((szTemp
= strrchr(FileName
, '\\')) != NULL
)
11 FileName
= szTemp
+ 1;
15 WDTFile::WDTFile(char* file_name
, char* file_name1
):WDT(file_name
)
17 filename
.append(file_name1
,strlen(file_name1
));
20 bool WDTFile::init(char *map_id
)
24 //printf("Can't find WDT file.\n");
31 const char dirname
[] = "buildings\\dir";
33 dirfile
= fopen(dirname
, "ab");
36 printf("Can't open dirfile!'%s'\n");
48 size_t nextpos
= WDT
.getPos() + size
;
50 if (!strcmp(fourcc
,"MAIN"))
53 if (!strcmp(fourcc
,"MWMO"))
58 char *buf
= new char[size
];
62 gWmoInstansName
= new string
[size
];
66 char* s
=wdtGetPlainName(p
);
67 fixnamen(s
,strlen(s
));
69 gWmoInstansName
[q
++] = s
;
74 else if (!strcmp(fourcc
,"MODF"))
76 // global wmo instance data
79 gnWMO
= (int)size
/ 64;
82 fake_mapname
= "65 65 ";
83 //gWMO_mapname = fake_mapname + filename;
84 gWMO_mapname
= fake_mapname
+ std::string(map_id
);
85 for (int i
=0; i
<gnWMO
; ++i
)
89 WMOInstance
inst(WDT
,gWmoInstansName
[id
].c_str(),gWMO_mapname
.c_str(), dirfile
);
91 delete[] gWmoInstansName
;
94 WDT
.seek((int)nextpos
);
102 WDTFile::~WDTFile(void)
107 ADTFile
* WDTFile::GetMap(int x
, int z
)
109 if(!(x
>=0 && z
>= 0 && x
<64 && z
<64))
114 sprintf(name
,"World\\Maps\\%s\\%s_%d_%d.adt", filename
.c_str(), filename
.c_str(), x
, z
);
115 return new ADTFile(name
);