private void ParseHeader(Tokenizer levelTokens) { levelTokens.EnsureNextToken("LEV"); levelTokens.RequireNextToken(); // skip version. levelTokens.EnsureNextToken("LEVELNAME"); _name = levelTokens.RequireNextToken(); levelTokens.EnsureNextToken("PALETTE"); _pal = levelTokens.RequireNextToken(); levelTokens.EnsureNextToken("MUSIC"); _music = levelTokens.RequireNextToken(); levelTokens.EnsureNextToken("PARALLAX"); _parallax.x = levelTokens.RequireNextFloat(); _parallax.y = levelTokens.RequireNextFloat(); }
private void ParseSectorVertices(Sector sector, Tokenizer levelTokens) { levelTokens.EnsureNextToken("VERTICES"); int numVerts = levelTokens.RequireNextInt(); for (int i = 0; i < numVerts; ++i) { Vector2 v; levelTokens.EnsureNextToken("X:"); v.x = levelTokens.RequireNextFloat(); levelTokens.EnsureNextToken("Z:"); v.y = levelTokens.RequireNextFloat(); sector.Vertices.Add(v); } }
private WallTex ParseWallTex(string name, Tokenizer levelTokens, bool trailing) { levelTokens.EnsureNextToken(name); WallTex tex = new WallTex(); tex.Texture = levelTokens.RequireNextInt(); tex.ShiftX = levelTokens.RequireNextFloat(); tex.ShiftY = levelTokens.RequireNextFloat(); if (trailing) { levelTokens.RequireNextInt(); } return tex; }
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; }