Exemple #1
0
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;
            }
        }
    }
}
Exemple #2
0
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;
			}
		}
	}
}