private Sector ParseSectorHeader(Tokenizer levelTokens)
{
Sector sector = new Sector();
levelTokens.EnsureNextToken("NAME");
string sectorName = levelTokens.GetNextToken();
if (sectorName != "AMBIENT") {
sector.Name = sectorName;
} else { // unnamed sector
levelTokens.UngetToken();
}
levelTokens.EnsureNextToken("AMBIENT");
sector.Ambient = levelTokens.RequireNextInt();
levelTokens.EnsureNextToken("FLOOR");
levelTokens.EnsureNextToken("TEXTURE");
sector.FloorTex = levelTokens.RequireNextInt();
sector.FloorShiftX = levelTokens.RequireNextFloat();
sector.FloorShiftZ = levelTokens.RequireNextFloat();
levelTokens.RequireNextInt();
levelTokens.EnsureNextToken("FLOOR");
levelTokens.EnsureNextToken("ALTITUDE");
sector.FloorAlt = -levelTokens.RequireNextFloat();
levelTokens.EnsureNextToken("CEILING");
levelTokens.EnsureNextToken("TEXTURE");
sector.CeilTex = levelTokens.RequireNextInt();
sector.CeilShiftX = levelTokens.RequireNextFloat();
sector.CeilShiftZ = levelTokens.RequireNextFloat();
levelTokens.RequireNextInt();
levelTokens.EnsureNextToken("CEILING");
levelTokens.EnsureNextToken("ALTITUDE");
sector.CeilAlt = -levelTokens.RequireNextFloat();
levelTokens.EnsureNextToken("SECOND");
levelTokens.EnsureNextToken("ALTITUDE");
sector.SecondAlt = -levelTokens.RequireNextFloat();
levelTokens.EnsureNextToken("FLAGS");
sector.Flags0 = (Sector.EFlags0)levelTokens.RequireNextInt();
sector.Flags1 = levelTokens.RequireNextInt();
sector.Flags2 = levelTokens.RequireNextInt();
levelTokens.EnsureNextToken("LAYER");
sector.Layer = levelTokens.RequireNextInt();
return sector;
}