Skip to content

Commit bc7c1a0

Browse files
committed
Fix entity parsing
1 parent 9268777 commit bc7c1a0

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

src/IW4/Assets/AddonMapEnts.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@ namespace ZoneTool
3030
auto ents = mem->Alloc<AddonMapEnts>();
3131

3232
ents->name = mem->StrDup(name);
33-
ents->numEntityChars = FileSystem::FileSize(file);
33+
ents->numEntityChars = FileSystem::FileSize(file) + 1;
3434

35-
ents->entityString = mem->Alloc<char>(ents->numEntityChars + 1);
35+
ents->entityString = mem->Alloc<char>(ents->numEntityChars);
3636
memset((char*)ents->entityString, 0, ents->numEntityChars);
37-
fread((char*)ents->entityString, ents->numEntityChars, 1, file);
38-
ents->numEntityChars++;
37+
fread((char*)ents->entityString, ents->numEntityChars - 1, 1, file);
3938

4039
// convert the mapents!
4140
IMapEnts::ConvertEnts(reinterpret_cast<MapEnts*>(ents), mem);

src/IW4/Assets/ClipMap.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ namespace ZoneTool
109109

110110
void IClipMap::init(const std::string& name, ZoneMemory* mem)
111111
{
112-
this->name_ = "maps/"s + (currentzone.substr(0, 3) == "mp_" ? "mp/" : "") + ".d3dbsp"; // name;
112+
this->name_ = "maps/"s + (currentzone.substr(0, 3) == "mp_" ? "mp/" : "") + currentzone + ".d3dbsp"; // name;
113113
this->asset_ = this->parse(name, mem);
114114
this->m_filename = name;
115115

@@ -197,7 +197,7 @@ namespace ZoneTool
197197

198198
std::int32_t IClipMap::type()
199199
{
200-
return col_map_mp;
200+
return col_map_sp;
201201
}
202202

203203
void IClipMap::write(IZone* zone, ZoneBuffer* buf)

src/IW4/Assets/MapEnts.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,11 @@ namespace ZoneTool
191191
// replace mapents if needed
192192
if (!newEntsString.empty())
193193
{
194-
ents->numEntityChars = newEntsString.size();
195-
ents->entityString = mem->Alloc<char>(ents->numEntityChars + 1);
196-
memcpy((void*)ents->entityString, &newEntsString[0], ents->numEntityChars);
194+
ents->numEntityChars = newEntsString.size() + 1;
195+
ents->entityString = mem->Alloc<char>(ents->numEntityChars);
196+
memset((void*)ents->entityString, 0, ents->numEntityChars);
197+
memcpy((void*)ents->entityString, &newEntsString[0], ents->numEntityChars - 1);
197198
}
198-
199-
//auto fp_ = fopen("output.d3dbsp.ents", "wb");
200-
//fwrite(ents->entityString, ents->numEntityChars, 1, fp_);
201-
//fclose(fp_);
202199
}
203200

204201
/*legacy zonetool code, refactor me!*/
@@ -281,7 +278,7 @@ namespace ZoneTool
281278

282279
void IMapEnts::init(const std::string& name, ZoneMemory* mem)
283280
{
284-
this->name_ = "maps/mp/" + currentzone + ".d3dbsp"; // name;
281+
this->name_ = "maps/"s + (currentzone.substr(0, 3) == "mp_" ? "mp/" : "") + currentzone + ".d3dbsp"; // name;
285282
this->asset_ = this->parse(name, mem);
286283

287284
if (!this->asset_)

0 commit comments

Comments
 (0)