DEFAULTLISTMENU
{
	Font "BigFont", "Untranslated"
	LineSpacing 20
}

//-------------------------------------------------------------------------------------------
//
// Main Memu
//
//-------------------------------------------------------------------------------------------

LISTMENU "MainMenu"
{
	Size 320, 200
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{
		position 160, 55
		Linespacing 20
		animatedtransition
		DukeLogo
		DukeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		//DukeTextItem "$MNU_NEWGAME", "m", "MultiMenu" // In EDuke this replaces "New Game" when in networking mode. Kept here as a reminder.
		DukeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		DukeTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
		DukeTextItem "$MNU_HELP", "h", "HelpMenu"
		DukeTextItem "$MNU_CREDITS", "c", "CreditsMenu"
		DukeTextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
	ifgame(Blood)
	{
		CaptionItem "Blood"
		position 160, 45
		Linespacing 20
		BloodTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		//BloodTextItem "$MNU_MULTIPLAYER", "m", "MultiMenu"
		BloodTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
		BloodTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		BloodTextItem "$MNU_HELP", "h", "HelpMenu"
		BloodTextItem "$MNU_CREDITS", "c", "CreditsMenu"
		BloodTextItem "$MNU_QUITGAME", "q", "QuitMenu"
		BloodDripDrawer
		animated
	}
	ifgame(ShadowWarrior)
	{
		Position 55, 32
		Linespacing 17
		class SWMainMenu
		SWLogo
		SWTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		SWTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		SWTextItem "$MNU_SAVEGAME", "s", "none"
		SWTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
		ifnotgame (shareware)
		{
			SWTextItem "$MNU_CREDITS", "c", "CreditsMenu"
		}
		else
		{
			SWTextItem "$MNU_HOWTOORDER", "h", "CreditsMenu"
		}
		SWTextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
	ifgame(Exhumed)
	{
		class ExhumedMainMenu
		Position 160, 65
		linespacing 22
		Animated
		ExhumedPlasma
		ExhumedTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		ExhumedTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		//ExhumedTextItem "$TXT_EX_MAP00", "m", "StartGameNoSkill", 1
		ExhumedTextItem "$MNU_OPTIONS", "v", "OptionsMenu"
		ExhumedTextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
}

//-------------------------------------------------------------------------------------------
//
// Ingame Memu (same as above with a few more options)
//
//-------------------------------------------------------------------------------------------

LISTMENU "IngameMenu"
{
	Size 320, 200
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{
		position 160, 55
		linespacing 18
		animatedtransition
		DukeLogo
		DukeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		DukeTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
		DukeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		DukeTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
		DukeTextItem "$MNU_HELP", "h", "HelpMenu"
		DukeTextItem "$MNU_ENDGAME", "e", "EndgameMenu"
		DukeTextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
	ifgame(Blood)
	{
		position 160, 45
		CaptionItem "Blood"
		Linespacing 17
		BloodTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		BloodTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
		BloodTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
		BloodTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		BloodTextItem "$MNU_HELP", "h", "HelpMenu"
		BloodTextItem "$MNU_CREDITS", "c", "CreditsMenu"
		BloodTextItem "$MNU_ENDGAME", "e", "EndgameMenu"
		BloodTextItem "$MNU_QUITGAME", "q", "QuitMenu"
		BloodDripDrawer
		animated
	}
	ifgame(ShadowWarrior)
	{
		Position 55, 32
		Linespacing 17
		class SWMainMenu
		SWLogo
		SWTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
		SWTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		SWTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
		SWTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
		ifnotgame (shareware)
		{
			SWTextItem "$MNU_CREDITS", "c", "CreditsMenu"
		}
		else
		{
			SWTextItem "$MNU_HOWTOORDER", "h", "CreditsMenu"
		}
		SWTextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
	ifgame(Exhumed)
	{
		class ExhumedMainMenu
		Position 160, 65
		linespacing 22
		Animated
		ExhumedLogo
		ExhumedTextItem "$MNU_NEWGAME", "n", "EpisodeMenu", 0
		ExhumedTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
		ExhumedTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
		//ExhumedTextItem "$TXT_EX_MAP00", "m", "StartGameNoSkill", 1
		ExhumedTextItem "$MNU_OPTIONS", "v", "OptionsMenu"
		ExhumedTextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
}

//-------------------------------------------------------------------------------------------
//
// Episode and skill menu are filled in programmatically
//
//-------------------------------------------------------------------------------------------

LISTMENU "EpisodeMenu"
{
	Size 320, 200
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{
		position 160, 48
		Linespacing 20
		captionItem "$MNU_SELECTEPISODE"
		animatedtransition
	}
	ifgame(blood)
	{
		position 160, 45
		Linespacing 20
		CaptionItem "$MNU_EPISODES"
		BloodDripDrawer
		animated
	}
	ifgame(ShadowWarrior)
	{
		CaptionItem "$MNU_EPISODES"
		Position 35, 32
		Linespacing 17
	}
	ifgame(Exhumed)
	{
		class ExhumedMainMenu
		Position 160, 65
		linespacing 22
	}
}

LISTMENU "SkillMenu"
{
	Size 320, 200
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{
		position 160, 48
		Linespacing 20
		captionItem "$MNU_SELECTSKILL"
		animatedtransition
	}
	ifgame(blood)
	{
		position 160, 60
		Linespacing 20
		CaptionItem "$MNU_DIFFICULTY"
		BloodDripDrawer
		animated
	}
	ifgame(ShadowWarrior)
	{
		class SWMainMenu
		CaptionItem "$MNU_DIFFICULTY"
		Position 35, 32
		Linespacing 17
	}
	ifgame(Exhumed)
	{
		class ExhumedMainMenu
		Position 160, 65
		linespacing 22
		CaptionItem "$MNU_DIFFICULTY"
	}
}

//-------------------------------------------------------------------------------------------
//
//
//
//-------------------------------------------------------------------------------------------

ImageScroller "HelpMenu"
{
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{

		ImageItem "TEXTSTORY"
		ImageItem "F1HELP"
		ifgame(RedneckRides)
		{
			ImageItem "DRIVABLES"
		}
		animatedtransition
	}
	ifgame(blood)
	{
		// The duplication here is to integrate the alternating versions of HELP3
		QAVDrawer "Help4.qav"
		QAVDrawer "Help5.qav"
		QAVDrawer "Help3.qav"
		QAVDrawer "Help4.qav"
		QAVDrawer "Help5.qav"
		QAVDrawer "Help3b.qav"
		animated
	}
	ifgame(ShadowWarrior)
	{
		// The menu has no default binding, but if someone tries to open it anyway show the cool retro ads that were shipped with the game. :D
		ImageItem "ADSCREEN1"
		ifnotgame (shareware)
		{
			ImageItem "ADSCREEN2"
		}
	}
	ifgame(Exhumed)
	{
		// This is only here to prevent crashes if someone decides to open the menu from the console
		ImageItem "TileBMGLogo"
		ImageItem "TilePIELogo"
	}
}

//-------------------------------------------------------------------------------------------
//
// Credits menu. This is logically highly game specific.
// Note that this has been split into two submenus so that the engine
// credits can be handled in a generic fashion instead of having to define
// them for each game natively.
//
// Engine credits are now in the options menu, i.e. the generic part of the menu.
//
//-------------------------------------------------------------------------------------------

ImageScroller "CreditsMenu"
{
	ifgame(Duke, Nam, WW2GI)
	{
		ifgame(PLUTOPAK)
		{
			ImageItem "CREDITPAGE1"
			ImageItem "CREDITPAGE2"
			ImageItem "CREDITPAGE3"
		}
		else
		{
			DukeCredits1
			DukeCredits2
			DukeCredits3
		}
	}
	ifgame(Redneck)
	{
		// TextBackground "MENUSCREEN"
		TextBackgroundBrightness 0.5
		TextFont "SmallFont"
		TextScale 0.45
		// no point putting this into the string table.
		TextItem "ORIGINAL CONCEPT, DESIGN AND DIRECTION\n\nDREW MARKHAM" //, 80
		TextItem "PRODUCED BY\n\nGREG GOODRICH" //, 80
		TextItem "GAME PROGRAMMING\n\nRAFAEL PAIZ" //, 80
		TextItem "ART DIRECTORS\n\nCLAIRE PRADERIE     MAXX KAUFMAN " //, 80
		TextItem "LEAD LEVEL DESIGNER\nALEX MAYBERRY\n\nLEVEL DESIGN\nMAL BLACKWELL\nSVERRE KVERNMO" //, 60
		TextItem "SENIOR ANIMATOR AND ARTIST\n\nJASON HOOVER" //, 80
		TextItem "TECHNICAL DIRECTOR\n\nBARRY DEMPSEY" //, 80
		TextItem "MOTION CAPTURE SPECIALIST AND\nCHARACTER ANIMATION\nAMIT DORON\n\nA.I. PROGRAMMING\nARTHUR DONAVAN\n\nADDITIONAL ANIMATION\nGEORGE KARL" //, 60
		TextItem "CHARACTER DESIGN\nCORKY LEHMKUHL\n\nMAP PAINTERS\nVIKTOR ANTONOV\nMATTHIAS BEEGUER\nSTEPHAN BURLE\n\nSCULPTORS\nGEORGE ENGEL\nJAKE GARBER\nJEFF HIMMEL" //, 30
		TextItem "CHARACTER VOICES\n\nLEONARD\nBURTON GILLIAM\n\nBUBBA, BILLY RAY, SKINNY OL' COOT\nAND THE TURD MINION\nDREW MARKHAM\n\nSHERIFF LESTER T. HOBBES\nMOJO NIXON\n\nALIEN VIXEN\nPEGGY JO JACOBS" //, 30
		TextItem "SOUND DESIGN\nGARY BRADFIELD\n\nMUSIC\nMOJO NIXON\nTHE BEAT FARMERS\nTHE REVEREND HORTON HEAT\nCEMENT POND\n\nADDITIONAL SOUND EFFECTS\nJIM SPURGIN" //, 30
		TextItem "MOTION CAPTURE ACTOR\nJ.P. MANOUX\n\nMOTION CAPTURE VIXEN\nSHAWN WOLFE" //, 70
		TextItem "PRODUCTION ASSISTANCE\nMINERVA MAYBERRY\n\nNUTS AND BOLTS\nSTEVE GOLDBERG\nMARCUS HUTCHINSON\n\nBEAN COUNTING\nMAX YOSHIKAWA\n\nADMINISTRATIVE ASSISTANCE\nSERAFIN LEWIS" //, 50
		TextItem "LOCATION MANAGER, LOUISIANA\nRICK SKINNER\n\nLOCATION SCOUT, LOUISIANA\nBRIAN BENOS\n\nPHOTOGRAPHER\nCARLOS SERRAO" //, 70
		TextItem "ADDITIONAL 3D MODELING BY\n3 NAME 3D\nVIEWPOINT DATALABS INTERNATIONAL\n\nAUDIO RECORDED AT\nPACIFIC OCEAN POST, SANTA MONICA, C.A.\n\nCEMENT POND TRACKS RECORDED AT\nDREAMSTATE RECORDING, BURBANK, C.A.\n\nRECORDING ENGINEER\nDAVE AHLERT" //, 50
		TextItem "3D BUILD ENGINE LICENSED FROM\n3D REALMS ENTERTAINMENT\n\nBUILD ENGINE AND RELATED TOOLS\nCREATED BY KEN SILVERMAN" //, 80
		TextItem "FOR INTERPLAY\n\nLEAD TESTER\nDARRELL JONES\n\nTESTERS\nTIM ANDERSON\nERICK LUJAN\nTIEN TRAN" //, 60
		TextItem "IS TECHS\nBILL DELK\nAARON MEYERS\n\nCOMPATIBILITY TECHS\nMARC DURAN\nDAN FORSYTH\nDEREK GIBBS\nAARON OLAIZ\nJACK PARKER" //, 60
		TextItem "DIRECTOR OF COMPATIBILITY\nPHUONG NGUYEN\n\nASSISTANT QA DIRECTOR\nCOLIN TOTMAN\n\nQA DIRECTOR\nCHAD ALLISON" //, 70
		TextItem "INTERPLAY PRODUCER\nBILL DUGAN\n\nINTERPLAY LINE PRODUCER\nCHRIS BENSON\n\nPRODUCT MANAGER\nJIM VEEVAERT\n\nPUBLIC RELATIONS\nERIKA PRICE" //, 50
		TextItem "SPECIAL THANKS\n\nJIM GAUER\nPAUL VAIS\nSCOTT MILLER\nTODD REPLOGLE\nCHUCK BUECHE\nCARTER LIPSCOMB\nJOHN CONLEY\nDON MAGGI" //, 60
		TextItem "EXTRA SPECIAL THANKS\n\nBRIAN FARGO" //, 80
		TextItem "REDNECK RAMPAGE\n(c) 1997 XATRIX ENTERTAINMENT, INC.\n\nREDNECK RAMPAGE IS A TRADEMARK OF\nINTERPLAY PRODUCTIONS" //, 60
		animatedtransition
	}
	ifgame(RedneckRides)
	{
		// TextBackground "MENUSCREEN"
		TextBackgroundBrightness 0.5
		TextFont "SmallFont"
		TextScale 0.45
		TextItem "ORIGINAL CONCEPT, DESIGN AND DIRECTION\n\nDREW MARKHAM" //, 80
		TextItem "ART DIRECTION AND ADDITIONAL DESIGN\n\nCORKY LEHMKUHL" //, 80
		TextItem "PRODUCED BY\n\nGREG GOODRICH" //, 80
		TextItem "GAME PROGRAMMING\n\nJOSEPH AURILI" //, 80
		TextItem "ORIGINAL GAME PROGRAMMING\n\nRAFAEL PAIZ" //, 80
		TextItem "LEVEL DESIGN\n\nRHETT BALDWIN & AARON BARBER" //, 80
		TextItem "ORIGINAL ART DIRECTION AND SUPPORT\n\nMAXX KAUFMAN & CLAIRE PRADERIE-MARKHAM" //, 80
		TextItem "COMPUTER GRAPHICS SUPERVISOR &\nCHARACTER ANIMATION DIRECTION\n\nBARRY DEMPSEY" //, 80
		TextItem "SENIOR ANIMATOR & MODELER\n\nJASON HOOVER" //, 80
		TextItem "CHARACTER ANIMATION &\nMOTION CAPTURE SPECIALIST\n\nAMIT DORON" //, 80
		TextItem "SOUND DESIGN &\nMUSIC PRODUCTION COORDINATION\n\nGARY BRADFIELD" //, 80
		TextItem "INTRODUCTION ANIMATION\n\nDOMINIQUE DROZDZ" //, 80
		TextItem "ARTIST\n\nMATTHIAS BEEGUER" //, 80
		TextItem "ADDITIONAL ART\n\nVIKTOR ANTONOV" //, 80
		TextItem "PRODUCTION COORDINATOR\n\nVICTORIA SYLVESTER" //, 80
		TextItem "CHARACTER VOICES\n\nLEONARD\nBURTON GILLIAM\n\nDAISY MAE\nTARA CHARENDOFF\n\nBUBBA, BILLY RAY, SKINNY OL' COOT,\nFRANK THE BIKER, THE TURD MINION\n& ALL OTHER VARIOUS RAMBLINGS...\nDREW MARKHAM" //, 40
		TextItem "SPECIAL APPEARENCE BY\n\nSHERIFF LESTER T. HOBBES\nMOJO NIXON\n\nALIEN VIXEN\nPEGGY JO JACOBS" //, 70
		TextItem "REDNECK RAMPAGE TITLE TRACK & CYBERSEX\nWRITTEN & PERFORMED BY\nMOJO NIXON\n\n(c) MUFFIN'STUFFIN' MUSIC (BMI)\nADMINISTERED BY BUG.", 70
		TextItem "MUSIC\n\nDISGRACELAND\nTINY D & THE SOFA KINGS\n\nBANJO AND GUITAR PICKIN\nJOHN SCHLOCKER\nHOWARD YEARWOOD" //, 60
		TextItem "RECORDING ENGINEER\nDAVE AHLERT\n\nRECORDING ASSISTANCE\nJEFF GILBERT" //, 80
		TextItem "MOTION CAPTURE ACTOR\nJ.P. MANOUX\n\nMOTION CAPTURE ACTRESS\nSHAWN WOLFE" //, 80
		TextItem "THIS GAME COULD NOT HAVE BEEN MADE WITHOUT\nALEX MAYBERRY\nMAL BLACKWELL\n\nNUTS AND BOLTS\nSTEVE GOLDBERG\n\nBEAN COUNTING\nMAX YOSHIKAWA\n\nADMINISTRATIVE ASSISTANCE\nMINERVA MAYBERRY" //, 50
		TextItem "FOR INTERPLAY\n\nPRODUCER\nBILL DUGAN\n\nLINE PRODUCER\nCHRIS BENSON\n\nLEAD TESTER\nDARRELL JONES" //, 60
		TextItem "TESTERS\n\nTIM ANDERSON\nPRIMO PULANCO\nMARK MCCARTY\nBRIAN AXLINE" //, 70
		TextItem "PRODUCTION BABY\n\nPAULINE MARIE MARKHAM" //, 80
		TextItem "ORIGINAL PRODUCTION BABY\n\nALYSON KAUFMAN" //, 80
		TextItem "3D BUILD ENGINE LICENSED FROM\n3D REALMS ENTERTAINMENT\n\nBUILD ENGINE AND RELATED TOOLS\nCREATED BY KEN SILVERMAN" //, 80
		TextItem "SPECIAL THANKS\n\nSCOTT MILLER\nGEORGE BROUSSARD" //, 80
		TextItem "EXTRA SPECIAL THANKS\n\nBRIAN FARGO" //, 80
		TextItem "REDNECK RAMPAGE RIDES AGAIN\n(c) 1998 XATRIX ENTERTAINMENT, INC.\n\nREDNECK RAMPAGE RIDES AGAIN\nIS A TRADEMARK OF\nINTERPLAY PRODUCTIONS" //, 70
		animatedtransition
	}
	ifgame(blood)
	{
		QAVDrawer "Credits.qav"
		animated
	}
	ifgame(ShadowWarrior)
	{
		ifgame (shareware)
		{
			ImageItem "SWORDER1"
			ImageItem "SWORDER2"
		}
		ImageItem "CREDITS1"
		ImageItem "CREDITS2"
		ImageItem "SUPPORT"
		ImageItem "ONLINE"
	}
	ifgame(Exhumed)
	{
		// This is only here to prevent crashes if someone decides to open the menu from the console
		ImageItem "TileBMGLogo"
		ImageItem "TilePIELogo"
	}
}

//-------------------------------------------------------------------------------------------
//
// Base definition for load game menu. Only the configurable part is done here
//
//-------------------------------------------------------------------------------------------

ListMenu "LoadGameMenu"
{
	Position 0, 40
	Class "LoadMenu"	// uses its own implementation
	CaptionItem "$MNU_LOADGAME"
}

//-------------------------------------------------------------------------------------------
//
// Base definition for save game menu. Only the configurable part is done here
//
//-------------------------------------------------------------------------------------------

ListMenu "SaveGameMenu"
{
	Position 0, 40
	Class "SaveMenu"	// uses its own implementation
	CaptionItem "$MNU_SAVEGAME"
}

//-------------------------------------------------------------------------------------------
//
// Base definition for user map menu. Only the configurable part is done here
//
//-------------------------------------------------------------------------------------------

ListMenu "UsermapMenu"
{
	Position 0, 40
	Class "UsermapMenu"	// uses its own implementation
	CaptionItem "$MNU_USERMAP"
}

//-------------------------------------------------------------------------------------------
//
// The generic options menus start here
//
//-------------------------------------------------------------------------------------------

OptionValue "YesNo"
{
	0, "$TXT_NO"
	1, "$TXT_YES"
}

OptionValue "NoYes"
{
	0, "$TXT_YES"
	1, "$TXT_NO"
}

OptionValue "OnOff"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
}

OptionValue "OffOn"
{
	0, "$OPTVAL_ON"
	1, "$OPTVAL_OFF"
}

OptionValue AutoOffOn
{
	-1, "$OPTVAL_AUTO"
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
}

OptionMenuSettings
{
	Linespacing 17
	// todo: implement color themes that fit the games
}

DefaultOptionMenu
{
	Position -20
}

OptionMenu "OptionsMenu" protected
{
	Caption "$MNU_OPTIONS"
	Submenu "$OPTMNU_CONTROLS",			"CustomizeControls"
	Submenu "$OPTMNU_MOUSE",			"MouseOptions"
	Submenu "$OPTMNU_JOYSTICK",			"JoystickOptions"
	StaticText " "
	Submenu "$OPTMNU_PLAYER",			"NewPlayerMenu"
	Submenu "$OPTMNU_SOUND",			"SoundOptions"
	Submenu "$OPTMNU_DISPLAY",			"VideoOptions"
	Submenu "$OPTMNU_VIDEO",			"VideoModeMenu"
	Submenu "$OPTMNU_GAMEPLAY",			"GameplayOptions"
	Submenu "$OPTMNU_MISCELLANEOUS",	"MiscOptions"
	StaticText " "
	Submenu "$OS_TITLE", "os_Menu"
	StaticText " "
	Submenu "$MNU_ENGINECREDITS",		"EngineCredits"
	SafeCommand "$OPTMNU_DEFAULTS",	"reset2defaults"
	SafeCommand	"$OPTMNU_RESETTOSAVED",	"reset2saved"
	//Command "$OPTMNU_CONSOLE",			"menuconsole"
}	

//-------------------------------------------------------------------------------------------
//
// Controls Menu
//
//-------------------------------------------------------------------------------------------

OptionMenu "CustomizeControls" protected
{
	Title "$CNTRLMNU_TITLE"

	Submenu    "$CNTRLMNU_ACTION"      , "ActionControlsMenu"
	Submenu    "$CNTRLMNU_CHAT"        , "ChatControlsMenu"
	Submenu    "$CNTRLMNU_WEAPONS"     , "WeaponsControlMenu"
	Submenu    "$CNTRLMNU_INVENTORY"   , "InventoryControlsMenu"
	Submenu    "$CNTRLMNU_OTHER"       , "OtherControlsMenu"
	Submenu    "$MAPCNTRLMNU_CONTROLS" , "MapControlsMenu" // todo after thorough cleanup
	StaticText ""
	StaticText "$CTRL_PRESET"
	SafeCommand		"$CTRL_DEFAULT",		"controlpreset 0" //engine/defbinds.txt
	SafeCommand		"$CTRL_CLASSIC",		"controlpreset 1" //engine/origbinds.txt
	SafeCommand		"$CTRL_LEFTHANDED",		"controlpreset 2" //engine/leftbinds.txt
}

OptionMenu "ActionControlsMenu" protected
{
	Title "$CNTRLMNU_ACTION_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_ATTACK"           , "+fire"
	ifgame(Blood)
	{
		Control    "$CNTRLMNU_ALTATTACK"        , "+alt_fire"
	}

	StaticText ""
	Control    "$CNTRLMNU_USE"              , "+open"

	StaticText ""
	Control    "$CNTRLMNU_FORWARD"          , "+move_forward"
	Control    "$CNTRLMNU_BACK"             , "+move_backward"
	Control    "$CNTRLMNU_MOVELEFT"         , "+strafe_left"
	Control    "$CNTRLMNU_MOVERIGHT"        , "+strafe_right"

	StaticText ""
	Control    "$CNTRLMNU_TURNLEFT"         , "+turn_left"
	Control    "$CNTRLMNU_TURNRIGHT"        , "+turn_right"
	Control    "$CNTRLMNU_TURN180"          , "turnaround"

	StaticText ""
	Control    "$CNTRLMNU_JUMP"             , "+jump"
	Control    "$CNTRLMNU_CROUCH"           , "+crouch"
	Control    "$CNTRLMNU_TOGGLECROUCH"     , "+toggle_crouch"

	StaticText ""
	Control    "$CNTRLMNU_MOUSELOOK"        , "+mouse_aiming"
	Control    "$CNTRLMNU_MLOOKTOGGLE"		, "togglemouseaim"

	Control    "$CNTRLMNU_AIMUP"           , "+aim_up"
	Control    "$CNTRLMNU_AIMDOWN"         , "+aim_down"
	Control    "$CNTRLMNU_LOOKUP"           , "+look_up"
	Control    "$CNTRLMNU_LOOKDOWN"         , "+look_down"
	Control    "$CNTRLMNU_LOOKLEFT"           , "+look_left"
	Control    "$CNTRLMNU_LOOKRIGHT"         , "+look_right"
	Control    "$CNTRLMNU_CENTERVIEW"       , "centerview"

	StaticText ""
	Control    "$CNTRLMNU_RUN"              , "+run"
	Control    "$CNTRLMNU_TOGGLERUN"        , "toggle cl_autorun"
	Control    "$CNTRLMNU_STRAFE"           , "+strafe"

	// For later. Currently we have no working multiplayer.
	//StaticText ""
	//Control    "$CNTRLMNU_SCOREBOARD"       , "+show_dukematch_scores"
}

OptionMenu "ChatControlsMenu" protected
{
	Title "$CNTRLMNU_CHAT_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_SAY"     , "messagemode"
}

OptionMenu "WeaponsControlMenu" protected
{
	Title "$CNTRLMNU_WEAPONS_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_NEXTWEAPON"     , "weapnext"
	Control    "$CNTRLMNU_PREVIOUSWEAPON" , "weapprev"
	ifnotgame(Exhumed)
	{
		Control    "$CNTRLMNU_ALTWEAPON"        , "weapalt"
	}

	StaticText ""
	Control    "$CNTRLMNU_SLOT1"          , "slot 1"
	Control    "$CNTRLMNU_SLOT2"          , "slot 2"
	Control    "$CNTRLMNU_SLOT3"          , "slot 3"
	Control    "$CNTRLMNU_SLOT4"          , "slot 4"
	Control    "$CNTRLMNU_SLOT5"          , "slot 5"
	Control    "$CNTRLMNU_SLOT6"          , "slot 6"
	Control    "$CNTRLMNU_SLOT7"          , "slot 7"
	ifnotgame(Exhumed)
	{
		Control    "$CNTRLMNU_SLOT8"          , "slot 8"
		Control    "$CNTRLMNU_SLOT9"          , "slot 9"
		Control    "$CNTRLMNU_SLOT0"          , "slot 10"
		StaticText ""
		Control    "$CNTRLMNU_HOLSTER"        , "holsterweapon"
	}
	ifgame(Duke, Nam, WW2GI)
	{
		Control "$CNTRLMNU_QUICKKICK"     , "+quick_kick"
	}

	ifgame(Blood)
	{
		Control "$CNTRLMNU_PROXIMITYBOMBS","slot 11"
		Control "$CNTRLMNU_REMOTEBOMBS"   ,"slot 12"
	}
	ifgame(ShadowWarrior)
	{
		Control "$CNTRLMNU_SMOKEBOMB","useitem 3"
		Control "$CNTRLMNU_GASBOMB"   ,"useitem 5"
		Control "$CNTRLMNU_FLASHBOMB","useitem 6"
		Control "$CNTRLMNU_CALTROPS"   ,"useitem 7"
	}

}

OptionMenu "InventoryControlsMenu" protected
{
	Title "$CNTRLMNU_INVENTORY_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_USEITEM"      , "invuse"

	StaticText ""
	Control    "$CNTRLMNU_NEXTITEM"     , "invnext"
	Control    "$CNTRLMNU_PREVIOUSITEM" , "invprev"

	// Item numbers here are are defined by the games' internal order.
	ifgame(Duke)
	{
		StaticText ""
		Control    "$CNTRLMNU_HOLODUKE" , "useitem 3"
		Control    "$CNTRLMNU_JETPACK" , "useitem 4"
		Control    "$CNTRLMNU_NIGHTVISION" , "useitem 5"
		Control    "$CNTRLMNU_MEDKIT" , "useitem 1"
		Control    "$CNTRLMNU_STEROIDS" , "useitem 2"
	}
	ifgame(Nam)
	{
		StaticText ""
		Control    "$CNTRLMNU_HOLOSOLDIER" , "useitem 3"
		Control    "$CNTRLMNU_HUEY" , "useitem 4"
		Control    "$CNTRLMNU_NIGHTVISION" , "useitem 5"
		Control    "$CNTRLMNU_MEDKIT" , "useitem 1"
		Control    "$CNTRLMNU_TANKMODE" , "useitem 2"
	}
	ifgame(WW2GI)
	{
		StaticText ""
		Control    "$CNTRLMNU_FIRE MISSION" , "useitem 3"
		Control    "$CNTRLMNU_NIGHTVISION" , "useitem 5"
		Control    "$CNTRLMNU_MEDKIT" , "useitem 1"
		Control    "$CNTRLMNU_SMOKES" , "useitem 2"
	}
	ifgame(Redneck, RedneckRides)
	{
		StaticText ""
		Control    "$CNTRLMNU_BEER" , "useitem 3"
		Control    "$CNTRLMNU_COWPIE" , "useitem 4"
		Control    "$CNTRLMNU_YEEHAA" , "useitem 5"
		Control    "$CNTRLMNU_WHISKEY" , "useitem 1"
		Control    "$CNTRLMNU_MOONSHINE" , "useitem 2"
		Control    "$CNTRLMNU_PEE", "+quick_kick"
	}
	ifgame(Blood)
	{
		StaticText ""
		Control    "$CNTRLMNU_CRYSTALBALL" , "useitem 2"
		Control    "$CNTRLMNU_JUMPBOOTS" , "useitem 4"
		Control    "$CNTRLMNU_BEASTVISION" , "useitem 3"
		Control    "$CNTRLMNU_MEDKIT" , "useitem 1"
	}
	ifgame(ShadowWarrior)
	{
		StaticText ""
		Control    "$CNTRLMNU_NIGHTVISION" , "useitem 4"
		Control    "$CNTRLMNU_MEDKIT" , "useitem 1"
	}
	ifgame(Exhumed)
	{
		StaticText ""
		Control    "$TXT_EX_USEINV1" , "useitem 4"
		Control    "$TXT_EX_USEINV2" , "useitem 5"
		Control    "$TXT_EX_USEINV3" , "useitem 6"
		Control    "$TXT_EX_USEINV4" , "useitem 1"
		Control    "$TXT_EX_USEINV5" , "useitem 3"
		Control    "$TXT_EX_USEINV6" , "useitem 2"
	}
}

OptionMenu "OtherControlsMenu" protected
{
	Title "$CNTRLMNU_OTHER_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_CHASECAM"        , "third_person_view"

	StaticText ""
	Control    "$CNTRLMNU_SCREENSHOT"      , "screenshot"
	Control    "$CNTRLMNU_CONSOLE"         , "toggleconsole"
	Control    "$CNTRLMNU_PAUSE"           , "pause"

	StaticText ""
	Control    "$CNTRLMNU_DISPLAY_INC"     , "sizeup"
	Control    "$CNTRLMNU_DISPLAY_DEC"     , "sizedown"
	Control    "$CNTRLMNU_TOGGLE_MESSAGES" , "togglemessages"
	Control    "$CNTRLMNU_ADJUST_GAMMA"    , "bumpgamma"

	StaticText ""
	ifnotgame(Exhumed)
	{
		Control    "$CNTRLMNU_OPEN_HELP"       , "openhelpmenu"
	}
	Control    "$CNTRLMNU_OPEN_SAVE"       , "opensavemenu"
	Control    "$CNTRLMNU_OPEN_LOAD"       , "openloadmenu"
	Control    "$CNTRLMNU_OPEN_OPTIONS"    , "openmenu optionsmenu"
	Control    "$CNTRLMNU_OPEN_DISPLAY"    , "openmenu videooptions"
	Control    "$CNTRLMNU_EXIT_TO_MAIN"    , "menu_endgame"
	Control    "$CNTRLMNU_MENU_QUIT"       , "menu_quit"

	StaticText ""
	Control    "$CNTRLMNU_QUICKSAVE"       , "quicksave"
	Control    "$CNTRLMNU_QUICKLOAD"       , "quickload"
}


OptionMenu "MapControlsMenu" protected
{
	Title "$MAPCNTRLMNU_CONTROLS"

	StaticText ""
	Control    "$CNTRLMNU_AUTOMAP"         , "togglemap"
	MapControl "$MAPCNTRLMNU_TOGGLEFOLLOW" ,"togglefollow"
	MapControl "$MAPCNTRLMNU_ROTATE"			,"togglerotate"
	StaticText ""
	MapControl "$MAPCNTRLMNU_ZOOMIN"       , "+enlarge_Screen"
	MapControl "$MAPCNTRLMNU_ZOOMOUT"      , "+shrink_screen"
	StaticText ""
	MapControl "$MAPCNTRLMNU_PANLEFT",			"+am_panleft"
	MapControl "$MAPCNTRLMNU_PANRIGHT",			"+am_panright"
	MapControl "$MAPCNTRLMNU_PANUP",			"+am_panup"
	MapControl "$MAPCNTRLMNU_PANDOWN",			"+am_pandown"
	}
//-------------------------------------------------------------------------------------------
//
// Mouse Menu
//
//-------------------------------------------------------------------------------------------

OptionValue "Corners"
{
	-1, "$OPTVAL_OFF"
	0, "$OPTVAL_UPPERLEFT"
	1, "$OPTVAL_UPPERRIGHT"
	2, "$OPTVAL_LOWERLEFT"
	3, "$OPTVAL_LOWERRIGHT"
}

OptionValue "MenuMouse"
{
	0, "$TXT_NO"
	1, "$TXT_YES"
	2, "$OPTVAL_TOUCHSCREENLIKE"
}

OptionString "Cursors"
{
	"None", "$OPTVAL_DEFAULT"
	"cursor", "$OPTSTR_SIMPLEARROW"
	"-", "$OPTSTR_SYSTEMCURSOR"
}

OptionMenu "MouseOptions" protected
{
	Title "$MOUSEMNU_TITLE"
	//Option "$MOUSEMNU_ENABLEMOUSE",		"in_mouse", "YesNo"
	Option "$MOUSEMNU_MOUSEINMENU",		"m_use_mouse", "MenuMouse", "use_mouse"
	Option "$MOUSEMNU_SHOWBACKBUTTON",	"m_show_backbutton", "Corners", "use_mouse"
	IfOption(Windows)
	{
		Option "$MOUSEMNU_SWAPBUTTONS", "m_swapbuttons", "YesNo"
	}
	// todo Option "$MOUSEMNU_CURSOR",			"vid_cursor", "Cursors"
	StaticText 	""
	Slider "$MOUSEMNU_SENSITIVITY_X",	"m_sensitivity_x", 0.1, 8, 0.05
	Slider "$MOUSEMNU_SENSITIVITY_Y",	"m_sensitivity_y", 0.1, 8, 0.05
	StaticText 	""
	Slider "$MOUSEMNU_TURNSPEED",		"m_yaw", 0, 2.5, 0.1
	Slider "$MOUSEMNU_MOUSELOOKSPEED",	"m_pitch", 0, 2.5, 0.1
	Slider "$MOUSEMNU_FORWBACKSPEED",	"m_forward", 0, 2.5, 0.1
	Slider "$MOUSEMNU_STRAFESPEED",		"m_side", 0, 2.5, 0.1
	StaticText 	""
	Option "$MOUSEMNU_ALWAYSMOUSELOOK",	"in_mousemode", "OnOff"
	Option "$MOUSEMNU_INVERTMOUSEX",	"invertmousex", "OnOff"
	Option "$MOUSEMNU_INVERTMOUSE",		"invertmouse", "OnOff"
	// Do we need this? Option "$MOUSEMNU_LOOKSTRAFE",		"lookstrafe", "OnOff"
}

//-------------------------------------------------------------------------------------------
//
// Joystick Menu
//
//-------------------------------------------------------------------------------------------

OptionMenu "JoystickOptionsDefaults" protected
{
	Title "$JOYMNU_OPTIONS"
	Option "$JOYMNU_ENABLE", "use_joystick", "YesNo"
	Option "$JOYMNU_NOMENU", "m_blockcontrollers", "YesNo"
	IfOption(Windows)
	{
		Option "$JOYMNU_DINPUT", "joy_dinput", "YesNo"
		Option "$JOYMNU_XINPUT", "joy_xinput", "YesNo"
		Option "$JOYMNU_PS2", "joy_ps2raw", "YesNo"
	}
	StaticText ""
	StaticTextSwitchable "$JOYMNU_NOCON", "$JOYMNU_CONFIG", "ConfigureMessage"
	StaticTextSwitchable " ", "$JOYMNU_DISABLED1", "ConnectMessage1"
	StaticTextSwitchable " ", "$JOYMNU_DISABLED2", "ConnectMessage2"

	// The rest will be filled in by joystick code if devices get connected or disconnected
}

OptionMenu "JoystickOptions" protected
{
	Title "$JOYMNU_OPTIONS"
}

OptionValue "JoyAxisMapNames"
{
	-1, "$OPTVAL_NONE"
	0, "$OPTVAL_TURNING"
	1, "$OPTVAL_LOOKINGUPDOWN"
	2, "$OPTVAL_MOVINGFORWARD"
	3, "$OPTVAL_STRAFING"
	4, "$OPTVAL_MOVINGUPDOWN"
}

OptionValue "Inversion"
{
	0, "$OPTVAL_NOTINVERTED"
	1, "$OPTVAL_INVERTED"
}

OptionMenu "JoystickConfigMenu" protected
{
	Title "$JOYMNU_TITLE"
	Class "JoystickConfigMenu"
	// Will be filled in by joystick code.
}


OptionValue "PlayerColors"
{
	0, "$OPTVAL_AUTO"
	1, "$TXT_COLOR_BLUE"
	2, "$TXT_COLOR_RED"
	3, "$TXT_COLOR_GREEN"
	4, "$TXT_COLOR_GRAY"
	5, "$TXT_COLOR_DARKGRAY"
	6, "$TXT_COLOR_DARKGREEN"
	7, "$TXT_COLOR_BROWN"
	8, "$TXT_COLOR_DARKBLUE"
	9, "$TXT_COLOR_LIGHTRED"
	//10, "$TXT_COLOR_YELLOW"
}

OptionValue "PlayerColorsSW"
{
	0, "$TXT_COLOR_BROWN"
	1, "$TXT_COLOR_GRAY"
	2, "$TXT_COLOR_PURPLE"
	3, "$TXT_COLOR_RED"
	4, "$TXT_COLOR_YELLOW"
	5, "$TXT_COLOR_DULLGREEN"
	6, "$TXT_COLOR_GREEN"
	7, "$TXT_COLOR_BLUE"
}

OptionValue "PlayerTeam"
{
	0, "$TXT_COLOR_BLUE"
	1, "$TXT_COLOR_RED"
	2, "$TXT_COLOR_GREEN"
	3, "$TXT_COLOR_GRAY"
}

OptionValue "Gender"
{
	0, "$OPTVAL_MALE"
	1, "$OPTVAL_FEMALE"
	2, "$OPTVAL_NEUTRAL"
	3, "$OPTVAL_OTHER"
}


OptionMenu "NewPlayerMenu" protected
{
	Title "$MNU_PLAYERSETUP"
	TextField "$PLYRMNU_NAME", playername
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{
		Option "$PLYRMNU_PLAYERCOLOR", "playercolor", "PlayerColors"
	}
	ifgame(ShadowWarrior)
	{
		// This curently does not get applied to the single player game.
		Option "$PLYRMNU_PLAYERCOLOR", "playercolor", "PlayerColorsSW"
	}
	Option "$PLYRMNU_PLAYERGENDER", "playergender", "Gender"
	Submenu "$PLRMNU_TAUNTS", "TauntsMenu"
	Class "PlayerMenu"
}

OptionMenu "TauntsMenu" protected
{
	Title "$PLRMNU_TAUNTS"
	TextField "1", "combatmacro0"
	TextField "2", "combatmacro1"
	TextField "3", "combatmacro2"
	TextField "4", "combatmacro3"
	TextField "5", "combatmacro4"
	TextField "6", "combatmacro5"
	TextField "7", "combatmacro6"
	TextField "8", "combatmacro7"
	TextField "9", "combatmacro8"
	TextField "10", "combatmacro9"
}

//-------------------------------------------------------------------------------------------
//
// Game Setup
//
//-------------------------------------------------------------------------------------------

OptionValue "AimMode"
{
	0, "$OPTVAL_NEVER"
	1, "$OPTVAL_ALWAYS"
	2, "$OPTVAL_HITSCAN"
}

OptionValue "RunMode"
{
	0, "$PLRMNU_TOGGLE"
	1, "$PLRMNU_OVERRIDE"
}

OptionValue "WeapSwitch"
{
	0, "$OPTVAL_NEVER"
	1, "$PLRMNU_IFNEW"
	3, "$PLRMNU_PREFERRED"
}

OptionValue "ExplosBehavior"
{
	0, "$OPTVAL_DEFAULT"
	1, "$OPTVAL_OLD"
}

OptionValue "EnemyBehavior"
{
	0, "$OPTVAL_DEFAULT"
	1, "$OPTVAL_OLD"
}


OptionMenu GameplayOptions protected
{
	Title 	"$GMPLYMNU_TITLE"
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides, Blood, ShadowWarrior)
	{
		Option "$PLYRMNU_AUTOAIM", "cl_autoaim", "AimMode"
	}
	else
	{
		Option "$PLYRMNU_AUTOAIM", "cl_autoaim", "OnOff"
	}
	Option "$PLYRMNU_ALWAYSRUN", "cl_autorun", "OnOff"
	Option "$PLRMNU_RUNMODE", "cl_runmode", "RunMode"
	ifgame(ShadowWarrior)
	{
		Option "$PLRMNU_EQUIP", "cl_weaponswitch", "OnOff" // does not have the 'preferred' option.
	}
	ifgame(Blood)
	{
		Option "$PLRMNU_EQUIP", "cl_weaponswitch", "WeapSwitch"
		Option "$EXPLOS_BEHAVIOR", "cl_bloodvanillaexplosions", "ExplosBehavior"
		Option "$ENEMY_BEHAVIOR", "cl_bloodvanillaenemies", "EnemyBehavior"
	}
	StaticText ""
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides, Blood, ShadowWarrior)
	{
		Option "$PLRMNU_FULLVIEWPITCH", "cl_clampedpitch", "OffOn"
	}
	StaticText ""
	ifgame(Blood)
	{
		Option "$PLRMNU_BLDQAVINTERP", "cl_bloodqavinterp", "OnOff"
		Option "$PLRMNU_BLDWEAPINTERP", "cl_bloodweapinterp", "OnOff", "cl_bloodqavinterp"
	}
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides)
	{
		Option "$PLRMNU_DUKEPITCHLOCKRET", "cl_dukepitchlockreturn", "OnOff"
		Option "$PLRMNU_DUKEPITCHHARDLAND", "cl_dukepitchhardlanding", "OnOff"
		Option "$PLRMNU_DUKEPITCHLANDRET", "cl_dukepitchlandingrecenter", "OnOff"
	}
	ifgame(Exhumed)
	{
		Option "$PLRMNU_EXJUMPREBOUND", "cl_exjumprebound", "OnOff"
	}
	// Option "Record Demo", "m_recstat", "OnOff"
	// Submenu "Cheats" "CheatsMenu
}

//-------------------------------------------------------------------------------------------
//
// Display options
//
//-------------------------------------------------------------------------------------------

OptionValue "FilterModes"
{
	0, "$OPTVAL_NONE"
	1, "$OPTVAL_NONENEARESTMIPMAP"
	5, "$OPTVAL_NONELINEARMIPMAP"
	6, "$OPTVAL_NONETRILINEAR"
	2, "$OPTVAL_LINEAR_2"
	3, "$OPTVAL_BILINEAR"
	4, "$OPTVAL_TRILINEAR"
}

OptionValue "Anisotropy"
{
	1, "$OPTVAL_OFF"
	2, "$OPTVAL_2X"
	4, "$OPTVAL_4X"
	8, "$OPTVAL_8X"
	16, "$OPTVAL_16X"
}

OptionValue "Multisample"
{
	1, "$OPTVAL_OFF"
	2, "$OPTVAL_2X"
	4, "$OPTVAL_4X"
	8, "$OPTVAL_8X"
	16, "$OPTVAL_16X"
	32, "$OPTVAL_32X"
}

OptionValue "Precision"
{
	0, "$OPTVAL_SPEED"
	1, "$OPTVAL_QUALITY"
}

OptionValue "ViewBobbing"
{
	0, "$OPTVAL_OFF"
	1, "$DSPLYMNU_VIEWBOBPSE"
	2, "$DSPLYMNU_VIEWBOBDUKE"
}

OptionValue "ViewTilting"
{
	0, "$OPTVAL_OFF"
	1, "$DSPLYMNU_VIEWTILTTURN"
	2, "$DSPLYMNU_VIEWTILTSTRAFE"
	3, "$DSPLYMNU_VIEWTILTMOVEMENT"
}

OptionMenu "VideoOptions" protected
{
	Title "$DSPLYMNU_TITLE"

	Submenu "$OPTMNU_HUD", "HUDOptions"
	Submenu "$RENDER_OPTIONS", "RenderOptions"
	Submenu "$AUTOMAPMNU_TITLE", "AutomapOptions"
	Submenu "$GLMNU_POSTPROCESS", "PostProcessMenu"
	Submenu "$GLTEXMNU_TITLE", "GLTextureGLOptions"
	StaticText ""

	Slider "$DSPLYMNU_GAMMA",					"vid_gamma",					0.75, 3.0, 0.05, 2
	Slider "$DSPLYMNU_BRIGHTNESS",				"vid_brightness",				-0.8,0.8, 0.05,2
	Slider "$DSPLYMNU_CONTRAST",				"vid_contrast",	   				0.1, 3.0, 0.1
	Slider "$DSPLYMNU_SATURATION",				"vid_saturation",  				-3.0, 3.0, 0.25, 2
	Slider "$DSPLYMNU_AMBIENT_LIGHT",			"r_ambientlight",  				0.5, 4.0, 0.1

	StaticText ""
	Option "$DSPLYMNU_VOXELS",					"r_voxels",						"OnOff"
	Option "$DSPLYMNU_SHADOWS",					"r_shadows",					"OnOff"
	Option "$DSPLYMNU_SLOPETILT",				"cl_slopetilting",				"OnOff"
	ifgame(Exhumed)
	{
		Slider "$DSPLYMNU_EXVERTPANNING",	"cl_exvertpanscale", 0.5, 10, 0.1
	}
	Option "$GLPREFMNU_ENVIRONMENTMAPMIRROR",	gl_mirror_envmap,				"OnOff"
	ifnotgame(Blood, Exhumed)
	{
		Option "$DSPLYMNU_VIEWBOB",					"cl_viewbob",					"OnOff"
	}
	ifgame(Exhumed)
	{
		Option "$DSPLYMNU_VIEWBOB",					"cl_viewbob",					"ViewBobbing"
		Slider "$DSPLYMNU_VIEWBOBSPEED",			"cl_exviewbobspeed",			0.0, 10.0, 0.1
		Slider "$DSPLYMNU_VIEWBOBHEIGHT",			"cl_exviewbobheight",			0.0, 20.0, 0.1
	}
	ifgame(Blood)
	{
		Option "$DSPLYMNU_VIEWBOB",					"cl_viewvbob",					"OnOff"
		Option "$DSPLYMNU_VIEWSWAY",				"cl_viewhbob",					"OnOff"
	}
	Option "$DSPLYMNU_VIEWTILTING",				"cl_viewtilting",				"ViewTilting"
	ifgame (RedneckRides)
	{
		Option "$DSPLYMNU_VEHTILTING",			"cl_rrvehicletilting",			"OnOff"
	}
	Slider "$DSPLYMNU_VIEWTILTSCALE",			"cl_viewtiltscale",				0.0, 2.0, 0.05
	Slider "$DSPLYMNU_FOV",						"r_fov",						60, 130, 10, 1

	StaticText ""
	Option "$GLPREFMNU_RENDERQUALITY",			gl_seamless,					"Precision"

	StaticText ""
	Option "$GLTEXMNU_TEXFILTER",				gl_texture_filter,				"FilterModes"
	Option "$GLTEXMNU_ANISOTROPIC",				gl_texture_filter_anisotropic,	"Anisotropy"
	StaticText " "
	Option "$GLPREFMNU_MULTISAMPLE", 			gl_multisample,					"Multisample"

}

OptionValue "DitherModes"
{
	0, "$OPTVAL_OFF"
	-1, "$OPTVAL_ON"
	6, "6 BPC"
	8, "8 BPC"
	10, "10 BPC"
	12, "12 BPC"
}

OptionValue "FXAAQuality"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_LOW"
	2, "$OPTVAL_MEDIUM"
	3, "$OPTVAL_HIGH"
	4, "$OPTVAL_EXTREME"
}

OptionValue "TonemapModes"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_UNCHARTED2"
	2, "$OPTVAL_HEJLDAWSON"
	3, "$OPTVAL_REINHARD"
	5, "$OPTVAL_PALETTE"
}

