diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-07-06 19:36:04 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-07-06 19:36:04 +0000 |
| commit | ca019ecd6715557a572ac9a56de556434f9b31aa (patch) | |
| tree | 5e39db57af3433dd7b44162cdf5f388111e091fb /src | |
| parent | 05f2c8aacf46e643b2bd916b7c8139e8a259122a (diff) | |
- podpora chatu :)
git-svn-id: http://opensvn.csie.org/tuxanci_ng@109 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/base/proto.c | 55 | ||||
| -rw-r--r-- | src/base/proto.h | 4 | ||||
| -rw-r--r-- | src/base/server.c | 6 | ||||
| -rw-r--r-- | src/client/client.c | 1 | ||||
| -rwxr-xr-x | src/client/font.c | 41 | ||||
| -rwxr-xr-x | src/client/font.h | 1 | ||||
| -rw-r--r-- | src/client/panel.c | 6 | ||||
| -rw-r--r-- | src/client/radar.c | 2 | ||||
| -rw-r--r-- | src/screen/screen_world.c | 55 |
10 files changed, 132 insertions, 42 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d2d93c7..c97e4f5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,7 +10,8 @@ ${WORKDIR}/net/udp ${WORKDIR}/net/dns SET ( SRC_client -${WORKDIR}/client/language ${WORKDIR}/client/radar ${WORKDIR}/client/interface ${WORKDIR}/client/game ${WORKDIR}/client/image ${WORKDIR}/client/term ${WORKDIR}/client/layer ${WORKDIR}/client/screen ${WORKDIR}/client/panel ${WORKDIR}/client/client ${WORKDIR}/client/configFile ${WORKDIR}/client/font ${WORKDIR}/client/keytable +#${WORKDIR}/client/language ${WORKDIR}/client/radar ${WORKDIR}/client/interface ${WORKDIR}/client/game #${WORKDIR}/client/image ${WORKDIR}/client/term ${WORKDIR}/client/layer ${WORKDIR}/client/screen ${WORKDIR}/client/panel #${WORKDIR}/client/client ${WORKDIR}/client/configFile ${WORKDIR}/client/font ${WORKDIR}/client/keytable +${WORKDIR}/client/layer ${WORKDIR}/client/term ${WORKDIR}/client/screen ${WORKDIR}/client/interface ${WORKDIR}/client/client ${WORKDIR}/client/chat ${WORKDIR}/client/configFile ${WORKDIR}/client/language ${WORKDIR}/client/keytable ${WORKDIR}/client/font ${WORKDIR}/client/game ${WORKDIR}/client/radar ${WORKDIR}/client/panel ${WORKDIR}/client/image ${WORKDIR}/screen/screen_choiceArena ${WORKDIR}/screen/screen_table ${WORKDIR}/screen/screen_setting ${WORKDIR}/screen/screen_credits ${WORKDIR}/screen/screen_world ${WORKDIR}/screen/screen_analyze ${WORKDIR}/screen/screen_mainMenu ${WORKDIR}/screen/screen_browser ${WORKDIR}/screen/screen_gameType diff --git a/src/base/proto.c b/src/base/proto.c index 722d443..b5f8d39 100644 --- a/src/base/proto.c +++ b/src/base/proto.c @@ -27,6 +27,7 @@ #include "client.h" #include "term.h" #include "radar.h" +#include "chat.h" #endif #ifdef PUBLIC_SERVER @@ -687,6 +688,60 @@ void proto_recv_shot_client(char *msg) #ifndef PUBLIC_SERVER +void proto_send_chat_client(char *s) +{ + char msg[STR_PROTO_SIZE]; + sprintf(msg, "chat %s\n", s); + sendServer(msg); +} + +#endif + +void proto_recv_chat_server(client_t *client, char *msg) +{ + char out[STR_PROTO_SIZE]; + int len; + + if( client->tux == NULL ) + { + return; + } + + len = strlen(msg); + msg[len-1] = '\0'; + + snprintf(out, STR_PROTO_SIZE, "chat %s:%s\n", client->tux->name, msg+5); + + proto_send_chat_server(PROTO_SEND_ALL, NULL, out); +} + +void proto_send_chat_server(int type, client_t *client, char *msg) +{ + protoSendClient(type, client, msg, CHECK_FORNT_TYPE_SIMPLE, CHECK_FRONT_ID_NONE); + +#ifndef PUBLIC_SERVER + proto_recv_chat_client(msg); +#endif +} + +#ifndef PUBLIC_SERVER + +void proto_recv_chat_client(char *msg) +{ + int len; + + assert( msg != NULL ); + + len = strlen(msg); + msg[len-1] = '\0'; + + addToChat(msg+5); +} + +#endif + +#ifndef PUBLIC_SERVER + void proto_send_ping_client() { char msg[STR_PROTO_SIZE]; diff --git a/src/base/proto.h b/src/base/proto.h index 116562b..bcc8f42 100644 --- a/src/base/proto.h +++ b/src/base/proto.h @@ -69,6 +69,10 @@ extern void proto_recv_additem_client(char *msg); extern void proto_send_shot_server(int type, client_t *client, shot_t *p); extern void proto_recv_shot_client(char *msg); extern void proto_send_ping_client(); +extern void proto_send_chat_client(char *s); +extern void proto_recv_chat_server(client_t *client, char *msg); +extern void proto_send_chat_server(int type, client_t *client, char *msg); +extern void proto_recv_chat_client(char *msg); extern void proto_recv_ping_server(client_t *client, char *msg); extern void proto_send_ping_server(int type, client_t *client); extern void proto_recv_ping_client(char *msg); diff --git a/src/base/server.c b/src/base/server.c index 9132a46..3c1148a 100644 --- a/src/base/server.c +++ b/src/base/server.c @@ -613,6 +613,12 @@ static void eventClientBuffer(client_t *client) continue; } + if( strncmp(line, "chat", 4) == 0 ) + { + proto_recv_chat_server(client, line); + continue; + } + if( strncmp(line, "ping", 4) == 0 ) { proto_recv_ping_server(client, line); diff --git a/src/client/client.c b/src/client/client.c index 26df8dc..1ac74dd 100644 --- a/src/client/client.c +++ b/src/client/client.c @@ -172,6 +172,7 @@ void eventServerBuffer() if( strncmp(line, "additem", 7) == 0 )proto_recv_additem_client(line); if( strncmp(line, "shot", 4) == 0 )proto_recv_shot_client(line); if( strncmp(line, "kill", 4) == 0 )proto_recv_kill_client(line); + if( strncmp(line, "chat", 4) == 0 )proto_recv_chat_client(line); if( strncmp(line, "ping", 4) == 0 )proto_recv_ping_client(line); if( strncmp(line, "end", 3) == 0 )proto_recv_end_client(line); diff --git a/src/client/font.c b/src/client/font.c index 3b1267a..0e67921 100755 --- a/src/client/font.c +++ b/src/client/font.c @@ -69,6 +69,47 @@ void drawFont(char *s, int x, int y, int r, int g, int b) SDL_FreeSurface(text); } +void drawFontMaxSize(char *s, int x, int y, int w, int h, int r, int g, int b) +{ + SDL_Rect src_rect, dst_rect; + SDL_Surface *text; + SDL_Surface *p; + SDL_Color farba_pisma = {r, g, b, 0}; + int my_w, my_h; + + assert( s != NULL ); + + p = getSDL_Screen(); + + text = TTF_RenderUTF8_Blended(g_font, s, farba_pisma); + + + my_w = text->w; + + if( my_w > w ) + { + my_w = w; + } + + my_h = text->h; + + if( my_w > w ) + { + my_h = h; + } + + src_rect.x = 0; + src_rect.y = 0; + src_rect.w = my_w; + src_rect.h = my_h; + + dst_rect.x = x; + dst_rect.y = y; + + SDL_BlitSurface(text, &src_rect, p, &dst_rect); + SDL_FreeSurface(text); +} + /* * Vrati velkost daneho fontu. */ diff --git a/src/client/font.h b/src/client/font.h index f938b3b..cf8ece6 100755 --- a/src/client/font.h +++ b/src/client/font.h @@ -19,6 +19,7 @@ extern bool_t isFontInicialized(); extern void initFont(char *file,int size); extern void drawFont(char *s,int x,int y,int r,int g,int b); +extern void drawFontMaxSize(char *s, int x, int y, int w, int h, int r, int g, int b); extern int getFontSize(); extern void getTextSize(char *s, int *w, int *h); extern void quitFont(); diff --git a/src/client/panel.c b/src/client/panel.c index 3338544..7a5b3e2 100644 --- a/src/client/panel.c +++ b/src/client/panel.c @@ -10,6 +10,7 @@ #include "image.h" #include "panel.h" #include "font.h" +#include "chat.h" static SDL_Surface *g_panel; static SDL_Surface *g_shot; @@ -145,6 +146,11 @@ void drawPanel(list_t *listTux) drawImage(g_panel, PANEL_LOCATION_X, PANEL_LOCATION_Y, 0, 0, g_panel->w, g_panel->h); drawScore(listTux); + if( isRecivedNewMsg() ) + { + drawFont("recived new msg", PANEL_LOCATION_X, PANEL_LOCATION_Y, COLOR_WHITE); + } + for( i = 0 ; i < listTux->count ; i++ ) { tux_t *thisTux; diff --git a/src/client/radar.c b/src/client/radar.c index 789fb45..6f6b028 100644 --- a/src/client/radar.c +++ b/src/client/radar.c @@ -85,7 +85,7 @@ void initRadar() assert( isImageInicialized() == TRUE ); assert( isInterfaceInicialized() == TRUE ); - g_radar = addImageData("radar.png", IMAGE_ALPHA, "radar", IMAGE_GROUP_USER); + g_radar = addImageData("radar.png", IMAGE_NO_ALPHA, "radar", IMAGE_GROUP_USER); listRadar = newList(); } diff --git a/src/screen/screen_world.c b/src/screen/screen_world.c index 10e9623..1c0ad4a 100644 --- a/src/screen/screen_world.c +++ b/src/screen/screen_world.c @@ -20,11 +20,11 @@ #include "keytable.h" #include "layer.h" #include "image.h" -//#include "heightScore.h" #include "term.h" #include "font.h" #include "panel.h" #include "radar.h" +#include "chat.h" #ifndef NO_SOUND #include "music.h" @@ -150,7 +150,7 @@ void prepareArena() if( isSettingAI() ) { - if( loadModule("modAI.so") == 0 ) + if( loadModule("libmodAI.so") == 0 ) { tux->control = TUX_CONTROL_AI; } @@ -174,25 +174,6 @@ void prepareArena() } } -/* -static void drawServerLag() -{ - char msg[STR_SIZE]; - - if( lastServerLag == LAG_SERVER_UNKNOWN ) - { - sprintf(msg, "lag server: unknown"); - } - else - { - sprintf(msg, "lag server: %d", lastServerLag); - } - - drawFont(msg, WINDOW_SIZE_X-150, 20, COLOR_WHITE); - -} -*/ - void drawWorld() { if( arena != NULL ) @@ -207,6 +188,7 @@ void drawWorld() } drawTerm(); + drawChat(); } static void netAction(tux_t *tux, int action) @@ -382,22 +364,6 @@ static void control_keyboard_left(tux_t *tux) tuDown:; } - -/* - if( mapa[(SDLKey)getKey(KEY_TUX_LEFT_MOVE_UP)] == SDL_PRESSED )actionTux(tux, TUX_UP); - if( mapa[(SDLKey)getKey(KEY_TUX_LEFT_MOVE_RIGHT)] == SDL_PRESSED )actionTux(tux, TUX_RIGHT); - if( mapa[(SDLKey)getKey(KEY_TUX_LEFT_MOVE_LEFT)] == SDL_PRESSED )actionTux(tux, TUX_LEFT); - if( mapa[(SDLKey)getKey(KEY_TUX_LEFT_MOVE_DOWN)] == SDL_PRESSED )actionTux(tux, TUX_DOWN); - if( mapa[(SDLKey)getKey(KEY_TUX_LEFT_SHOOT)] == SDL_PRESSED )actionTux(tux, TUX_SHOT); - - if( mapa[(SDLKey)getKey(KEY_TUX_LEFT_SWITCH_WEAPON)] == SDL_PRESSED ) - { - if( tux->isCanSwitchGun == TRUE ) - { - actionTux(tux, TUX_SWITCH_GUN); - } - } -*/ } static void eventEsc() @@ -405,7 +371,7 @@ static void eventEsc() Uint8 *mapa; mapa = SDL_GetKeyState(NULL); - if( mapa[(SDLKey)SDLK_ESCAPE] == SDL_PRESSED ) + if( mapa[(SDLKey)SDLK_ESCAPE] == SDL_PRESSED && isChatActive() == FALSE ) { isEndWorld = TRUE; setWorldEnd(); @@ -466,11 +432,17 @@ void tuxControl(tux_t *p) break; case TUX_CONTROL_KEYBOARD_LEFT : - control_keyboard_left(p); + if( isChatActive() == FALSE) + { + control_keyboard_left(p); + } break; case TUX_CONTROL_KEYBOARD_RIGHT : - control_keyboard_right(p); + if( isChatActive() == FALSE) + { + control_keyboard_right(p); + } break; } } @@ -498,6 +470,7 @@ void eventWorld() eventTerm(); eventEnd(); eventEsc(); + eventChat(); } void startWorld() @@ -513,6 +486,7 @@ void startWorld() initModule(); setGameType(); initTerm(); + initChat(); prepareArena(); } @@ -583,6 +557,7 @@ void stoptWorld() #endif quitModule(); quitTerm(); + quitChat(); quitListID(); } |