From 79ff25a6860ff99782f53dd67da3a60ad1fb703e Mon Sep 17 00:00:00 2001 From: eukara Date: Fri, 10 Nov 2017 21:27:26 -0600 Subject: [PATCH] Added nickname field to the options menu, as well as fixed the controls menu --- Source/FreeCS-CE.prj | 10 ++- Source/Menu/MenuConfiguration.c | 118 ++++++++++++++++++++++++++------ Source/Menu/Objects.c | 37 ++++++++++ freecs/menu.dat | Bin 37598 -> 40150 bytes freecs/menu.dat.en.po | 8 ++- 5 files changed, 150 insertions(+), 23 deletions(-) diff --git a/Source/FreeCS-CE.prj b/Source/FreeCS-CE.prj index 49ac912b..e4c2b427 100644 --- a/Source/FreeCS-CE.prj +++ b/Source/FreeCS-CE.prj @@ -114,6 +114,14 @@ - + + + + + + + + + diff --git a/Source/Menu/MenuConfiguration.c b/Source/Menu/MenuConfiguration.c index 92cd93eb..43f67f36 100755 --- a/Source/Menu/MenuConfiguration.c +++ b/Source/Menu/MenuConfiguration.c @@ -150,13 +150,20 @@ void Menu_Configuration_Video( void ) { } } - // Get the current scale method + // Get the current scale method... and resolution if ( iVideoScale == -1 ) { if ( cvar( "vid_conautoscale" ) == 0 ) { iVideoScale = 1; } else { iVideoScale = 0; } + + for ( int i = 1; i < iResCount; i++ ) { + tokenizebyseparator( strResolution[ i ], "x", " " ); + if ( ( stof( argv( 0 ) ) == vVideoSize_x && ( stof( argv( 1 ) ) == vVideoSize_y ) ) ) { + iSelectedResolution = i; + } + } } Object_Label( '196 148', _("VIDEO_RES"), '8 8' ); @@ -164,7 +171,7 @@ void Menu_Configuration_Video( void ) { Object_Scrollbar( '372 160', 284, iScrollRes ); - Menu_SetClipArea( '196 160', '164 300' ); + Menu_SetClipArea( '196 162', '164 298' ); vector vListPos = '200 165'; vListPos_y -= fabs( ( ( iResCount - 8 ) * 10 ) * ( iScrollRes / 300 ) ); @@ -192,8 +199,10 @@ void Menu_Configuration_Video( void ) { Object_CvarToggle( '400 205', "Virtual Synchronisation", "vid_vsync" ); Object_FuncToggle( '400 225', "HDPI Mode", Video_ScaleSwitch, iVideoScale ); - Object_Button( '32 148', BTN_OK, Video_Apply, fButtonAlpha[0] ); - Object_Button( '32 180', BTN_CANCEL, Menu_Configuration_ButtonCancel, fButtonAlpha[1] ); + drawtextfield( vMenuOffset + '400 265', '200 200', 1, _("VIDEO_RESTARTMSG") ) ; + + Object_Button( '32 148', BTN_REFRESH, Video_Apply, fButtonAlpha[0] ); + Object_Button( '32 180', BTN_DONE, Menu_Configuration_ButtonCancel, fButtonAlpha[1] ); } /* @@ -229,7 +238,26 @@ Menu_Configuration_Player ================= */ void Menu_Configuration_Player( void ) { - Object_Button( '32 148', BTN_OK, Menu_Configuration_ButtonOK, fButtonAlpha[0] ); + static string strPlayername; + static int iFirst = 1; + + static void Player_OK( void ) { + if ( strPlayername != __NULL__ ) { + localcmd( sprintf( "name %s\n", strPlayername ) ); + iMenu = MENU_CONFIGURATION; + } else { + strPlayername = cvar_string( "name" ); + } + } + + if ( iFirst == 1 ) { + strPlayername = cvar_string( "name" ); + iFirst = 0; + } + + Object_Label( '196 148', _("PLAYER_NICK"), '8 8' ); + Object_Textfield( '196 160', strPlayername, 16 ); + Object_Button( '32 148', BTN_OK, Player_OK, fButtonAlpha[0] ); Object_Button( '32 180', BTN_CANCEL, Menu_Configuration_ButtonCancel, fButtonAlpha[1] ); } @@ -240,35 +268,56 @@ Menu_Configuration_Controls */ void Menu_Configuration_Controls( void ) { static float fActClickTime; + static int iBindKey = -1; + + void Controls_Default( void ) { + localcmd( "unbindall\nexec default.cfg\n" ); + } + void Controls_DisplayAct( vector vPosition, int i, __inout int iSelected ) { - float fItemAlpha = 1.0f; + float fItemAlpha = 0.8f; + + float fBindKey = tokenize( findkeysforcommand( strActBind[ i ] ) ); + string sBindTx = ""; + float j, k; + + for( j = 0; j < fBindKey; ++j ) { + k = stof( argv( j ) ); + if( k != -1 ) { + if( sBindTx != "" ) { + sBindTx = strcat( sBindTx, ", " ); + } + sBindTx = strcat( sBindTx, keynumtostring( k ) ); + } + } vPosition += vMenuOffset; if ( Menu_InputCheckMouse( [ vPosition_x, vPosition_y ], [ 397, 8 ] ) == TRUE ) { - if ( fMouseClick == TRUE ) { - if ( iSelected != i ) { - iSelected = i; - fInputKeyCode = 0; - fMouseClick = FALSE; - fActClickTime = time + 0.2; - } else { - // change bind - iSelected = -2; - fInputKeyCode = 0; - fMouseClick = FALSE; + if ( strActBind[ i ] != "blank" ) { + fItemAlpha = 1.0f; + if ( fMouseClick == TRUE ) { + if ( iSelected != i ) { + iSelected = i; + fInputKeyCode = 0; + fMouseClick = FALSE; + fActClickTime = time + 0.2; + } else { + // change bind + iBindKey = iSelected; + fInputKeyCode = 0; + fMouseClick = FALSE; + } } } - } else { - fItemAlpha = 0.8; } if ( iSelected == i ) { drawfill( [ vPosition_x, vPosition_y - 1 ], [ 397, 10 ], '1 1 1', 0.5, 2 ); - drawstring( [vPosition_x + 8, vPosition_y], strActBind[ i ], '8 8 0', '1 1 1', 1.0f, FALSE ); + drawstring( [vPosition_x + 8, vPosition_y], sBindTx, '8 8 0', '1 1 1', 1.0f, FALSE ); drawstring( [vPosition_x + 128, vPosition_y], strActDescr[ i ], '8 8 0', '1 1 1', 1.0f, FALSE ); } else { - drawstring( [vPosition_x + 8, vPosition_y], strActBind[ i ], '8 8 0', '1 1 1', fItemAlpha, FALSE ); + drawstring( [vPosition_x + 8, vPosition_y], sBindTx, '8 8 0', '1 1 1', fItemAlpha, FALSE ); drawstring( [vPosition_x + 128, vPosition_y], strActDescr[ i ], '8 8 0', '1 1 1', fItemAlpha, FALSE ); } } @@ -278,6 +327,7 @@ void Menu_Configuration_Controls( void ) { Object_Button( '32 148', BTN_OK, Menu_Configuration_ButtonOK, fButtonAlpha[0] ); Object_Button( '32 180', BTN_CANCEL, Menu_Configuration_ButtonCancel, fButtonAlpha[1] ); + Object_Button( '32 244', BTN_DEFAULTS, Controls_Default, fButtonAlpha[2] ); Object_Frame( '196 140', '404 308' ); Object_Scrollbar( '604 140', 308, iScrollAct ); @@ -294,6 +344,32 @@ void Menu_Configuration_Controls( void ) { vListPos_y += 10; } Menu_ResetClipArea(); + + if ( iBindKey >= 0 ) { + Object_Frame( '196 150', '404 100' ); + drawstring( vMenuOffset + '216 170', "Press any button to assign it to:", '8 8 0', autocvar_menu_fgcolor, 1.0f, FALSE ); + drawstring( vMenuOffset + '216 232', "To clear, press Backspace.", '8 8 0', autocvar_menu_fgcolor, 1.0f, FALSE ); + drawstring( vMenuOffset + '216 190', strActDescr[ iBindKey ], '16 16', autocvar_menu_fgcolor, 1.0f, FALSE ); + + if ( fInputKeyCode > 0 ) { + if( fInputKeyCode == K_BACKSPACE ) { + float fBindKey = tokenize( findkeysforcommand( strActBind[ iBindKey ] ) ); + + for ( int i = 0; i < fBindKey; i++ ) { + localcmd( sprintf( "unbind %s\n", keynumtostring( stof( argv( i ) ) ) ) ); + } + + iBindKey = -1; + fInputKeyCode = 0; + fInputKeyASCII = 0; + } else if ( fInputKeyCode != K_ESCAPE ) { + localcmd( sprintf( "bind %s %s\n", keynumtostring( fInputKeyCode ), strActBind[ iBindKey ] ) ); + iBindKey = -1; + fInputKeyCode = 0; + fInputKeyASCII = 0; + } + } + } } /* diff --git a/Source/Menu/Objects.c b/Source/Menu/Objects.c index 79615071..74366aea 100644 --- a/Source/Menu/Objects.c +++ b/Source/Menu/Objects.c @@ -311,4 +311,41 @@ void Object_FuncToggle( vector vPosition, string sLabel, void( void ) vFunc, int } else { drawstring( vPosition, sprintf( "[X] %s", sLabel ), '8 8', autocvar_menu_fgcolor, fAlpha, 0 ); } +} + + +/* +================= +Object_FuncToggle + +A nice way of toggling cvars. +================= +*/ +void Object_Textfield( vector vPosition, __inout string strValue, int iMaxChars ) { + float fFieldAlpha = 0.8f; + vector vSize = [ ( iMaxChars * 8 ) + 16, 12 ]; + + Object_Frame( vPosition - '2 2', vSize ); + + vPosition += vMenuOffset; + + if ( Menu_InputCheckMouse( vPosition, vSize ) == TRUE ) { + if( fInputKeyCode == K_BACKSPACE ) { + if ( strValue ) { + strValue = substring( strValue, 0, strlen( strValue ) - 1 ); + fInputKeyCode = 0; + fInputKeyASCII = 0; + } + } else if ( fInputKeyASCII ) { + if ( strlen( strValue ) <= iMaxChars ) { + strValue = sprintf( "%s%s", strValue, chr2str( fInputKeyASCII ) ); + fInputKeyASCII = 0; + fInputKeyCode = 0; + } + } + fFieldAlpha = 1.0f; + drawstring( vPosition, sprintf( "%s_", strValue ), '8 8 0', autocvar_menu_fgcolor, fFieldAlpha, FALSE ); + } else { + drawstring( vPosition, strValue, '8 8 0', autocvar_menu_fgcolor, fFieldAlpha, FALSE ); + } } \ No newline at end of file diff --git a/freecs/menu.dat b/freecs/menu.dat index 5480ea0045dfbc4d5a21add158d997f4f74a2064..d99dca8aee0be80d7c897a3349a2a630374d34db 100755 GIT binary patch literal 40150 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 c2{;Df|DOM|!2h-d>ZTuvnUZ^+zn