netpanzer-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netPanzer-CVS] netpanzer/src Lib/IRCLobby/IRCLobby.cpp Lib/IRC...


From: Hankin Chick
Subject: [netPanzer-CVS] netpanzer/src Lib/IRCLobby/IRCLobby.cpp Lib/IRC...
Date: Thu, 20 Nov 2003 07:00:14 -0500

CVSROOT:        /cvsroot/netpanzer
Module name:    netpanzer
Branch:         
Changes by:     Hankin Chick <address@hidden>   03/11/20 07:00:13

Modified files:
        src/Lib/IRCLobby: IRCLobby.cpp GameServer.hpp 
        src/NetPanzer/Views/MainMenu/Multi: IRCLobbyView.cpp 
                                            IRCLobbyView.hpp 

Log message:
        fix for ircname showing up instead of username
        added scrollie for chat messages as suggested by bjmg

Patches:
Index: netpanzer/src/Lib/IRCLobby/GameServer.hpp
diff -u netpanzer/src/Lib/IRCLobby/GameServer.hpp:1.1 
netpanzer/src/Lib/IRCLobby/GameServer.hpp:1.2
--- netpanzer/src/Lib/IRCLobby/GameServer.hpp:1.1       Wed Nov 19 07:24:41 2003
+++ netpanzer/src/Lib/IRCLobby/GameServer.hpp   Thu Nov 20 07:00:13 2003
@@ -26,23 +26,28 @@
 {
 public:
     GameServer(const std::string& newhost, int newport,
-            const std::string& newuser, const std::string& newmap,
+            const std::string& newuser, 
+            const std::string& newrealuser, 
+            const std::string& newmap,
             int newplayercount, int newmaxplayers)
-        : host(newhost), port(newport), user(newuser), map(newmap),
+        : host(newhost), port(newport), irc_user(newuser), 
+            real_user(newrealuser), map(newmap),
             playercount(newplayercount), max_players(newmaxplayers)
     {
         std::time(&last_update);
     }
 
     GameServer::GameServer(const GameServer& other)
-        : host(other.host), port(other.port), user(other.user), map(other.map),
+        : host(other.host), port(other.port), irc_user(other.irc_user), 
+          real_user(other.real_user), map(other.map),
           last_update(other.last_update), playercount(other.playercount),
           max_players(other.max_players)
     { }
     
     std::string host;
     int port;
-    std::string user;
+    std::string irc_user;
+    std::string real_user;
     std::string map;
     std::time_t last_update;
     int playercount;
Index: netpanzer/src/Lib/IRCLobby/IRCLobby.cpp
diff -u netpanzer/src/Lib/IRCLobby/IRCLobby.cpp:1.2 
netpanzer/src/Lib/IRCLobby/IRCLobby.cpp:1.3
--- netpanzer/src/Lib/IRCLobby/IRCLobby.cpp:1.2 Thu Nov 20 04:37:38 2003
+++ netpanzer/src/Lib/IRCLobby/IRCLobby.cpp     Thu Nov 20 07:00:12 2003
@@ -386,7 +386,7 @@
     assert(irc_server_socket != 0);
     
     char buf[1024];
-    char *host, *mess, *host_end, *user_end, *code,*user,*real_user;
+    char *host, *mess, *host_end, *user_end, *code,*irc_user,*real_user;
 
     readIRCLine(buf, sizeof(buf));
 #ifndef WITHOUT_NETPANZER
@@ -396,12 +396,12 @@
     if(buf[0]!=':')
         return;
 
-    real_user=user=buf+1;
-    if(strncmp(user,nickname_prefix,sizeof(nickname_prefix)-1)==0) {
-        user+=sizeof(nickname_prefix)-1;
+    real_user=irc_user=buf+1;
+    if(strncmp(real_user,nickname_prefix,sizeof(nickname_prefix)-1)==0) {
+        real_user+=sizeof(nickname_prefix)-1;
     }
 
-    code=user;
+    code=irc_user;
     // skip 1 word and spaces behind it
     while(*code && !isspace(*code)) { code++; }
     while(*code && isspace(*code)) { code++; }
@@ -480,7 +480,7 @@
     *user_end++=0;
 
     if(strcmp(code,"JOIN")==0) {
-        std::string joined(user);
+        std::string joined(real_user);
         joined+=" has arrived in lobby";
         addChatMessage("",joined);
 #ifndef WITHOUT_NETPANZER
@@ -491,7 +491,7 @@
         return;
     }
     if(strcmp(code,"PART")==0 || strcmp(code,"QUIT")==0) {
-        std::string leave(user);
+        std::string leave(real_user);
         leave+=" has left the lobby";
         addChatMessage("",leave);
 #ifndef WITHOUT_NETPANZER
@@ -514,10 +514,10 @@
 
     if(mess[0]=='#') {
         // this is a chat message
-        addChatMessage(user, mess+1);
+        addChatMessage(real_user, mess+1);
 #ifndef WITHOUT_NETPANZER
         if(gameconfig->hostorjoin== _game_session_host) {
-            LOG(("IRC message:%s:%s",user,mess+1));
+            LOG(("IRC message:%s:%s",real_user,mess+1));
         }
 #endif
 
@@ -530,7 +530,7 @@
         if(strcmp(mess+1, ask_server_running_mess)==0) {
             if(gameconfig->hostorjoin== _game_session_host) {
                 // reply with server details
-                sendServerInfo(real_user);
+                sendServerInfo(irc_user);
             }
         }
         else 
@@ -562,18 +562,19 @@
                 SDL_mutexP(game_servers_mutex);
                 game_servers->push_back(
                         GameServer(host, port,
-                            real_user, map, players, max_players));
+                            irc_user,real_user,map, players, max_players));
                 SDL_mutexV(game_servers_mutex);
             }
             else {
-                server->user = real_user;
+                server->irc_user = irc_user;
+                server->real_user = real_user;
                 server->map = map;
                 server->playercount = players;
                 server->max_players = max_players;
             }
         }
         else if(strncmp(mess+1,leaving_mess,sizeof(leaving_mess)-1)==0) {
-            addChatMessage(user,mess);
+            addChatMessage(real_user,mess);
         }
     }
 }
