Menu Screens
Version and Copyright
Open BackScreen.lua
• Search for Game:GetVersion( .. which is at line 66 in patch 1.4
• Here you have the opportunity to make changes, or add an additional line of credit for your mod.
Common Knowledge
Reload Entire Menu
The entire menu-system is reloaded when the the game size is adjusted in the video options page. Based on this principle, scaling variables don't need to be hooked up to a function that is called regularly. For example, the letterboxing of FarOut Widescreen has operated on this principle since day one.
This principle can be used to accelerate development of menus, but the options below are probably better.

Another way is to configure the game to start on a specific menu screen. Then a launcher is used that automatically closes the game and restarts it. This method is quite effective.

Perhaps the best tactic for designing menus-screens is to use math. Understand the game's coordinate system. Some basics are here. If you know the size of the items you wish to position, it's not too hard to calculate the new coordinates. Get to know the conversion between pixels and the game's internal coordinates. For example, the menus-screens of BRP were done this way. Uniform distribution of items needs to be done this way, so it's best to learn the system if you need serious changes.
Start on a specific screen [for MenuScreen modding]
Open MainScreen.lua

Inside the UI.PageMainScreen.GUI.OnActivate function, add this:

GotoPage( "Options" , nil ); UI:DeactivateScreen( "GameOptions" ); UI:ActivateScreen( "ControlOptions" );
When you start the game, it will open directly to the controls page. If for some reason you are editing the control page, this will be quite helpful
Otherwise, use the GotoPage( ) UI:DeactivateScreen( ) and UI:ActivateScreen( ) functions to display what you need.
FarOut
Disable confirmation when quitting
If doing heavy modding of the menu-screens, the "Close game" confirmation dialog can be annoying. Disable it as follows
Open MainScreen.lua Find the ShowConfirmation function and replace it's code with Game:SendMessage( "Quit-Yes" ); FarOut
Various Menu Screen commands [actually used]
A collection of various commands used in the menu-screens. These are defined inside the CRYENGINE 1.4 MOD SDK

UI:ActivateScreen( "Options" );
UI:AddChatbox( Page , x , y , w , h , inputh , teambased )
UI:BuildDemoLoopList( )
UI:CanRenderGame( )
UI:CanSwitch( bSwitchOn )
UI:CheckCutSceneDrive( )
UI:CheckOptions( )
UI:ClearWidgets( );
UI:CreateScreenFromTable( "VideoAdvOptions" , UI.PageOptionsVideoAdv.GUI );
UI:DeactivateAllScreens( );
UI:DeactivateScreen( "GameOptions" );
UI:DetermineMachineSpec( checkCPU , checkGPU , checkSysMem , checkVidMem )
UI:DisableWidget( WeaponSlot );
UI:DisableWidgets( 1 , 1 , 1 );
UI:DumpMachineStats( );
UI:EnableSwitch( 0 );
UI:EnableWidget( UI.PageOptionsControl.GUI.mouseacceleration );
UI:EnableWidgets( 1 , 1 , 0 );
UI:FirstTabStop( );
UI:GetClassAt( x , y )
UI:GetCutSceneDrive( )
UI:GetDemoLoopDrive( )..UI.szCutSceneFolder.."demoloops/"..UI.VideoList[ iVideo ];
UI:GetFocus( );
UI:GetScreen( "MessageModeScreen" );
UI:GetScreenCount( )-1 do
UI:GetWeaponAt( y )
UI:GetWidget( "Apply" , "InGameTeamClass" );
UI:GotoGameOptions( )
UI:HideBackground( );
UI:HideBackground( );
UI:HideMouseCursor( );
UI:HideWidget( UI.PageBackScreen.GUI.background );
UI:IsScreenActive( "Options" ) ~= 0 ) ) ) then
UI:IsWidgetEnabled( UI.PageOptionsVideo.GUI.widget_fsaa ) ) then
UI:IsWidgetVisible( GUI.MaxServerPlayers ) and (not szText or (strlen(szText) < 1))) then bOk = 0; end
UI:OnActivate( )
UI:OnDeactivate( )
UI:OnIdle( fIdleTime )
UI:OnInit( )
UI:OnRelease( )
UI:OnSwitch MenuPage="..sMenuPageName); -- debugging
UI:PlayCutScene( "training_begin.bik" , "StartLevel "..UI.PageCampaignStart.szLevelName );
UI:PlayCutSceneEx( szCutSceneName , szMessage , szGotoPage , bGotoPageShowBack , 1 );
UI:PlayMusic( )
UI:PopulateTables( )
UI:PrecacheMPModels( )
UI:Reload( 1 );
UI:ReloadBanner( )
UI:SetBackgroundColor( "0 0 0 255" );
UI:SetFocus( self.background );
UI:SetFocusScreen( Sender );
UI:SetMouseCursor( System:LoadImage( UI.szMouseCursor ) );
UI:SetMouseCursorSize( 24 , 24 );
UI:ShowBackground( );
UI:ShowMouseCursor( );
UI:ShowWidget( modes[ newRenderMode + 1 ] );
UI:StopCutScene( )
UI:StopMusic( )
UI:TerminateGame( )
UI:UpdateBanner( )
UI:UpdateGlobals( );
UI:UpdatePunish( );
UI:WillTerminate( )