-
Notifications
You must be signed in to change notification settings - Fork 15
Zone
SirKane edited this page Mar 8, 2013
·
3 revisions
Map data.
typedef struct _SZoneHdr{ char FourCC[4]; //ZONE char Pad0[0x24-8]; UINT32 QuadsPerTile; float TileSize; UINT32 Unk1; UINT32 VertsPerTile; //? UINT32 TilesPerChunk; //8 INT32 StartX; //-64, etc INT32 StartY; UINT32 ChunksX; //128 UINT32 ChunksY; UINT32 EcoCount; } SZoneHdr, *lpSZoneHdr;
void ZoneTest(){ UINT32 i, j, c, k, c2, tmp; CDynMemoryBuffer buf(8192); LoadFileToBuffer("C:\Indar.zone", buf); CDynMemoryBuffer::CDynMemoryReader r(&buf); SZoneHdr hdr; r.Get(&hdr); float f; const char* s; bool b; UINT8 u8; D3DXVECTOR3 v; D3DXVECTOR4 trans, rot, scale; for (i = 0; i < hdr.EcoCount; i++){ r.Get(&tmp); s = r.GetZTString(); //Name s = r.GetZTString(); //ColorNxMap s = r.GetZTString(); //SpecNyMap r.Get(&c); //Detail repeat
r.Get(&f); //BlendStrength
r.Get(&f); //SpecMin
r.Get(&f); //SpecMax
r.Get(&f); //SpecSmoothnessMin
r.Get(&f); //SpecSmoothnessMax
s = r.GetZTString(); //PhysicsMaterial
r.Get(&c); //LayerCount
for (j = 0; j < c; j++){
r.Get(&f); //Density
r.Get(&f); //MinScale
r.Get(&f); //MaxScale
r.Get(&f); //SlopePeak
r.Get(&f); //SlopeExtent
r.Get(&f); //MinElevation
r.Get(&f); //MaxElevation
r.GetZTString(); //Flora
r.Get(&c2); //TintCount
for (k = 0; k < c2; k++){
r.Get(&tmp); //Unknown
r.Get(&tmp); //Unknown
}
}
}
//Flora
r.Get(&c); //Flora count
for (i = 0; i < c; i++){
s = r.GetZTString(); //Name
s = r.GetZTString(); //Texture?
s = r.GetZTString(); //Model file
r.Get(&b); //Unknown
r.Get(&f); //unknown
r.Get(&f); //Unknown
}
//Invis walls, indar doesn't have any, so not parsing
r.Get(&c); //Invis wall count, 0 for indar.zone at time of testing
//Runtime objects
r.Get(&c); //Count
for (i = 0; i < c; i++){
s = r.GetZTString(); //.adr file name
r.Get(&f); //Unknown
r.Get(&c2); //Placement count
for (j = 0; j < c2; j++){
//Translation (in first three components)
for (k = 0; k < 4; k++){
r.Get(&f);
}
//Rotation
for (k = 0; k < 4; k++){
r.Get(&f);
}
//Scale (in first three components)
for (k = 0; k < 4; k++){
r.Get(&f);
}
r.Get(&tmp); //Unknown
r.Get(&u8); //Unknown
r.Get(&f); //Unknown
}
}
//Lights
r.Get(&c);
for (i = 0; i < c; i++){
s = r.GetZTString(); //Name
s = r.GetZTString(); //Color/texture
//r.Get(&tmp);
//r.Get(&u8);
/*for (k = 0; k < 4; k++){
r.Get(&f);
}
for (k = 0; k < 4; k++){
r.Get(&f);
}*/
r.GetPtr(70); //70 bytes of unknown data, 32 bytes starting at 5 might be translation and rotation
s = r.GetZTString(); //Unknown
r.Get(&tmp);
}
//Unknown data
r.Get(&c);
}