diff options
author | Andrey Nazarov <skuller@skuller.net> | 2008-02-17 22:53:39 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2008-02-17 22:53:39 +0000 |
commit | 4034314816f7ec9e26c9b9bfc2630c8ca0a24874 (patch) | |
tree | d48be98832d2d9cb977540541fae1acb1859142b /source/cl_console.c | |
parent | a5afaf65af8ef50d1ce8bbd9e2133239013c26f7 (diff) |
Huge search and replace commit.
Use fixed size integer types from stdint.h instead of custom defined ones.
Get endianess infromation form endian.h.
Added `remotemode' console command.
Link with -ldl only on Linux.
Diffstat (limited to 'source/cl_console.c')
-rw-r--r-- | source/cl_console.c | 138 |
1 files changed, 99 insertions, 39 deletions
diff --git a/source/cl_console.c b/source/cl_console.c index c2d9e8a..e07579e 100644 --- a/source/cl_console.c +++ b/source/cl_console.c @@ -30,6 +30,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define CON_LINEWIDTH 100 // fixed width, do not need more +typedef enum { + CHAT_NONE, + CHAT_DEFAULT, + CHAT_TEAM +} chatMode_t; + +typedef enum { + CON_DEFAULT, + CON_CHAT, + CON_REMOTE +} consoleMode_t; + typedef struct console_s { qboolean initialized; @@ -56,8 +68,10 @@ typedef struct console_s { commandPrompt_t chatPrompt; commandPrompt_t prompt; - qboolean chatTeam; - qboolean chatMode; + chatMode_t chat; + consoleMode_t mode; + netadr_t remoteAddress; + char *remotePassword; } console_t; static console_t con; @@ -101,12 +115,14 @@ Con_Close ================ */ void Con_Close( void ) { - Key_SetDest( cls.key_dest & ~KEY_CONSOLE ); - con.currentHeight = 0; - con.chatMode = qfalse; - Con_ClearTyping(); Con_ClearNotify_f(); + + Key_SetDest( cls.key_dest & ~KEY_CONSOLE ); + + con.currentHeight = 0; + con.mode = CON_DEFAULT; + con.chat = CHAT_DEFAULT; } /* @@ -125,8 +141,7 @@ void Con_ToggleConsole_f( void ) { // FIXME: use old q2 style Key_SetDest( ( cls.key_dest | KEY_CONSOLE ) & ~KEY_MESSAGE ); - - con.chatMode = qfalse; + //con.mode = CON_DEFAULT; } /* @@ -138,8 +153,8 @@ static void Con_ToggleChat_f( void ) { Con_ToggleConsole_f(); if( ( cls.key_dest & KEY_CONSOLE ) && cls.state == ca_active ) { - con.chatTeam = qfalse; - con.chatMode = qtrue; + con.mode = CON_CHAT; + con.chat = CHAT_DEFAULT; } } @@ -152,8 +167,8 @@ static void Con_ToggleChat2_f( void ) { Con_ToggleConsole_f(); if( ( cls.key_dest & KEY_CONSOLE ) && cls.state == ca_active ) { - con.chatTeam = qtrue; - con.chatMode = qtrue; + con.mode = CON_CHAT; + con.chat = CHAT_TEAM; } } @@ -244,10 +259,10 @@ Con_MessageMode_f ================ */ static void Con_MessageMode_f( void ) { - con.chatTeam = qfalse; - if( Cmd_Argc() > 1 ) { - IF_Replace( &con.chatPrompt.inputLine, Cmd_RawArgs() ); - } + Con_Close(); + + con.chat = CHAT_DEFAULT; + IF_Replace( &con.chatPrompt.inputLine, Cmd_RawArgs() ); Key_SetDest( cls.key_dest | KEY_MESSAGE ); } @@ -257,13 +272,42 @@ Con_MessageMode2_f ================ */ static void Con_MessageMode2_f( void ) { - con.chatTeam = qtrue; - if( Cmd_Argc() > 1 ) { - IF_Replace( &con.chatPrompt.inputLine, Cmd_RawArgs() ); - } + Con_Close(); + + con.chat = CHAT_TEAM; + IF_Replace( &con.chatPrompt.inputLine, Cmd_RawArgs() ); Key_SetDest( cls.key_dest | KEY_MESSAGE ); } +static void Con_RemoteMode_f( void ) { + netadr_t adr; + char *s; + + if( Cmd_Argc() != 3 ) { + Com_Printf( "Usage: %s <address> <password>\n", Cmd_Argv( 0 ) ); + return; + } + + s = Cmd_Argv( 1 ); + if( !NET_StringToAdr( s, &adr, PORT_SERVER ) ) { + Com_Printf( "Bad address: %s\n", s ); + return; + } + + s = Cmd_Argv( 2 ); + + if( !( cls.key_dest & KEY_CONSOLE ) ) { + Con_ToggleConsole_f(); + } + + con.mode = CON_REMOTE; + con.remoteAddress = adr; + if( con.remotePassword ) { + Z_Free( con.remotePassword ); + } + con.remotePassword = Z_CopyString( s ); +} + /* ================ Con_CheckResize @@ -318,6 +362,7 @@ static const cmdreg_t c_console[] = { { "togglechat2", Con_ToggleChat2_f }, { "messagemode", Con_MessageMode_f }, { "messagemode2", Con_MessageMode2_f }, + { "remotemode", Con_RemoteMode_f, CL_Connect_g }, { "clear", Con_Clear_f }, { "clearnotify", Con_ClearNotify_f }, { "condump", Con_Dump_f, Con_Dump_g }, @@ -601,7 +646,7 @@ void Con_DrawNotify( void ) { ref.SetColor( DRAW_COLOR_CLEAR, NULL ); if( cls.key_dest & KEY_MESSAGE ) { - if( con.chatTeam ) { + if( con.chat == CHAT_TEAM ) { text = "say_team:"; skip = 11; } else { @@ -749,18 +794,25 @@ void Con_DrawSolidConsole( void ) { if( cls.key_dest & KEY_CONSOLE ) { y = vislines - CON_PRESTEP + CHAR_HEIGHT; - // draw it - x = IF_Draw( &con.prompt.inputLine, 2 * CHAR_WIDTH, y, - UI_DRAWCURSOR, con.charsetImage ); - // draw command prompt - i = 17; - if( con.chatMode ) { - i |= 128; - } else { - ref.SetColor( DRAW_COLOR_RGBA, colorYellow ); + switch( con.mode ) { + case CON_CHAT: + i = '&'; + break; + case CON_REMOTE: + i = '#'; + break; + default: + i = 17; + break; } + ref.SetColor( DRAW_COLOR_RGBA, colorYellow ); ref.DrawChar( CHAR_WIDTH, y, 0, i, con.charsetImage ); + ref.SetColor( DRAW_COLOR_CLEAR, NULL ); + + // draw input line + x = IF_Draw( &con.prompt.inputLine, 2 * CHAR_WIDTH, y, + UI_DRAWCURSOR, con.charsetImage ); } y = vislines - CON_PRESTEP + CHAR_HEIGHT; @@ -866,7 +918,7 @@ void Con_DrawConsole( void ) { */ static void Con_Say( char *msg ) { - Cbuf_AddText( con.chatTeam ? "say_team \"" : "say \"" ); + Cbuf_AddText( con.chat == CHAT_TEAM ? "say_team \"" : "say \"" ); Cbuf_AddText( msg ); Cbuf_AddText( "\"\n" ); } @@ -881,10 +933,16 @@ static void Con_Action( void ) { // backslash text are commands, else chat if( cmd[0] == '\\' || cmd[0] == '/' ) { - Cbuf_AddText( cmd + 1 ); // skip slash - Cbuf_AddText( "\n" ); + if( con.mode == CON_REMOTE ) { + CL_SendRcon( &con.remoteAddress, con.remotePassword, cmd + 1 ); + } else { + Cbuf_AddText( cmd + 1 ); // skip slash + Cbuf_AddText( "\n" ); + } } else { - if( cls.state == ca_active && con.chatMode ) { + if( con.mode == CON_REMOTE ) { + CL_SendRcon( &con.remoteAddress, con.remotePassword, cmd ); + } else if( cls.state == ca_active && con.mode == CON_CHAT ) { Con_Say( cmd ); } else { Cbuf_AddText( cmd ); @@ -913,6 +971,11 @@ void Key_Console( int key ) { return; } + if( ( key == 'd' || key == 'c' ) && Key_IsDown( K_CTRL ) ) { + con.mode = CON_DEFAULT; + return; + } + if( key == K_ENTER || key == K_KP_ENTER ) { Con_Action(); goto scroll; @@ -1023,12 +1086,9 @@ void Key_Message( int key ) { if( key == K_ENTER || key == K_KP_ENTER ) { char *cmd = Prompt_Action( &con.chatPrompt ); - if( cmd ) { - Cbuf_AddText( con.chatTeam ? "say_team \"" : "say \"" ); - Cbuf_AddText( cmd ); - Cbuf_AddText( "\"\n" ); + if( cmd ) { + Con_Say( cmd ); } - Key_SetDest( cls.key_dest & ~KEY_MESSAGE ); return; } |