static void ParseOuter () { int bracedepth = 0; bool ifskip = false; while (SC_GetString ()) { if (ifskip) { if (bracedepth > 0) { if (SC_Compare ("}")) { bracedepth--; continue; } } else if (SC_Compare ("endif")) { ifskip = false; continue; } if (SC_Compare ("{")) { bracedepth++; } else if (SC_Compare ("}")) { SC_ScriptError ("Too many left braces ('}')"); } } else { switch (SC_MustMatchString (OuterKeywords)) { case OUT_SPLASH: ParseSplash (); break; case OUT_TERRAIN: ParseTerrain (); break; case OUT_FLOOR: ParseFloor (); break; case OUT_IFDOOM: if (gameinfo.gametype != GAME_Doom) { ifskip = true; } break; case OUT_IFHERETIC: if (gameinfo.gametype != GAME_Heretic) { ifskip = true; } break; case OUT_IFHEXEN: if (gameinfo.gametype != GAME_Hexen) { ifskip = true; } break; case OUT_IFSTRIFE: if (gameinfo.gametype != GAME_Strife) { ifskip = true; } break; case OUT_ENDIF: break; } } } }
static void ParseOuter (FScanner &sc) { int bracedepth = 0; bool ifskip = false; while (sc.GetString ()) { if (ifskip) { if (bracedepth > 0) { if (sc.Compare ("}")) { bracedepth--; continue; } } else if (sc.Compare ("endif")) { ifskip = false; continue; } if (sc.Compare ("{")) { bracedepth++; } else if (sc.Compare ("}")) { sc.ScriptError ("Too many left braces ('}')"); } } else { switch (sc.MustMatchString (OuterKeywords)) { case OUT_SPLASH: ParseSplash (sc); break; case OUT_TERRAIN: ParseTerrain (sc); break; case OUT_FLOOR: ParseFloor (sc); break; case OUT_DEFAULTTERRAIN: ParseDefault (sc); break; case OUT_IFDOOM: case OUT_IFHERETIC: case OUT_IFHEXEN: case OUT_IFSTRIFE: ifskip = !CheckGame(sc.String+2, true); break; case OUT_ENDIF: break; } } } }