OptionValue "LookupOrder"
{
	0, "$OPTVAL_OBVERSEFIRST"
	1, "$OPTVAL_REVERSEFIRST"
}

OptionValue "HqResizeModes"
{
   0, "$OPTVAL_OFF"
   1, "$OPTVAL_SCALENX"
   2, "$OPTVAL_HQNX"
   3, "$OPTVAL_HQNXMMX"
   4, "$OPTVAL_NXBRZ"
   5, "$OPTVAL_OLD_NXBRZ"
   6, "$OPTVAL_NORMALNX"
}

OptionValue "HqResizeMultipliers"
{
   1, "$OPTVAL_OFF"
   2, "2x"
   3, "3x"
   4, "4x"
   5, "5x"
   6, "6x"
}

OptionValue "HqResizeModesNoMMX"
{
   0, "$OPTVAL_OFF"
   1, "$OPTVAL_SCALENX"
   2, "$OPTVAL_HQNX"
   4, "$OPTVAL_NXBRZ"
   5, "$OPTVAL_OLD_NXBRZ"
   6, "$OPTVAL_NORMALNX"
}

OptionValue "FogMode"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_STANDARD"
	2, "$OPTVAL_RADIAL"
}

OptionValue "LightModes"
{
	0, "$GLPREFMNU_ORIGINAL"
	1, "$GLPREFMNU_NATURAL"
	2, "$GLPREFMNU_HIGHCONTRAST"
}

