diff --git a/Source/Client/VGUIObjects.c b/Source/Client/VGUIObjects.c index 8fd6386f..bcc37ce5 100755 --- a/Source/Client/VGUIObjects.c +++ b/Source/Client/VGUIObjects.c @@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #include "VGUI.h" vector HUD_GetChatColor( float fTeam ) { diff --git a/Source/FreeCS-CE.prj b/Source/FreeCS-CE.prj index 6d43f66e..719cb093 100755 --- a/Source/FreeCS-CE.prj +++ b/Source/FreeCS-CE.prj @@ -24,7 +24,7 @@ - + @@ -59,20 +59,16 @@ - + - - - - - + - + @@ -114,19 +110,15 @@ - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/Source/Menu/Defs.h b/Source/Menu/Defs.h index a4bf4a60..fcb404ea 100755 --- a/Source/Menu/Defs.h +++ b/Source/Menu/Defs.h @@ -26,22 +26,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define TARGET_MENU 1 #define TARGET_CLIENT 2 -var vector vVideoAspect; var vector vVideoSize; -var vector vMenuSize; -var int iMenuPadding; +var vector vMenuOffset; var vector vMousePos; var float fInputKeyCode; var float fInputKeyASCII; var float fInputKeyDown; var float fMouseClick; +var float fButtonAlpha[8]; var int iMenuActive; -var float fMenuScale; -var float fMenuAlpha; - float frametime; float fLastTime; @@ -49,55 +45,80 @@ int iMenu; string *sMapList; int iMapCount; -// Draw.c & Objects.c -float fFadeAlpha; -int iButtonSelected; +enum { + MENU_MAIN, + MENU_QUIT +}; -/* -================= -gcd_r - -Returns the greatest common denominator -================= -*/ -int gcd_r( float a, float b ) { - if ( a == 0 ) { - return b; - } - return gcd_r( floor( b%a ), a ); -} - -/* -================= -Menu_Util_GetAspect - -Returns the aspect ratio for the current mode. -================= -*/ -vector Menu_Util_GetAspect( vector vResolution ) { - int r = gcd_r( vResolution_x, vResolution_y ); - return [ vResolution_x/r, vResolution_y/r ]; -} - -/* -================= -Menu_Util_GetAspectSize - -Returns the menu size for the given ratio. -================= -*/ -vector Menu_Util_GetMenuSize( vector vAspect ) { - float fScale = ( vAspect_x / vAspect_y ); - return [ rint( 480 * fScale ), 480 ]; -} - -/* -================= -Menu_Util_GetMenuPadding - -Returns the padding size for the current ratio. -================= -*/ -int Menu_Util_GetMenuPadding( void ) { - return ( vMenuSize_x - 640 ) / 2; -} +#define MENU_BUTTONS 69 +enum { + BTN_NEWGAME, + BTN_RESUMEGAME, + BTN_TRAINING, + BTN_CONFIG, + BTN_LOADGAME, + BTN_SAVELOAD, + BTN_README, + BTN_QUIT, + BTN_MULTIPLAYER, + BTN_EASY, + BTN_MEDIUM, + BTN_DIFFICULT, + BTN_SAVEGAME, + BTN_LOADGAME2, + BTN_CANCEL, + BTN_OPTIONS, + BTN_VIDEO, + BTN_AUDIO, + BTN_CONTROLS, + BTN_DONE, + BTN_QUICKSTART, + BTN_DEFAULTS, + BTN_OK, + BTN_VIDEOOPTIONS, + BTN_VIDEOMODES, + BTN_ADVCONTROLS, + BTN_ORDER, + BTN_DELETE, + BTN_INTERNET, + BTN_IRCCHAT, + BTN_LAN, + BTN_CUSTOMIZE, + BTN_SKIP, + BTN_EXIT, + BTN_CONNECT, + BTN_REFRESH, + BTN_FILTER, + BTN_CREATE, + BTN_CREATEGAME, + BTN_CHATROOMS, + BTN_LISTROOMS, + BTN_SEARCH, + BTN_SERVERS, + BTN_JOIN, + BTN_FIND, + BTN_CREATEROOM, + BTN_JOINGAME, + BTN_SEARCHGAMES, + BTN_FINDGAME, + BTN_STARTGAME, + BTN_GAMEINFO, + BTN_UPDATE, + BTN_ADDSERVER, + BTN_DISCONNECT, + BTN_CONSOLE, + BTN_CONTENTCONTROL, + BTN_UPDATE, + BTN_VISITWON, + BTN_PREVIEWS, + BTN_ADVOPTIONS, + BTN_3DINFO, + BTN_CUSTOMGAME, + BTN_ACTIVATE, + BTN_INSTALL, + BTN_VISITWEB, + BTN_REFRESHLIST, + BTN_DEACTIVATE, + BTN_SPECTATEGAME, + BTN_SPECTATEGAMES +}; \ No newline at end of file diff --git a/Source/Menu/Draw.c b/Source/Menu/Draw.c index f19fea0a..dd236e9a 100755 --- a/Source/Menu/Draw.c +++ b/Source/Menu/Draw.c @@ -18,8 +18,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -int iMenuStage; - enum { MAIN_NONE, MAIN_BROWSER, @@ -41,9 +39,7 @@ void m_drawback( void ) { if ( clientstate() == 2 ) { drawfill( '0 0', vVideoSize, '0 0 0', 0.75f ); } else { - drawmenupic( '0 0 0', "gfx/menu/back1", '720 480', '1 1 1', 1.0f, 0 ); - drawpic( '0 0 0', "menu_static", vVideoSize, '1 1 1', 1.0f, 0 ); - drawmenupic( '0 0 0', "gfx/menu/back2", '720 480', '1 1 1', 1.0f, 0 ); + drawpic( vMenuOffset, "gfx/shell/splash", '640 480', '1 1 1', 1.0f, 0 ); } } @@ -59,93 +55,25 @@ void m_draw( vector vScreenSize ) { return; } + if ( vVideoSize != vScreenSize ) { + vVideoSize = vScreenSize; + vMenuOffset_x = vVideoSize_x / 2 - 320; + vMenuOffset_y = vVideoSize_y / 2 - 240; + } + // we have to create frametime ourselves because menuqc is primitive frametime = ( time - fLastTime ); fLastTime = time; - // only update the videostuff if it's actually worth it - if ( vVideoSize != vScreenSize ) { - fFadeAlpha = 0.0f; - vVideoSize = vScreenSize; - vVideoAspect = Menu_Util_GetAspect( vVideoSize ); - vMenuSize = Menu_Util_GetMenuSize( vVideoAspect ); - iMenuPadding = Menu_Util_GetMenuPadding(); - fMenuScale = vVideoSize_y / vMenuSize_y; - } - if ( clientstate() != 2 ) { drawfill( '0 0', vVideoSize, '0 0 0', 1.0f ); } + + m_drawback(); - // for weird Android peeps - if ( vVideoSize_x < vVideoSize_y ) { - drawstring( '45 105', "FreeCS is designed for", '16 16', '1 1 1', 1.0f, 0 ); - drawstring( '45 125', "landscape mode. Please", '16 16', '1 1 1', 1.0f, 0 ); - drawstring( '45 145', "Switch the orientation.", '16 16', '1 1 1', 1.0f, 0 ); - return; - } - - if ( time < 5 ) { - iMenuStage = 0; - drawmenupic( '48 48 0', "gfx/logo", '64 64', '1 1 1', fFadeAlpha, 0 ); - drawmenupic( '144 48 0', "gfx/menu/freecs", '256 64', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 141', "FreeCS (c) 2016, 2017", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 181', "Note that FreeCS is not affiliated", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 201', "with Steam or Valve.", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 221', "The source code for this is released", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 241', "under the GPL v2.", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 281', "FreeCS requires the content from:", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 301', "Counter-Strike 1.5", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 321', "Half-Life", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 352', "Please see visit:", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 381', "eukara.github.io/FreeCS", '16 16', '1 1 1', fFadeAlpha, 0 ); - drawmenustring( '48 421', "Developed by Marco Hladik", '16 16', '1 1 1', fFadeAlpha, 0 ); - } else if ( time < 8 ) { - if ( iMenuStage == 0 ) { - fFadeAlpha = 0.0f; - iMenuStage = 1; - } - - m_drawback(); - - if ( fFadeAlpha < 1.0f ) { - drawfill( '0 0', vScreenSize, '0 0 0', 1 - fFadeAlpha ); - } - } else { - if ( iMenuStage == 1 ) { - fFadeAlpha = 0.0f; - iMenuStage = 2; - } - - m_drawback(); - - if ( !iMenu ) { - drawmenupic( '25 145 0', "gfx/menu/freecs", '236 43', '1 1 1', fFadeAlpha, 0 ); - } - - if ( clientstate() == 2 ) { - m_mainbutton( '430 276', " DISCONNECT", MAIN_DISCONNECT, m_button_disconnect ); - } - - m_mainbutton( '430 300', " FIND SERVER", MAIN_BROWSER, m_button_findserver ); - m_mainbutton( '430 324', "CREATE SERVER", MAIN_HOST, m_button_createserver ); - m_mainbutton( '430 348', " OPTIONS", MAIN_OPTIONS, m_button_options); - m_mainbutton( '430 372', " REPLAYS", MAIN_REPLAY, m_button_replays ); - m_mainbutton( '430 396', " QUIT", MAIN_QUIT, m_button_quit ); - - } - - if ( fFadeAlpha < 1.0f ) { - fFadeAlpha += frametime * 0.5; - if ( fFadeAlpha > 1.0f ) { - fFadeAlpha = 1.0f; - } - } - - if ( fMenuAlpha < 1.0f ) { - fMenuAlpha += frametime * 0.5; - if ( fMenuAlpha > 1.0f ) { - fMenuAlpha = 1.0f; - } + if ( iMenu == MENU_MAIN ) { + Menu_Main(); + } else if ( iMenu == MENU_QUIT ) { + Menu_Quit(); } } diff --git a/Source/Menu/Init.c b/Source/Menu/Init.c index b8b547e7..c1e8a6ae 100755 --- a/Source/Menu/Init.c +++ b/Source/Menu/Init.c @@ -26,10 +26,7 @@ Precaches and loading for the menu system ================= */ void m_init( void ) { - precache_pic( "gfx/menu/freecs" ); - precache_pic( "gfx/menu/back1" ); - precache_pic( "gfx/menu/back2" ); - precache_pic( "menu_static" ); + precache_pic( "gfx/shell/splash" ); // Index all the maps... TODO: Filter out /valve/ to avoid useless junk from being cached. searchhandle shMaps = search_begin( "maps/*.bsp", TRUE, TRUE ); diff --git a/Source/Menu/Input.c b/Source/Menu/Input.c index 3a4e9912..ba8501ed 100755 --- a/Source/Menu/Input.c +++ b/Source/Menu/Input.c @@ -27,10 +27,7 @@ Checks a specified region and returns TRUE if the mouse is above it. */ int Menu_InputCheckMouse( vector vPos, vector vReg ) { vector vSMins, vSMaxs; - - vReg = vReg * fMenuScale; - vPos = vPos * fMenuScale + [ iMenuPadding, 0, 0 ]; - + vSMins = vPos; vSMaxs = vPos; vSMins_x = vPos_x; diff --git a/Source/Menu/MenuMain.c b/Source/Menu/MenuMain.c new file mode 100755 index 00000000..09aff56b --- /dev/null +++ b/Source/Menu/MenuMain.c @@ -0,0 +1,53 @@ +/* +FreeCS Project +Copyright (C) 2016, 2017 Marco "eukara" Hladik + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +void Menu_Main( void ) { + static void Main_ButtonConsole( void ) { + localcmd( "toggleconsole\n" ); + } + static void Main_ButtonQuit( void ) { + iMenu = MENU_QUIT; + } + + Object_Button( '72 188', BTN_CONSOLE, Main_ButtonConsole, fButtonAlpha[0] ); + Object_Button( '72 272', BTN_CONFIG, __NULL__, fButtonAlpha[1] ); + + Object_Button( '72 328', BTN_MULTIPLAYER, __NULL__, fButtonAlpha[2] ); + Object_Button( '72 356', BTN_CUSTOMGAME, __NULL__, fButtonAlpha[3] ); + Object_Button( '72 384', BTN_README, __NULL__, fButtonAlpha[4] ); + Object_Button( '72 412', BTN_VISITWEB, __NULL__, fButtonAlpha[5] ); + Object_Button( '72 440', BTN_QUIT, Main_ButtonQuit, fButtonAlpha[6] ); + +} + +void Menu_Quit( void ) { + static void Quit_Cancel( void ) { + iMenu = MENU_MAIN; + } + static void Quit_Exit( void ) { + localcmd( "quit\n" ); + } + + Object_Frame( '192 192', '256 96' ); + drawstring( vMenuOffset + '200 216', "FREECS_QUITMSG", '8 8', MENU_FGCOLOR, 1.0f, 0 ); + + Object_Button( '200 248', BTN_QUIT, Quit_Exit, fButtonAlpha[0] ); + Object_Button_Right( '440 248', BTN_CANCEL, Quit_Cancel, fButtonAlpha[1] ); +} \ No newline at end of file diff --git a/Source/Menu/Menu_Create.c b/Source/Menu/Menu_Create.c deleted file mode 100755 index b53c87b8..00000000 --- a/Source/Menu/Menu_Create.c +++ /dev/null @@ -1,87 +0,0 @@ -/* -FreeCS Project -Copyright (C) 2016, 2017 Marco "eukara" Hladik - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -var int iMapSelected = 0; - -/* -================= -m_mainbutton - -Buttons on the main menu screen -================= -*/ -void menu_mapbutton( vector vPos, int iItem ) { - - if ( Menu_InputCheckMouse( vPos, [ stringwidth( sMapList[ iItem ], TRUE, '16 16' ), 16 ] ) == TRUE ) { - if ( fMouseClick == TRUE ) { - iMapSelected = iItem; - fMouseClick = FALSE; - localsound( "misc/talk.wav" ); - } - } - - if ( iMapSelected == iItem ) { - drawmenustring( vPos, sMapList[ iItem ], '16 16', '1 0.5 0', 1.0f, 0 ); - } else { - drawmenustring( vPos, sMapList[ iItem ], '16 16', '1 1 1', fFadeAlpha, 0 ); - } -} - -void m_button_createserver_go( void ) { - localcmd( sprintf( "map %s\n", sMapList[ iMapSelected ] ) ); -} - -void m_button_createserver( void ) { - static int iMapOffset = 0; - - static void m_button_createserver_listless( void ) { - if ( iMapOffset - 15 > 0 ) { - iMapOffset -= 15; - } else { - iMapOffset = 0; - } - } - - static void m_button_createserver_listmore( void ) { - if ( iMapOffset + 15 < ( iMapCount - 15 ) ) { - iMapOffset += 15; - } else { - iMapOffset = iMapCount - 15; - } - } - - m_drawmenushadow(); - drawmenustring( '43 60 0', "CREATE SERVER", '16 16 0', '1 1 1', fMenuAlpha, FALSE ); - - vector vPos = '75 100'; - for ( float i = iMapOffset; i < ( 15 + iMapOffset ); i++ ) { - if ( iMapSelected == i ) { - drawmenustring( [ vPos_x - 32, vPos_y ], ">>", '16 16 0', '1 1 1', fMenuAlpha, FALSE ); - } - - menu_mapbutton( vPos, i ); - vPos_y += 20; - } - - menu_buttoncmd( '332 332', "<<", '16 16', m_button_createserver_listless ); - menu_buttoncmd( '332 364', ">>", '16 16', m_button_createserver_listmore ); - - menu_buttoncmd( '232 410', "CREATE >>", '16 16', m_button_createserver_go ); -}; diff --git a/Source/Menu/Menu_Options.c b/Source/Menu/Menu_Options.c deleted file mode 100755 index dbf96dfd..00000000 --- a/Source/Menu/Menu_Options.c +++ /dev/null @@ -1,23 +0,0 @@ -/* -FreeCS Project -Copyright (C) 2016, 2017 Marco "eukara" Hladik - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -void m_button_options( void ) { - -}; diff --git a/Source/Menu/Menu_Quit.c b/Source/Menu/Menu_Quit.c deleted file mode 100755 index 86733c62..00000000 --- a/Source/Menu/Menu_Quit.c +++ /dev/null @@ -1,53 +0,0 @@ -/* -FreeCS Project -Copyright (C) 2016, 2017 Marco "eukara" Hladik - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -void m_button_quit( void ) { - static void m_button_quit_yes( void ) { - localcmd( "quit\n" ); - } - static void m_button_quit_no( void ) { - iMenu = 0; - } - - m_drawmenushadow(); - - drawmenustring( '43 60 0', "QUIT GAME", '16 16 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( '88 211 0', "Are you sure you want to quit?", '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - menu_buttoncmd( '112 235 0', "Yes", '8 8', m_button_quit_yes ); - menu_buttoncmd( '283 235 0', "No", '8 8', m_button_quit_no ); -}; - - -void m_button_disconnect( void ) { - static void m_button_disconnect_yes( void ) { - iMenu = 0; - localcmd( "disconnect\n" ); - } - static void m_button_disconnect_no( void ) { - iMenu = 0; - } - - m_drawmenushadow(); - - drawmenustring( '43 60 0', "DISCONNECT", '16 16 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( '88 211 0', "Close connection to the server?", '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - menu_buttoncmd( '112 235 0', "Yes", '8 8', m_button_disconnect_yes ); - menu_buttoncmd( '283 235 0', "No", '8 8', m_button_disconnect_no ); -}; diff --git a/Source/Menu/Menu_Replays.c b/Source/Menu/Menu_Replays.c deleted file mode 100755 index 1f4ac75e..00000000 --- a/Source/Menu/Menu_Replays.c +++ /dev/null @@ -1,23 +0,0 @@ -/* -FreeCS Project -Copyright (C) 2016, 2017 Marco "eukara" Hladik - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -void m_button_replays( void ) { - -}; diff --git a/Source/Menu/Menu_Servers.c b/Source/Menu/Menu_Servers.c deleted file mode 100755 index 35663c72..00000000 --- a/Source/Menu/Menu_Servers.c +++ /dev/null @@ -1,149 +0,0 @@ -/* -FreeCS Project -Copyright (C) 2016, 2017 Marco "eukara" Hladik - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -float fldName; -float fldAddress; -float fldPing; -float fldPlayers; -float fldMaxplayers; -float fldMap; -float fldTimelimit; -float fldFraglimit; -float fMaxServers; -float fServerClickTime; - -void Menu_Multiplayer_Connect( int iServerID ) { - if ( gethostcachenumber( fldMaxplayers, iServerID ) <= 0 ) { - return; - } - - if ( iServerID >= 0 ) { - localcmd( sprintf( "connect %s\n", gethostcachestring( fldAddress, iServerID ) ) ); - m_hide(); - } -} - -void Menu_Multiplayer_Find_Item( float fPos, int i, __inout int iSelected ) { - float fButtonAlpha = fMenuAlpha; - - if ( Menu_InputCheckMouse( [ 47, fPos ], [ 314, 8 ] ) == TRUE ) { - if ( fMouseClick == TRUE ) { - if ( iSelected != i ) { - iSelected = i; - fInputKeyCode = 0; - fMouseClick = FALSE; - fServerClickTime = time + 0.2; - } else { - if ( fServerClickTime > time ) { - Menu_Multiplayer_Connect( i ); - } - iSelected = -2; - fInputKeyCode = 0; - fMouseClick = FALSE; - } - } - } else { - fButtonAlpha *= 0.5; - } - - if ( iSelected == i ) { - drawmenufill( [ 40, fPos - 1 ], [ 323, 10 ], '1 1 1', fMenuAlpha * 0.5, 2 ); - drawmenustring( [48, fPos], sprintf( "%.16s", gethostcachestring( fldName, i ) ), '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( [184, fPos], sprintf( "%.10s", gethostcachestring( fldMap, i ) ), '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( [264, fPos], sprintf( "%d/%d", gethostcachenumber( fldPlayers, i ), gethostcachenumber( fldMaxplayers, i ) ), '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( [328, fPos], sprintf( "%.3s", ftos( gethostcachenumber( fldPing, i ) ) ), '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - } else { - drawmenustring( [48, fPos], sprintf( "^2%.16s", gethostcachestring( fldName, i ) ), '8 8 0', '1 1 1', fButtonAlpha, FALSE ); - drawmenustring( [184, fPos], sprintf( "%.10s", gethostcachestring( fldMap, i ) ), '8 8 0', '1 1 1', fButtonAlpha, FALSE ); - drawmenustring( [264, fPos], sprintf( "%d/%d", gethostcachenumber( fldPlayers, i ), gethostcachenumber( fldMaxplayers, i ) ), '8 8 0', '1 1 1', fButtonAlpha, FALSE ); - drawmenustring( [328, fPos], sprintf( "%.3s", ftos( gethostcachenumber( fldPing, i ) ) ), '8 8 0', '1 1 1', fButtonAlpha, FALSE ); - } -} - -void m_button_findserver( void ) { - static int iSelectedServer = -1; - static float fServerOffset; - - static void Menu_Multiplayer_Find_Refresh( void ) { - refreshhostcache(); - resorthostcache(); - } - static void Menu_Multiplayer_Find_ScrollDown( void ) { - fServerOffset++; - if ( fServerOffset > fMaxServers ) { - fServerOffset = fMaxServers; - } - } - static void Menu_Multiplayer_Find_ScrollUp( void ) { - fServerOffset--; - if ( fServerOffset < 0 ) { - fServerOffset = 0; - } - } - static void Menu_Multiplayer_Find_Connect( void ) { - Menu_Multiplayer_Connect( iSelectedServer ); - } - - m_drawmenushadow(); - drawmenustring( '43 60 0', "FIND SERVER", '16 16 0', '1 1 1', fMenuAlpha, FALSE ); - - if ( iSelectedServer == -1 ) { - localcmd( "com_protocolname FTE-Quake\n" ); - //clear the filter - resethostcachemasks(); - sethostcachemaskstring( 0, gethostcacheindexforkey("gamedir"), "freecs", SLIST_TEST_EQUAL ); - sethostcachesort( gethostcacheindexforkey( "ping" ), FALSE ); - refreshhostcache(); - resorthostcache(); - iSelectedServer = 0; - } - - fMaxServers = gethostcachevalue( SLIST_HOSTCACHEVIEWCOUNT ); - if ( fMaxServers >= 28 ) { - fMaxServers -= 28; - } - - fldName = gethostcacheindexforkey("name"); - fldAddress = gethostcacheindexforkey("cname"); - fldPing = gethostcacheindexforkey("ping"); - fldPlayers = gethostcacheindexforkey("numhumans"); - fldMaxplayers = gethostcacheindexforkey("maxplayers"); - fldMap = gethostcacheindexforkey("map"); - fldTimelimit = gethostcacheindexforkey("timelimit"); - fldFraglimit = gethostcacheindexforkey("fraglimit"); - - drawmenustring( '48 100 0', "Name", '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( '184 100 0', "Map", '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( '264 100 0', "Players", '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - drawmenustring( '328 100 0', "Ping", '8 8 0', '1 1 1', fMenuAlpha, FALSE ); - - float fPos = 120; - for ( float i = fServerOffset; i < ( 28 + fServerOffset ); i++ ) { - Menu_Multiplayer_Find_Item( fPos, i, iSelectedServer ); - fPos += 10; - } - - menu_buttoncmd( '128 410', "Refresh", '8 8', Menu_Multiplayer_Find_Refresh ); - menu_buttoncmd( '280 420', "Connect >>", '8 8', Menu_Multiplayer_Find_Connect ); - - // Scrollbars - menu_buttoncmd( '368 100', "<", '8 8', Menu_Multiplayer_Find_ScrollUp ); - menu_buttoncmd( '368 400', ">", '8 8', Menu_Multiplayer_Find_ScrollDown ); -} diff --git a/Source/Menu/Objects.c b/Source/Menu/Objects.c index 7fc0f0ab..eb8868ea 100755 --- a/Source/Menu/Objects.c +++ b/Source/Menu/Objects.c @@ -18,6 +18,80 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +string sButtonLabels[ MENU_BUTTONS ] = { + "BTN_NEWGAME", + "BTN_RESUMEGAME", + "BTN_TRAINING", + "BTN_CONFIG", + "BTN_LOADGAME", + "BTN_SAVELOAD", + "BTN_README", + "BTN_QUIT", + "BTN_MULTIPLAYER", + "BTN_EASY", + "BTN_MEDIUM", + "BTN_DIFFICULT", + "BTN_SAVEGAME", + "BTN_LOADGAME2", + "BTN_CANCEL", + "BTN_OPTIONS", + "BTN_VIDEO", + "BTN_AUDIO", + "BTN_CONTROLS", + "BTN_DONE", + "BTN_QUICKSTART", + "BTN_DEFAULTS", + "BTN_OK", + "BTN_VIDEOOPTIONS", + "BTN_VIDEOMODES", + "BTN_ADVCONTROLS", + "BTN_ORDER", + "BTN_DELETE", + "BTN_INTERNET", + "BTN_IRCCHAT", + "BTN_LAN", + "BTN_CUSTOMIZE", + "BTN_SKIP", + "BTN_EXIT", + "BTN_CONNECT", + "BTN_REFRESH", + "BTN_FILTER", + "BTN_CREATE", + "BTN_CREATEGAME", + "BTN_CHATROOMS", + "BTN_LISTROOMS", + "BTN_SEARCH", + "BTN_SERVERS", + "BTN_JOIN", + "BTN_FIND", + "BTN_CREATEROOM", + "BTN_JOINGAME", + "BTN_SEARCHGAMES", + "BTN_FINDGAME", + "BTN_STARTGAME", + "BTN_GAMEINFO", + "BTN_UPDATE", + "BTN_ADDSERVER", + "BTN_DISCONNECT", + "BTN_CONSOLE", + "BTN_CONTENTCONTROL", + "BTN_UPDATE", + "BTN_VISITWON", + "BTN_PREVIEWS", + "BTN_ADVOPTIONS", + "BTN_3DINFO", + "BTN_CUSTOMGAME", + "BTN_ACTIVATE", + "BTN_INSTALL", + "BTN_VISITWEB", + "BTN_REFRESHLIST", + "BTN_DEACTIVATE", + "BTN_SPECTATEGAME", + "BTN_SPECTATEGAMES" +}; + +#define MENU_FGCOLOR '1 0.59 0.19' + /* ================= drawmenupic @@ -25,107 +99,53 @@ drawmenupic Wrapper for drawpic that cares about resolution and scales. ================= */ -void drawmenupic( vector vPosition, string sPic, vector vSize, vector vRGB, float fAlpha, float fDrawflag ) { - vSize = vSize * fMenuScale; - vPosition = vPosition * fMenuScale; - drawpic( vPosition + [ iMenuPadding, 0, 0 ], sPic, vSize, vRGB, fAlpha, fDrawflag ); -} -/* -================= -drawmenufill - -Wrapper for drawpic that cares about resolution and scales. -================= -*/ -void drawmenufill( vector vPosition, vector vSize, vector vRGB, float fAlpha, float fDrawflag ) { - vSize = vSize * fMenuScale; - vPosition = vPosition * fMenuScale; - drawfill( vPosition + [ iMenuPadding, 0, 0 ], vSize, vRGB, fAlpha, fDrawflag ); -} - -/* -================= -drawmenustring - -Wrapper for drawstring that cares about resolution and scales. -================= -*/ -void drawmenustring( vector vPosition, string sText, vector vSize, vector vRGB, float fAlpha, float fDrawflag ) { - vSize = vSize * fMenuScale; - vPosition = vPosition * fMenuScale; - drawstring( vPosition + [ iMenuPadding, 0, 0 ], sText, vSize, vRGB, fAlpha, fDrawflag ); -} - -/* -================= -m_mainbutton - -Buttons on the main menu screen -================= -*/ -void m_mainbutton( vector vPos, string sText, int iItem, void() vFunc) { - static float fSelectionAlpha; +void Object_Button( vector vPosition, int iButtonID, void() vFunction, __inout float fAlpha ) { + static int iLastButton = -1; - if ( Menu_InputCheckMouse( vPos, '182 14' ) == TRUE ) { - if ( iButtonSelected != iItem ) { - iButtonSelected = iItem; - fSelectionAlpha = 0.0f; + vPosition += vMenuOffset; + + if ( fAlpha > 0.0f ) { + fAlpha -= frametime; + } else { + fAlpha = 0.0f; + } + + float sWidth = stringwidth( sButtonLabels[ iButtonID ], TRUE, '16 16' ); + + if ( Menu_InputCheckMouse( vPosition, [ sWidth, 16 ] ) == TRUE ) { + if ( iLastButton != iButtonID ) { + localcmd( "play ../media/launch_deny2.wav\n" ); } + iLastButton = iButtonID; + fAlpha = 1.0f; if ( fMouseClick == TRUE ) { - if ( iMenu == iItem ) { - iMenu = 0; - } else { - iMenu = iItem; - } - fMenuAlpha = 0.0f; + vFunction(); + localcmd( "play ../media/launch_select2.wav\n" ); fMouseClick = FALSE; - localsound( "buttons/button9.wav" ); - } - } - - if ( iMenu == iItem ) { - drawmenustring( vPos, sText, '14 14', '1 0.5 0', 1.0f, 0 ); - vFunc(); - } else { - if ( iButtonSelected == iItem ) { - drawmenustring( vPos, sText, '14 14', '1 1 1', 1 - fSelectionAlpha, 0 ); - drawmenustring( vPos, sText, '14 14', '0.3 0.3 1', fSelectionAlpha, 0 ); - } else { - drawmenustring( vPos, sText, '14 14', '1 1 1', fFadeAlpha, 0 ); } } - if ( fSelectionAlpha < 1.0f ) { - fSelectionAlpha += frametime; - if ( fSelectionAlpha > 1.0f ) { - fSelectionAlpha = 1.0f; - } - } + drawstring( vPosition, sButtonLabels[ iButtonID ], '16 16', MENU_FGCOLOR, 1.0f, 0 ); + drawstring( vPosition, sButtonLabels[ iButtonID ], '16 16', '1 1 1', fAlpha, 0 ); } - -void menu_buttoncmd( vector vPosition, string sLabel, vector vFSize, void() vFunc ) { - float fButtonAlpha = fMenuAlpha; - if ( Menu_InputCheckMouse( vPosition, [ stringwidth( sLabel, TRUE, vFSize), vFSize_y ] ) == TRUE ) { - if ( fMouseClick == TRUE ) { - vFunc(); - fMouseClick = FALSE; - localsound( "buttons/button7.wav" ); - } - drawmenufill( vPosition + [ 0, vFSize_y + 2 ], [ stringwidth( sLabel, TRUE, vFSize ), 2 ], '1 1 1', fMenuAlpha * 0.5, 0 ); - } else { - fButtonAlpha *= 0.5; - } - drawmenustring( vPosition, sLabel, vFSize, '1 1 1', fButtonAlpha, FALSE ); +void Object_Button_Right( vector vPosition, int iButtonID, void() vFunction, __inout float fAlpha ) { + vPosition_x -= stringwidth( sButtonLabels[ iButtonID ], TRUE, '16 16' ); + Object_Button( vPosition, iButtonID, vFunction, fAlpha ); } -#define OUTLINE_COLOR '0.8 0.8 1' -void m_drawmenushadow( void ) { - drawmenufill( '16 32', '380 430', '0 0 0', fMenuAlpha * 0.75, 2 ); // Backdrop - drawmenufill( '15 32', '1 430', OUTLINE_COLOR, fMenuAlpha * 0.5, 2 ); // Left - drawmenufill( '397 32', '1 430', OUTLINE_COLOR, fMenuAlpha * 0.5, 2 ); // Right - drawmenufill( '15 31', '383 1', OUTLINE_COLOR, fMenuAlpha * 0.5, 2 ); // Up - drawmenufill( '15 462', '383 1', OUTLINE_COLOR, fMenuAlpha * 0.5, 2 ); // Down +// Draws window with outline, border and title +void Object_Frame( vector vPos, vector vSize ) { + vPos += vMenuOffset; + + // Draw the background + drawfill( vPos, vSize, '0 0 0', 1.0f ); + + drawfill( vPos, [vSize_x, 1], MENU_FGCOLOR, 1.0f ); // Top + drawfill( [vPos_x, vPos_y + vSize_y], [vSize_x, 1], MENU_FGCOLOR, 1.0f ); // Bottom + + drawfill( vPos, [1, vSize_y], MENU_FGCOLOR, 1.0f ); // Left + drawfill( [vPos_x + vSize_x, vPos_y], [1, vSize_y], MENU_FGCOLOR, 1.0f ); // Right } diff --git a/Source/Menu/progs.src b/Source/Menu/progs.src index ed4c7163..642847f3 100755 --- a/Source/Menu/progs.src +++ b/Source/Menu/progs.src @@ -11,10 +11,6 @@ Defs.h Init.c Input.c Objects.c -Menu_Create.c -Menu_Options.c -Menu_Quit.c -Menu_Replays.c -Menu_Servers.c +MenuMain.c Draw.c #endlist diff --git a/freecs/gfx/conback.tga b/freecs/gfx/conback.tga new file mode 100755 index 00000000..af3e8a81 Binary files /dev/null and b/freecs/gfx/conback.tga differ diff --git a/freecs/gfx/menu/back1.tga b/freecs/gfx/menu/back1.tga deleted file mode 100755 index 80c96822..00000000 Binary files a/freecs/gfx/menu/back1.tga and /dev/null differ diff --git a/freecs/gfx/menu/back2.tga b/freecs/gfx/menu/back2.tga deleted file mode 100755 index 9408315c..00000000 Binary files a/freecs/gfx/menu/back2.tga and /dev/null differ diff --git a/freecs/gfx/menu/freecs.tga b/freecs/gfx/menu/freecs.tga deleted file mode 100755 index b86ee629..00000000 Binary files a/freecs/gfx/menu/freecs.tga and /dev/null differ diff --git a/freecs/gfx/menu/static.tga b/freecs/gfx/menu/static.tga deleted file mode 100755 index 60b8748c..00000000 Binary files a/freecs/gfx/menu/static.tga and /dev/null differ diff --git a/freecs/gfx/shell/splash.tga b/freecs/gfx/shell/splash.tga new file mode 100755 index 00000000..6627cd45 Binary files /dev/null and b/freecs/gfx/shell/splash.tga differ diff --git a/freecs/gfx/shell/splash.xcf b/freecs/gfx/shell/splash.xcf new file mode 100755 index 00000000..a493c8c8 Binary files /dev/null and b/freecs/gfx/shell/splash.xcf differ diff --git a/freecs/menu.dat b/freecs/menu.dat index fd32b102..adaf0364 100755 Binary files a/freecs/menu.dat and b/freecs/menu.dat differ