@@ -626,7 +627,7 @@
     char *buf_end=buf+buf_len-1;
     char ch;
     char *buf_upto=buf;
-    
+
     SDLNet_SocketSet sock_set=SDLNet_AllocSocketSet(1);
     SDLNet_TCP_AddSocket(sock_set,irc_server_socket);
 
@@ -655,6 +656,7 @@
             *buf_upto++=ch;
         }
     } catch(std::exception& e) {
+        buf[0]=0;
         SDLNet_FreeSocketSet(sock_set);
         throw;
     }
Index: netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp
diff -u netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp:1.12 
netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp:1.13
--- netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp:1.12  Thu Nov 
20 04:37:37 2003
+++ netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp       Thu Nov 
20 07:00:13 2003
@@ -34,6 +34,7 @@
 {
     lobby_connection=0;
     change_name=0;
+    skipChatLines=0;
     lobby_view_height=184;
     total_displayed_servers=0;
     setSearchName("IRCLobbyView");
@@ -61,17 +62,25 @@
     server_list_end_x=(getClientRect().getSizeX()-12);
 
     iXY size(12, 12);
-
     iXY pos(getClientRect().getSizeX() - size.x, 0);
-    upButton.setLabel("-");
-    upButton.setBounds(iRect(pos, pos + size));
-    add(&upButton);
-
-    pos = iXY(getClientRect().getSizeX() - size.x, server_list_end_y-size.y);
-    downButton.setLabel("+");
-    downButton.setBounds(iRect(pos, pos + size));
-    add(&downButton);
-
+    serverUpButton.setLabel("-");
+    serverUpButton.setBounds(iRect(pos, pos + size));
+    add(&serverUpButton);
+
+    pos.y= server_list_end_y-size.y;
+    serverDownButton.setLabel("+");
+    serverDownButton.setBounds(iRect(pos, pos + size));
+    add(&serverDownButton);
+
+    pos.y+=size.y;
+    chatUpButton.setLabel("-");
+    chatUpButton.setBounds(iRect(pos, pos + size));
+    add(&chatUpButton);
+
+    pos.y = chat_list_end_y-size.y;
+    chatDownButton.setLabel("+");
+    chatDownButton.setBounds(iRect(pos, pos + size));
+    add(&chatDownButton);
 
     // XXX ugly ugly ugly
     if(!lobby_view)
@@ -113,7 +122,7 @@
             std::stringstream playerstr;
             playerstr << server->playercount << "/" << server->max_players;
          
-            clientArea.bltString(iXY(0,y),server->user.c_str(), Color::white);
+            clientArea.bltString(iXY(0,y),server->real_user.c_str(), 
Color::white);
             clientArea.bltString(iXY(140,y),playerstr.str().c_str(), 
Color::white);
             clientArea.bltString(iXY(200,y),server->map.c_str(), Color::white);
             
@@ -128,8 +137,11 @@
 
     std::list<IRCChatMessage>::reverse_iterator m;
     y = chat_list_end_y - Surface::getFontHeight();
+    int skipped=0;
     for(m = lobby_connection->chat_messages.rbegin();
-        m != lobby_connection->chat_messages.rend(); m++) {
+        skipped < skipChatLines && m != 
lobby_connection->chat_messages.rend(); m++,skipped++) {
+    }
+    for(; m != lobby_connection->chat_messages.rend(); m++) {
 
         std::stringstream temp;
         temp << m->getUser() << ": " << m->getMessage();
@@ -171,15 +183,23 @@
 void IRCLobbyView::actionPerformed(mMouseEvent me)
 {
     if (me.getID() == mMouseEvent::MOUSE_EVENT_CLICKED) {
-        if (me.getSource(upButton)) {
+        if (me.getSource(serverUpButton)) {
             if (--topViewableItem < 0) {
                 topViewableItem = 0;
             }
-        } else if (me.getSource(downButton)) {
+        } else if (me.getSource(serverDownButton)) {
             int max_size=lobby_connection->game_servers->size()-1;
             ++topViewableItem;
             if (topViewableItem >= max_size) {
                 topViewableItem = max_size;
+            }
+        } else if (me.getSource(chatUpButton)) {
+            if(++skipChatLines>=((int)lobby_connection->chat_messages.size())) 
{
+                skipChatLines--;
+            }
+        } else if (me.getSource(chatDownButton)) {
+            if (--skipChatLines <= 0) {
+                skipChatLines = 0;
             }
         }
     }
Index: netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp
diff -u netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp:1.9 
netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp:1.10
--- netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp:1.9   Wed Nov 
19 07:21:25 2003
+++ netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp       Thu Nov 
20 07:00:13 2003
@@ -64,9 +64,12 @@
     std::string error_message;
     cInputFieldString szChat;
     IRCLobby *lobby_connection;
+    int skipChatLines;
 
-    Button upButton;
-    Button downButton;
+    Button serverUpButton;
+    Button serverDownButton;
+    Button chatUpButton;
+    Button chatDownButton;
 };
 
 extern IRCLobbyView* lobby_view;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]