OptionValue "SSAOModes"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_LOW"
	2, "$OPTVAL_MEDIUM"
	3, "$OPTVAL_HIGH"
}

OptionMenu "PostProcessMenu"
{
	Title "$GLMNU_POSTPROCESS"
	Option "$GLPREFMNU_BLOOM",		 			gl_bloom,						"OnOff"
	Option "$GLPREFMNU_LENS",		 			gl_lens,						"OnOff"
	Option "$GLPREFMNU_SSAO",		 			gl_ssao,						"SSAOModes"
	Slider "$GLPREFMNU_SSAO_PORTALS",			gl_ssao_portals,				0.0, 4.0, 1.0, 0
	Option "$GLPREFMNU_FXAA",		 			gl_fxaa,						"FXAAQuality"
	Option "$GLPREFMNU_DITHER",		 			gl_dither_bpc,					"DitherModes"
	Option "$GLPREFMNU_TONEMAP", 				gl_tonemap,						"TonemapModes"
	StaticText " "
	Slider "$GLPREFMNU_PALTONEMAPPOWER",		gl_paltonemap_powtable,			0.2, 3.0, 0.1, 1
	Option "$GLPREFMNU_PALTONEMAPORDER",		gl_paltonemap_reverselookup,	"LookupOrder"
}

