Version and Copyright
• 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.
Reload Entire Menu
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]
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.
Disable confirmation when quitting
Open MainScreen.lua
Find the ShowConfirmation function and replace it's code with Game:SendMessage( "Quit-Yes" );
Various Menu Screen commands [actually used]
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( )