OptionMenu "AutomapOptions"
{
	Title "$AUTOMAPMNU_TITLE"
	Submenu    "$MAPCNTRLMNU_CONTROLS" , "MapControlsMenu"
	StaticText ""
	Option "$AUTOMAPMNU_ROTATE",				"am_rotate",					"OnOff"
	Option "$AUTOMAPMNU_FOLLOW",				"am_followplayer",				"OnOff"
	Slider "$AUTOMAPMNU_LINEALPHA",				"am_linealpha", 0.1, 1.0, 0.1, 1
	Slider "$AUTOMAPMNU_LINETHICKNESS",			"am_linethickness", 1, 8, 1, 0
	StaticText ""

	// todo:
	//CVAR(Bool, am_textfont, false, CVAR_ARCHIVE)
	//CVAR(Bool, am_showlabel, false, CVAR_ARCHIVE)
	//CVAR(Bool, am_nameontop, false, CVAR_ARCHIVE)

	//CVAR(Color, am_twosidedcolor, 0xaaaaaa, CVAR_ARCHIVE)
	//CVAR(Color, am_onesidedcolor, 0xaaaaaa, CVAR_ARCHIVE)
	//CVAR(Color, am_playercolor, 0xaaaaaa, CVAR_ARCHIVE)
	//CVAR(Color, am_ovtwosidedcolor, 0xaaaaaa, CVAR_ARCHIVE)
	//CVAR(Color, am_ovonesidedcolor, 0xaaaaaa, CVAR_ARCHIVE)
	//CVAR(Color, am_ovplayercolor, 0xaaaaaa, CVAR_ARCHIVE)

}

OptionMenu "GLTextureGLOptions" protected
{
	Title "$GLTEXMNU_TITLE"
	ifOption(MMX)
	{
		Option "$GLTEXMNU_HQRESIZE",		gl_texture_hqresizemode,		"HqResizeModes"
	}
	else
	{
		Option "$GLTEXMNU_HQRESIZE",		gl_texture_hqresizemode,		"HqResizeModesNoMMX"
	}
	Option "$GLTEXMNU_HQRESIZEMULT",	gl_texture_hqresizemult,		"HqResizeMultipliers"
	StaticText "!HQRESIZE_WARNING!"

	Option "$GLTEXMNU_RESIZETEX",		gl_texture_hqresize_textures,	"OnOff"
	Option "$GLTEXMNU_RESIZESPR",		gl_texture_hqresize_sprites,	"OnOff"
	Option "$GLTEXMNU_RESIZEFNT",		gl_texture_hqresize_fonts,		"OnOff"
	Option "$GLTEXMNU_RESIZESKN",		gl_texture_hqresize_skins,		"OnOff"
	Option "$GLTEXMNU_PRECACHETEX",		gl_precache,					"YesNo"
	Class "GLTextureGLOptions"
}
//-------------------------------------------------------------------------------------------
//
// HUD options
//
//-------------------------------------------------------------------------------------------

OptionValue "HUDMessages"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
}

OptionValue "HUDMessageStyle"
{
	0, "$OPTVAL_CLASSIC"
	1, "$OPTVAL_ADVANCED"
}

OptionValue Crosshairs
{
	// will be filled in from the XHAIRS lump
}

OptionValue CrosshairHealthTypes
{
	0.0, "$TXT_NO"
	1.0, "$OPTVAL_YES_STANDARD"
	2.0, "$OPTVAL_YES_ENHANCED"
}

OptionValue HudStats
{
	0.0, "$OPTVAL_OFF"
	1.0, "$OPTVAL_HUD"
	2.0, "$OPTVAL_AUTOMAP"
	3.0, "$OPTVAL_HUDANDMAP"
}

OptionMenu "HUDOptions" protected
{
	Title "$OPTMNU_HUD"

	Slider "$DSPLYMNU_SCREENSIZE",				"hud_size", 				0.0, 9.0, 1.0, -1
	Slider "$DSPLYMNU_SBSCALE",					"hud_scalefactor",			0.36, 1.0, 0.04, 2
	StaticText ""
	Option "$DSPLYMNU_LEVELSTATS",				"hud_stats",				"HudStats"
	Slider "$DSPLYMNU_STATSCALE",				"hud_statscale",			0.36, 1.0, 0.04, 2

	StaticText ""
	Option "$DSPLYMNU_SHOWMAPNAME",				"hud_showmapname",	OnOff

	StaticText ""
	Option "$DSPLYMNU_MESSAGES",				"hud_messages",				"HudMessages"
	Option "$DSPLYMNU_MESSAGEDISP",				"con_notify_advanced",		"HudMessageStyle"
	Option "$MSGMNU_CENTERMESSAGES",			"con_centernotify", 		"OnOff", "con_notify_advanced"
	Option "$MSGMNU_PULSEMESSAGES",				"con_pulsetext", 			"OnOff", "con_notify_advanced"
	Slider "$MSGMNU_MESSAGESCALE", 				"con_notifyscale", 			0.36, 1.0, 0.04, 2

	StaticText ""
	Option "$DSPLYMNU_CLIPAMT",				"cl_showmagamt",	OnOff

	StaticText ""
	Option "$DSPLYMNU_CROSSHAIR",				"cl_crosshair",	OnOff
	Slider "$DSPLYMNU_CROSSHAIRSCALE",			"crosshairscale",		0.0, 2.0, 0.05, 2
	Option "$HUDMNU_CROSSHAIR",				"crosshair", "Crosshairs"
	//ColorPicker "$HUDMNU_CROSSHAIRCOLOR", 	"crosshaircolor" fixme: Does not exist yet in Raze.
	Option "$HUDMNU_CROSSHAIRHEALTH",		"crosshairhealth", "CrosshairHealthTypes"
}


//-------------------------------------------------------------------------------------------
//
// Render options
//
//-------------------------------------------------------------------------------------------

OptionMenu "RenderOptions"
{
	Title "Render Options"
	Option "$RENDER_TC", "hw_hightile", "OnOff"
	Option "$RENDER_CACHE", "r_precache", "OnOff"
	StaticText ""
	// Exhumed's lighting system does not work with the enhanced modes.
	ifnotgame(Exhumed)
	{
		Option "$GLPREFMNU_SECLIGHTMODE",			"hw_lightmode",					"LightModes"
	}
	Option "$GLPREFMNU_FOGMODE",				gl_fogmode,						"FogMode"
	Option "$RENDER_PALETTEEMU",				"hw_useindexedcolortextures",	"OnOff"
	Option "$RENDER_PALINTER",					"hw_shadeinterpolate",			"OnOff", "hw_useindexedcolortextures"
	StaticText ""
	Option "$RENDER_MODELS", "hw_models", "OnOff"
}

//-------------------------------------------------------------------------------------------
//
// Sound options
// Many of these options are not active, but will be needed should I manage to transition
// the entire sound system to OpenAL 3D. So it is easier to just copy all this verbatim
// and only disable the options not yet usable instead of deleting the content.
//
//-------------------------------------------------------------------------------------------

OptionValue SampleRates
{
	//0,		"$OPTVAL_DEFAULT"
	//4000,	"$OPTVAL_4000HZ"
	//8000,	"$OPTVAL_8000HZ"
	11025,	"$OPTVAL_11025HZ"
	22050,	"$OPTVAL_22050HZ"
	32000,	"$OPTVAL_32000HZ"
	44100,	"$OPTVAL_44100HZ"
	48000,	"$OPTVAL_48000HZ"
}

OptionValue SampleRates2
{
	0,		"$OPTVAL_DEFAULT"
	11025,	"$OPTVAL_11025HZ"
	22050,	"$OPTVAL_22050HZ"
	32000,	"$OPTVAL_32000HZ"
	44100,	"$OPTVAL_44100HZ"
	48000,	"$OPTVAL_48000HZ"
}


OptionValue BufferSizes
{
	   0, "$OPTVAL_DEFAULT"
	  64, "$OPTVAL_64SAMPLES"
	 128, "$OPTVAL_128SAMPLES"
	 256, "$OPTVAL_256SAMPLES"
	 512, "$OPTVAL_512SAMPLES"
	1024, "$OPTVAL_1024SAMPLES"
	2048, "$OPTVAL_2048SAMPLES"
	4096, "$OPTVAL_4096SAMPLES"
}

OptionString ALDevices
{
	// filled in by the sound code
}

OptionString ALResamplers
{
	// filled in by the sound code
}

OptionString SpeakerModes
{
	"Auto",		"$OPTSTR_AUTO"
	"Mono",		"$OPTSTR_MONO"
	"Stereo",	"$OPTSTR_STEREO"
	"Prologic",	"$OPTSTR_PROLOGIC"
	"Quad",		"$OPTSTR_QUAD"
	"Surround",	"$OPTSTR_SURROUND"
	"5.1",		"$OPTSTR_5POINT1"
	"7.1",		"$OPTSTR_7POINT1"
}


OptionMenu OpenALSoundItems protected
{
	Title "$OPENALMNU_TITLE"
	Option "$OPENALMNU_PLAYBACKDEVICE",		"snd_aldevice",		"ALDevices"
	Option "$OPENALMNU_ENABLEEFX",			"snd_efx",			"OnOff"
	Option "$OPENALMNU_RESAMPLER",			"snd_alresampler",	"ALResamplers"
}


OptionValue MidiDevices
{
	// filled in by the sound code
}

OptionMenu SoundOptions protected
{
	Title "$SNDMNU_TITLE"
	Slider "$MODMNU_MASTERVOLUME",		"snd_mastervolume", 0, 1, 0.05, 2
	StaticText " "
	Option "$SNDMNU_SNDENABLED",		"snd_enabled", "YesNo"
	Slider "$SNDMNU_SFXVOLUME",			"snd_sfxvolume", 0, 1, 0.05, 2
	Option "$SNDMNU_MUSENABLED",		"mus_enabled", "YesNo"	
	Slider "$SNDMNU_MUSICVOLUME",		"snd_musicvolume", 0, 1, 0.05, 2
	Option "$SNDMNU_MENUSOUND",		"menu_sounds", "OnOff" // placeholder until the slider can be made to work
	//Slider "$SNDMNU_MENUVOLUME",		"snd_menuvolume", 0, 1, 0.05, 2
	StaticText " "
	Option "$SNDMNU_MIDIDEVICE",		"snd_mididevice", "MidiDevices"
	//StaticText " "
	//Option "$SNDMNU_UNDERWATERREVERB",	"snd_waterreverb", "OnOff"
	Slider "$SNDMNU_CHANNELS",			"snd_channels", 64, 256, 16, 0
	staticText ""
	ifgame (Blood, ShadowWarrior, Redneck, RedneckRides)
	{
		Option "$SNDMNU_CDEMU",			"mus_redbook", "OnOff"
	}
	ifgame(Worldtour)
	{
		Option "$SNDMNU_WTSOUND",			"wt_forcevoc", "OnOff"
		Option "$SNDMNU_WTMUSIC",			"wt_forcemidi", "OnOff"
		Option "$SNDMNU_WTCOMMENT",			"wt_commentary", "OnOff"
	}
	ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides, ShadowWarrior)
	{
		Option "$SNDMNU_AMBIENCE",		"snd_ambience", "OnOff"
		Option "$SNDMNU_SPEECH",		"snd_speech", "OnOff"
	}
	StaticText " "
	Submenu "$SNDMNU_ADVANCED",			"AdvSoundOptions"
	//Submenu "$OPTMNU_REVERB",			"ReverbEdit" // disabled because there's no way to use the edited data.
}

/*=======================================
 *
 * Advanced Sound Options Menu
 *
 *=======================================*/


OptionMenu AdvSoundOptions protected
{
	Title "$ADVSNDMNU_TITLE"
	Option "$ADVSNDMNU_LOOKUPMUS",			"mus_extendedlookup", "OnOff"
	Option "$ADVSNDMNU_LOOKUPSND",			"snd_extendedlookup", "OnOff"
	StaticText " "

	//Option "$ADVSNDMNU_HRTF",				"snd_hrtf", "AutoOffOn"
	StaticText " "
	//Option "$SNDMNU_BACKGROUND",			"i_soundinbackground", "OnOff"
	//StaticText " "

	ifoption(openal)
	{
	StaticText " "
		Submenu "$SNDMNU_OPENAL",		"OpenALSoundItems"
	}

	StaticText " "
	Submenu "$SNDMNU_MIDIPLAYER",		"MidiPlayerOptions"
	Submenu "$SNDMNU_MODREPLAYER",		"ModReplayerOptions"
	StaticText " "
	Command "$SNDMNU_RESTART",			"snd_reset"
}


OptionMenu TimidityConfigMenu protected
{
	Title "$ADVSNDMNU_SELCONFIG"
}

OptionMenu FluidPatchsetMenu protected
{
	Title "$ADVSNDMNU_SELCONFIG"
}

/*=======================================
 *
 * Module Replayer Options Menu
 *
 *=======================================*/

OptionValue ModQuality
{
	0.0, "$OPTVAL_ALIASING"
	1.0, "$OPTVAL_LINEAR_1"
	2.0, "$OPTVAL_CUBIC"
	3.0, "$OPTVAL_BLEP"		// Band-limited step
	4.0, "$OPTVAL_LINEARSLOW"
	5.0, "$OPTVAL_BLAM"		// Band-limited linear
	6.0, "$OPTVAL_CUBICSLOW"
	7.0, "$OPTVAL_SINC"
}


OptionValue ModVolumeRamps
{
	0.0, "$OPTVAL_NONE"
	1.0, "$OPTVAL_NOTEONOFFONLY"
	2.0, "$OPTVAL_FULLRAMPING"
}



OptionMenu ModReplayerOptions protected
{
	Title "$MODMNU_TITLE"
	Slider "$MODMNU_MASTERVOLUME",			"mod_dumb_mastervolume", 0.25, 4, 0.1, 1
	Option "$ADVSNDMNU_SAMPLERATE",			"mod_samplerate", "SampleRates2"
	Option "$MODMNU_QUALITY",				"mod_interp", "ModQuality"
	Option "$MODMNU_VOLUMERAMPING",			"mod_volramp", "ModVolumeRamps"
	StaticText " "
	Option "$MODMNU_CHIPOMATIC",			"mod_autochip", "OnOff"
	// TODO if the menu system is ever rewritten: Provide a decent
	// mechanism to edit the chip-o-matic settings like you can with
	// the foo_dumb preferences in foobar2000.
}

/*=======================================
 *
 * MIDI player
 *
 *=======================================*/

 OptionMenu MidiPlayerOptions /*FluidsynthOptions*/ protected
 {
	Title "$SNDMNU_MIDIPLAYER"
	//Title "$ADVSNDMNU_FLUIDSYNTH"
	LabeledSubMenu "$ADVSNDMNU_SELCONFIG",		"fluid_patchset", "FluidPatchsetMenu"
	Slider "$ADVSNDMNU_FLUIDGAIN",			"fluid_gain", 0, 10, 0.5, 1
	Option "$ADVSNDMNU_REVERB", 			"fluid_reverb", "OnOff"
	Option "$ADVSNDMNU_CHORUS", 			"fluid_chorus", "OnOff"
	Slider "$ADVSNDMNU_MIDIVOICES", 		"fluid_voices", 16, 4096, 16, 0
	// other CVARs need to be revieved for usefulness
 }


/*=======================================
 *
 * Video mode menu
 *
 *=======================================*/

OptionValue ForceRatios
{
	0.0, "$OPTVAL_OFF"
	3.0, "4:3"
	1.0, "16:9"
	5.0, "17:10"
	2.0, "16:10"
	4.0, "5:4"
	6.0, "21:9"
}
OptionValue Ratios
{
	0.0, "4:3"
	4.0, "5:4"
	1.0, "16:9"
	2.0, "16:10"
	3.0, "17:10"
	6.0, "21:9"
	 -1, "$OPTVAL_ALL"
}
OptionValue ScaleModes
{
	0, "$OPTVAL_NORMAL"
	6, "320x200"
	2, "640x400"
	3, "960x600"
	4, "1280x800"
	5, "$OPTVAL_CUSTOM"
	1, "$OPTVAL_LOWEST"
}
OptionValue CropAspect
{
	0, "$OPTVAL_STRETCH"
	1, "$OPTVAL_LETTERBOX"
}

OptionValue MaxFps
{
	0, "$OPTVAL_UNLIMITED"
	60, "$OPTVAL_60FPS"
	75, "$OPTVAL_75FPS"
	90, "$OPTVAL_90FPS"
	120, "$OPTVAL_120FPS"
	144, "$OPTVAL_144FPS"
	200, "$OPTVAL_200FPS"
}

OptionValue PreferBackend
{
	0, "$OPTVAL_OPENGL"
	1, "$OPTVAL_VULKAN"
	2, "$OPTVAL_OPENGLES"
}

OptionMenu VideoModeMenu protected
{
	Title "$VIDMNU_TITLE"

	Option "$VIDMNU_PREFERBACKEND",		"vid_preferbackend", "PreferBackend"
	StaticText " "
	Option "$VIDMNU_FULLSCREEN",		"vid_fullscreen", "YesNo"

	IfOption(Mac)
	{
		Option "$VIDMNU_HIDPI",			"vid_hidpi", "YesNo"
	}

	Option "$VIDMNU_FORCEASPECT",		"vid_aspect", "ForceRatios"
	Option "$VIDMNU_CROPASPECT",		"vid_cropaspect", "CropAspect"
	Option "$VIDMNU_SCALEMODE",			"vid_scalemode", "ScaleModes"
	Slider "$VIDMNU_SCALEFACTOR",		"vid_scalefactor", 0.25, 2.0, 0.25, 2

	StaticText " "
	Option "$DSPLYMNU_VSYNC",					"vid_vsync", "OnOff"
	Option "$VIDMNU_MAXFPS",					"vid_maxfps", "MaxFps"

	StaticText ""
	StaticText "$VIDMNU_CUSTOMRES"
	TextField "$VIDMNU_CUSTOMX", menu_resolution_custom_width
	TextField "$VIDMNU_CUSTOMY", menu_resolution_custom_height
	Option "$VIDMNU_USELINEAR", "vid_scale_linear", "YesNo"
	StaticText ""
	Command "$VIDMNU_APPLYW", "menu_resolution_commit_changes 0"
	Command "$VIDMNU_APPLYFS", "menu_resolution_commit_changes 1"
	StaticText ""

	SubMenu "$VIDMNU_RESPRESET", CustomResolutionMenu
}

OptionMenu CustomResolutionMenu protected
{
	Title "$VIDMNU_RESPRESETTTL"

	StaticText "$VIDMNU_RESPRESETHEAD"
	StaticText ""
	StaticText "$VIDMNU_ASPECT43"
	Command "640x480", "menu_resolution_set_custom 640 480"
	Command "1024x768", "menu_resolution_set_custom 1024 768"
	Command "1280x960", "menu_resolution_set_custom 1280 960"
	Command "1600x1200", "menu_resolution_set_custom 1600 1200"
	StaticText ""
	StaticText "$VIDMNU_ASPECT54"
	Command "1280x1024", "menu_resolution_set_custom 1280 1024"
	StaticText ""
	StaticText "$VIDMNU_ASPECT169"
	Command "960x540", "menu_resolution_set_custom 960 540"
	Command "(720p HD)   1280x720", "menu_resolution_set_custom 1280 720"
	Command "1366x768", "menu_resolution_set_custom 1366 768"
	Command "(1080p HD) 1920x1080", "menu_resolution_set_custom 1920 1080"
	Command "(1440p HD) 2560x1440", "menu_resolution_set_custom 2560 1440"
	Command "(4K UHD) 3840x2160", "menu_resolution_set_custom 3840 2160"
	StaticText ""
	StaticText "$VIDMNU_ASPECT1610"
	Command "960x600", "menu_resolution_set_custom 960 600"
	Command "1280x800", "menu_resolution_set_custom 1280 800"
	Command "1440x900", "menu_resolution_set_custom 1440 900"
	Command "1680x1050", "menu_resolution_set_custom 1680 1050"
	Command "1920x1200", "menu_resolution_set_custom 1920 1200"
	StaticText ""
	StaticText "$VIDMNU_ASPECT219"
	Command "1920x810", "menu_resolution_set_custom 1920 810"
	Command "2560x1080", "menu_resolution_set_custom 2560 1080"
}


//-------------------------------------------------------------------------------------------
//
// Misc menu
//
//-------------------------------------------------------------------------------------------

OptionValue Autosave
{
	0,	"$OPTVAL_ALWAYS"
	1,	"$OPTVAL_SCRIPTSONLY"
	2,	"$OPTVAL_NEVER"
}

OptionValue Endoom
{
	0.0, "$OPTVAL_OFF"
	1.0, "$OPTVAL_ON"
	2.0, "$OPTVAL_ONLYMODIFIED"
}


/*=======================================
 *
 * Language menu 
 *
 *=======================================*/

OptionString "LanguageOptions"
{
	"auto", "Auto"
	"default", "English (US)"
	"eng", "English (UK)"
	"cs", "Česky (Czech)"
	"da", "Dansk (Danish)"
	"de", "Deutsch (German)"
	"es", "Español (Spanish)" // Note: this has not been reviewed for regional variations!
	"fr", "Français (French)"
	"hu", "Magyar (Hungarian)"
	"it", "Italiano (Italian)"
	"nl", "Nederlands (Dutch)"
	"no", "Norsk Bokmål (Norwegian)"
	"pl", "Polski (Polish)"
	"pt", "Português do Brasil (Brazilian Portuguese)"
	"ro", "Română (Romanian)"
	"ru", "Русский (Russian)"
	"tr", "Türkçe (Turkish)"

	//"es", "Español (España) (Castilian Spanish)"
	//"esm", "Español (Latino) (Latin American Spanish)"
	//"eo", "Esperanto"
	//"fi", "Suomi (Finnish)"
	//"jp", "日本語 (Japanese)"
	//"ko", "한국어 (Korean)"
	//"ptg", "Português (European Portuguese)"
	//"sr", "Српски (Serbian)"
}

OptionMenu "MiscOptions" protected
{
	Title "$MISCMNU_TITLE"
	//Indent 220
	IfOption(Windows)
	{
		Option "$MISCMNU_WINFULLSCREENTOGGLE",	"k_allowfullscreentoggle", "OnOff"
	}
	IfOption(Mac)
	{
		Option "$MISCMNU_MACFULLSCREENTOGGLE",	"k_allowfullscreentoggle", "OnOff"
	}
	Option "$MISCMNU_QUERYIWAD",				"queryiwad", "OnOff"
	StaticText " "
	//Option "$MISCMNU_ALLCHEATS",				"allcheats", "OnOff"
	Option "$MISCMNU_ENABLEAUTOSAVES",			"disableautosave", "Autosave"
	Option "$MISCMNU_SAVELOADCONFIRMATION",			"saveloadconfirmation", "OnOff"
	Slider "$MISCMNU_AUTOSAVECOUNT",			"autosavecount", 1, 20, 1, 0
	//Option "$MISCMNU_QUICKSAVEROTATION",			"quicksaverotation", "OnOff"
	Slider "$MISCMNU_QUICKSAVECOUNT",			"quicksavecount", 1, 20, 1, 0
	ifgame(ShadowWarrior)
	{
		StaticText " "
		Option "$MISCMNU_DARTS",				"sw_darts", "OnOff"
		Option "$MISCMNU_NINJA",				"sw_ninjahack", "OnOff"
	}
	//StaticText " "
	Option "$OPTMNU_LANGUAGE", "language", "LanguageOptions"
	IfOption(Windows)
	{
		StaticText " "
		Option	"$DSPLYMNU_SHOWENDOOM",			"showendoom", "Endoom"
	}

}

//-------------------------------------------------------------------------------------------
//
// Reverb editor
//
//-------------------------------------------------------------------------------------------

OptionMenu "ReverbEdit" protected
{
	Class "ReverbEdit"
	Title "$OPTMNU_REVERB"
	StaticTextSwitchable 	"", "", "EvironmentName", 1
	StaticTextSwitchable 	"", "", "EvironmentID"
	StaticText " "
	Submenu "$REVMNU_SELECT", "ReverbSelect"
	Option "$REVMNU_TEST", "eaxedit_test", OnOff
	StaticText " "
	Submenu "$REVMNU_NEW", "ReverbNew"
	Submenu "$REVMNU_SAVE", "ReverbSave"
	Submenu "$REVMNU_EDIT", "ReverbSettings"
}

OptionMenu "ReverbSelect" protected
{
	Class "ReverbSelect"
	Title "$REVMNU_SELECT"
	// filled in by code
}

OptionMenu "ReverbSettings" protected
{
	Title "$REVMNU_EDIT"
	SafeCommand "$REVMNU_REVERT", "revertenvironment"
	StaticText " "
	SliderReverbEditOption "$REVMNU_Environment_Size", 1, 100, 0.01, 3, 1
	SliderReverbEditOption "$REVMNU_Environment_Diffusion", 0, 1, 0.01, 3, 2
	SliderReverbEditOption "$REVMNU_Room", -10000, 0, 1, 0, 3
	SliderReverbEditOption "$REVMNU_Room_HF", -10000, 0, 1, 0, 4
	SliderReverbEditOption "$REVMNU_Room_LF", -10000, 0, 1, 0, 5
	SliderReverbEditOption "$REVMNU_Decay_Time", 1, 200, 0.01, 3, 6
	SliderReverbEditOption "$REVMNU_Decay_HF_Ratio", 1, 20, 0.01, 3, 7
	SliderReverbEditOption "$REVMNU_Decay_LF_Ratio", 1, 20, 0.01, 3, 8
	SliderReverbEditOption "$REVMNU_Reflections", -10000, 1000, 1, 0, 9
	SliderReverbEditOption "$REVMNU_Reflections_Delay", 0, 0.3, 1, 3, 10
	SliderReverbEditOption "$REVMNU_Reflections_Pan_X", -2000, 2000, 1, 3, 11
	SliderReverbEditOption "$REVMNU_Reflections_Pan_Y", -2000, 2000, 1, 3, 12
	SliderReverbEditOption "$REVMNU_Reflections_Pan_Z", -2000, 2000, 1, 3, 13
	SliderReverbEditOption "$REVMNU_Reverb", -10000, 2000, 1, 0, 14
	SliderReverbEditOption "$REVMNU_Reverb_Delay", 0, 0.1, 0.01, 3, 15
	SliderReverbEditOption "$REVMNU_Reverb_Pan_X", -2000, 2000, 1, 3, 16
	SliderReverbEditOption "$REVMNU_Reverb_Pan_Y", -2000, 2000, 1, 3, 17
	SliderReverbEditOption "$REVMNU_Reverb_Pan_Z", -2000, 2000, 1, 3, 18
	SliderReverbEditOption "$REVMNU_Echo_Time", 0.075, 0.25, 0.005, 3, 19
	SliderReverbEditOption "$REVMNU_Echo_Depth", 0, 1, 0.01, 3, 20
	SliderReverbEditOption "$REVMNU_Modulation_Time", 0.04, 4, 0.01, 3, 21
	SliderReverbEditOption "$REVMNU_Modulation_Depth",0, 1, 0.01, 3, 22
	SliderReverbEditOption "$REVMNU_Air_Absorption_HF", -100, 0, 0.01, 3, 23
	SliderReverbEditOption "$REVMNU_HF_Reference", 10000, 200000, 1, 3, 24
	SliderReverbEditOption "$REVMNU_LF_Reference",20, 10000, 0.1, 3, 25
	SliderReverbEditOption "$REVMNU_Room_Rolloff_Factor",0, 10, 0.01, 3, 26
	SliderReverbEditOption "$REVMNU_Diffusion",0, 100, 0.01, 3, 27
	SliderReverbEditOption "$REVMNU_Density",0, 100, 0.01, 3, 28
	StaticText " "
	ReverbOption "$REVMNU_Reflections_Scale", 29, OnOff
	ReverbOption "$REVMNU_Reflections_Delay_Scale", 30, OnOff
	ReverbOption "$REVMNU_Decay_Time_Scale", 31, OnOff
	ReverbOption "$REVMNU_Decay_HF_Limit", 32, OnOff
	ReverbOption "$REVMNU_Reverb_Scale", 33, OnOff
	ReverbOption "$REVMNU_Reverb_Delay_Scale", 34, OnOff
	ReverbOption "$REVMNU_Echo_Time_Scale", 35, OnOff
	ReverbOption "$REVMNU_Modulation_Time_Scale", 36, OnOff
}

OptionMenu "ReverbNew" protected
{
	Title "$REVMNU_NEW"
	ReverbSelect "$REVMNU_Based_on", "ReverbSelect"
	TextField "$REVMNU_Name", "reverbedit_name"
	NumberField "$REVMNU_ID_1", "reverbedit_id1", 0, 255
	NumberField "$REVMNU_ID_2", "reverbedit_id2", 0, 255
	Command "$REVMNU_Create", "createenvironment", 0, 1
}

OptionMenu "ReverbSave" protected
{
	Class "ReverbSave"
	Title "$REVMNU_SAVE"
	Command "$REVMNU_Save", "savereverbs"
	TextField "$REVMNU_File_name", "reverbsavename"
	StaticText ""
	StaticText "$REVMNU_Environments_to_save"
	// Rest is filled in by code.
}

/*=======================================
 *
 * Option Search menu
 *
 *=======================================*/

OptionMenu "os_Menu"
{
	Class "os_Menu"
	Title "$OS_TITLE"
}

OptionValue "os_isanyof_values"
{
	0, "$OS_ALL"
	1, "$OS_ANY"
}

//-------------------------------------------------------------------------------------------
//
// No multiplayer support for now, but kept for documentation.
//
//-------------------------------------------------------------------------------------------
/*
LISTMENU "MultiMenu"
{
	Size 320, 200
	ifgame(Duke, Nam, WW2GI)
	{
		position 160, 55, 135
		centermenu
		fixedspacing 5
		ifgame(Duke, Nam, WW2GI)
		{
			class "Duke.ListMenu"
		}
		else
		{
			class "Redneck.ListMenu"
		}
		animatedtransition
		NativeTextItem "$MNU_PLAYERSETUP", "p", "PlayerSetupMenu"
	}
	ifgame(blood)
	{
		position 160, 80, 150
		class "Blood.ListMenu"
		centermenu
		Linespacing 20
	}
	ifgame(shadowwarrior)
	{
		position 160, 80, 150
		class "ShadowWarrior.ListMenu"
		centermenu
		Linespacing 20
	}

	Caption "$MNU_NETWORKGAME"
	NativeTextItem "$MNU_JOINGAME", "j", "JoinGameMenu"
	NativeTextItem "$MNU_HOSTGAME", "h", "HostGameMenu"
}

OptionMenu "HostGameMenu"
{
	title "$MNU_HOSTGAME"
	Submenu "$NETMNU_OPTIONS", "MultiOptionsMenu"
	Command "$NETMNU_LAUNCH", "Launch_MP" // currently a no-op
}

OptionMenu "JoinGameMenu"
{
	TextField "$NETMNU_SERVER", "m_server"
	TextField "$NETMNU_PORT", "m_netport"
	SafeCommand "$NETMNU_CONNECT", "MultiConnect"
}

OptionValue "MultiGameType"
{
	0, "$NETMNU_GAMETYPE1"
	1, "$NETMNU_GAMETYPE2"
	2, "$NETMNU_GAMETYPE3"
	3, "$NETMNU_GAMETYPE4"
	4, "$NETMNU_GAMETYPE5"
}

OptionValue "MultiEpisode"
{
	0, "1"
	0, "2"
	0, "3"
	0, "4"
	0, "5"
	0, "6"
	0, "7"
}

OptionMenu "MultiOptionsMenu"
{
	title "$NETMNU_OPTIONS"
	Option "$NETMNU_GAMETYPE", "m_coop", "MultiGameType"
	Option "$NETMNU_EPISODE", "m_episode_number", "MultiEpisode"
	Option "$NETMNU_LEVEL", "m_level_number", "MultiEpisode"
	Submenu "$MNU_USERMAP", "MultiUserMap" // todo: fileselect item
	Option "$NETMNU_MONSTERS", "m_monsters", "OnOff"
	Option "$NETMNU_MAPEXITS", "m_noexit", "OnOff"
	Option "$NETMNU_FFIRE", "m_ffire", "OnOff"
	SafeCommand "$NETMNU_ACCEPT", "MultiAccept"
}
*/

OptionMenu "EngineCredits"
{
	title "$MNU_CREDITS"
	Submenu " ---->", "EngineCredits1a"
	StaticText "Developers", 1
	StaticText "Christoph Oelckers", 0
	StaticText "Mitchell Richters", 0
	StaticText ""
	StaticText "Additional Developers", 1
	StaticText "Rachael Alexanderson", 0
	StaticText "Magnus Norddahl", 0
	StaticText "Alexey Lysiuk", 0
	StaticText ""
	StaticText "The Raze team thanks the following contributors", 1
	StaticText "Nash Muhandes", 0
	StaticText "Dynamo", 0
}

OptionMenu "EngineCredits1a"
{
	title "$MNU_CREDITS"
	Submenu " ---->", "EngineCredits1b"
	StaticText "Raze QA", 1

	StaticText "sinisterseed      Kevin Caccamo     ", 0
	StaticText "Major Cooke       Dynamo            ", 0
	StaticText "Nash Muhandes     Martin Howe       ", 0
	StaticText "SanyaWaffles      Nigel Rowand      ", 0
}

OptionMenu "EngineCredits1b"
{
	title "$MNU_CREDITS"
	Submenu " ---->", "EngineCredits2"
	StaticText "ZDoom / GZDoom / ZDuke", 1
	StaticText "Marisa \"Randi\" Heit", 0
	StaticText "Braden \"Blzut3\" Obrzut", 0
	StaticText ""
	StaticText "Sound Engine", 1
	StaticText "Chris Robinson", 0
	StaticText ""
}


OptionMenu "EngineCredits2"
{
	title "$MNU_CREDITS"
	Submenu " ---->", "EngineCredits2a"
	StaticText "EDuke 2.0", 1
	StaticText "Matt Saettler", 0
	StaticText ""
	StaticText "JFDuke / JFSW", 1
    StaticText "Jonathon \"JonoF\" Fowler", 0
	StaticText ""
	StaticText "EDuke32 / VoidSW", 1
	StaticText "Richard \"TerminX\" Gobeille", 0
	StaticText "Evan \"Hendricks266\" Ramos", 0
	StaticText "Alex \"pogokeen\" Dawson", 0
	StaticText ""
	StaticText "Retired developers", 1
	StaticText "Pierre-Loup \"Plagman\" Griffais", 0
	StaticText "Philipp \"Helixhorned\" Kutin", 0
}

OptionMenu "EngineCredits2a"
{
	title "$MNU_CREDITS"
	Submenu " ---->", "EngineCredits2b"
	StaticText "RedNukem / NBlood", 1
	StaticText "Alexey \"Nuke.YKT\" Skrybykin", 0
	StaticText ""
	StaticText "SWP", 1
	StaticText "Ben \"ProAsm\" Smit", 0
	StaticText ""
	StaticText "PCExhumed", 1
	StaticText "Alexey \"Nuke.YKT\" Skrybykin", 0
	StaticText "sirlemonhead", 0
}

OptionMenu "EngineCredits2b"
{
	title "$MNU_CREDITS"
	Submenu " ---->", "EngineCredits3"
	StaticText "Widescreen graphics", 1
	StaticText "James Manning     fgsfds            ", 0
	StaticText "Dzierzan          Phredreeke        ", 0
	StaticText "MaxED             Kinsie            ", 0
	StaticText "Maxi Clouds                         ", 0
	StaticText ""
	StaticText "Duke 3D World Tour Skybox DEFs", 1
	StaticText "Evan \"Hendricks266\" Ramos", 0
}

OptionMenu "EngineCredits3"
{
	title "$MNU_CREDITS"
	//Submenu " ---->", "EngineCredits"	// This creates a circular dependency which makes the search tool crash.
	StaticText "The EDuke32 team thanks the following people", 1
	StaticText "for their contributions:", 1

	StaticText "Alexey Skrybykin  Bioman            Brandon Bergren  ", 0
	StaticText "Charlie Honig     Dan Gaskill       David Koenig     ", 0
	StaticText "Ed Coolidge       Emile Belanger    Fox              ", 0
	StaticText "Hunter_rus        James Bentler     Jasper Foreman   ", 0
	StaticText "Javier Martinez   Jeff Hart         Jonathan Strander", 0
	StaticText "Jordon Moss       Jose del Castillo Lachlan McDonald ", 0
	StaticText "LSDNinja          Marcus Herbert    Matthew Palmer   ", 0
	StaticText "Matt Saettler     NY00123           Ozkan Sezer      ", 0
	StaticText "Peter Green       Peter Veenstra    Robin Green      ", 0
	StaticText "Ryan Gordon       Stephen Anthony   tueidj           ", 0
	StaticText "Pär \"Parkar\" Karlsson", 0
}

