[chocolate-doom] 34/79: Send player name and address in the waiting data packets. Display these on the waiting screen, and improve the waiting screen appearance.

Jonathan Dowland jmtd at moszumanska.debian.org
Mon Jan 30 15:07:22 UTC 2017


This is an automated email from the git hooks/post-receive script.

jmtd pushed a commit to annotated tag chocolate-doom-0.1.3
in repository chocolate-doom.

commit 79b77612579be43566fcbac7a153da22b4cd9dd7
Author: Simon Howard <fraggle at gmail.com>
Date:   Sat Jan 7 20:08:11 2006 +0000

    Send player name and address in the waiting data packets. Display these
    on the waiting screen, and improve the waiting screen appearance.
    
    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 262
---
 src/net_client.c | 42 +++++++++++++++++++++++++++++++++++++++++-
 src/net_client.h | 11 ++++++++++-
 src/net_gui.c    | 49 ++++++++++++++++++++++++++++++++++++++++++++-----
 src/net_server.c | 29 +++++++++++++++++++++++++++--
 4 files changed, 122 insertions(+), 9 deletions(-)

diff --git a/src/net_client.c b/src/net_client.c
index fc3082f..7628530 100644
--- a/src/net_client.c
+++ b/src/net_client.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: net_client.c 252 2006-01-02 21:50:26Z fraggle $
+// $Id: net_client.c 262 2006-01-07 20:08:11Z fraggle $
 //
 // Copyright(C) 2005 Simon Howard
 //
@@ -21,6 +21,10 @@
 // 02111-1307, USA.
 //
 // $Log$
+// Revision 1.9  2006/01/07 20:08:11  fraggle
+// Send player name and address in the waiting data packets.  Display these
+// on the waiting screen, and improve the waiting screen appearance.
+//
 // Revision 1.8  2006/01/02 21:50:26  fraggle
 // Restructure the waiting screen code.  Establish our own separate event
 // loop while waiting for the game to start, to avoid affecting the original
@@ -105,6 +109,11 @@ boolean net_client_controller = false;
 
 int net_clients_in_game;
 
+// Nmaes of all players
+
+char net_player_addresses[MAXPLAYERS][MAXPLAYERNAME];
+char net_player_names[MAXPLAYERS][MAXPLAYERNAME];
+
 // Waiting for the game to start?
 
 boolean net_waiting_for_start = false;
@@ -126,6 +135,9 @@ static void NET_CL_ParseWaitingData(net_packet_t *packet)
 {
     unsigned int num_players;
     unsigned int is_controller;
+    char *player_names[MAXPLAYERS];
+    char *player_addr[MAXPLAYERS];
+    int i;
 
     if (!NET_ReadInt8(packet, &num_players)
      || !NET_ReadInt8(packet, &is_controller))
@@ -135,8 +147,36 @@ static void NET_CL_ParseWaitingData(net_packet_t *packet)
         return;
     }
 
+    if (num_players > MAXPLAYERS)
+    {
+        // Invalid number of players
+
+        return;
+    }
+ 
+    // Read the player names
+
+    for (i=0; i<num_players; ++i)
+    {
+        player_names[i] = NET_ReadString(packet);
+        player_addr[i] = NET_ReadString(packet);
+
+        if (player_names[i] == NULL || player_addr[i] == NULL)
+        {
+            return;
+        }
+    }
+
     net_clients_in_game = num_players;
     net_client_controller = is_controller != 0;
+
+    for (i=0; i<num_players; ++i)
+    {
+        strncpy(net_player_names[i], player_names[i], MAXPLAYERNAME);
+        net_player_names[i][MAXPLAYERNAME-1] = '\0';
+        strncpy(net_player_addresses[i], player_addr[i], MAXPLAYERNAME);
+        net_player_addresses[i][MAXPLAYERNAME-1] = '\0';
+    }
 }
 
 // Received an ACK
diff --git a/src/net_client.h b/src/net_client.h
index 2723eab..9200e16 100644
--- a/src/net_client.h
+++ b/src/net_client.h
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: net_client.h 252 2006-01-02 21:50:26Z fraggle $
+// $Id: net_client.h 262 2006-01-07 20:08:11Z fraggle $
 //
 // Copyright(C) 2005 Simon Howard
 //
@@ -21,6 +21,10 @@
 // 02111-1307, USA.
 //
 // $Log$
+// Revision 1.7  2006/01/07 20:08:11  fraggle
+// Send player name and address in the waiting data packets.  Display these
+// on the waiting screen, and improve the waiting screen appearance.
+//
 // Revision 1.6  2006/01/02 21:50:26  fraggle
 // Restructure the waiting screen code.  Establish our own separate event
 // loop while waiting for the game to start, to avoid affecting the original
@@ -51,9 +55,12 @@
 #ifndef NET_CLIENT_H
 #define NET_CLIENT_H
 
+#include "doomdef.h"
 #include "doomtype.h"
 #include "net_defs.h"
 
+#define MAXPLAYERNAME 30
+
 boolean NET_CL_Connect(net_addr_t *addr);
 void NET_CL_Disconnect(void);
 void NET_CL_Run(void);
@@ -62,6 +69,8 @@ extern boolean net_client_connected;
 extern boolean net_client_controller;
 extern int net_clients_in_game;
 extern boolean net_waiting_for_start;
+extern char net_player_names[MAXPLAYERS][MAXPLAYERNAME];
+extern char net_player_addresses[MAXPLAYERS][MAXPLAYERNAME];
 
 #endif /* #ifndef NET_CLIENT_H */
 
diff --git a/src/net_gui.c b/src/net_gui.c
index c251eab..7a41f21 100644
--- a/src/net_gui.c
+++ b/src/net_gui.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: net_gui.c 252 2006-01-02 21:50:26Z fraggle $
+// $Id: net_gui.c 262 2006-01-07 20:08:11Z fraggle $
 //
 // Copyright(C) 2005 Simon Howard
 //
@@ -21,6 +21,10 @@
 // 02111-1307, USA.
 //
 // $Log$
+// Revision 1.3  2006/01/07 20:08:11  fraggle
+// Send player name and address in the waiting data packets.  Display these
+// on the waiting screen, and improve the waiting screen appearance.
+//
 // Revision 1.2  2006/01/02 21:50:26  fraggle
 // Restructure the waiting screen code.  Establish our own separate event
 // loop while waiting for the game to start, to avoid affecting the original
@@ -52,6 +56,9 @@
 #include "w_wad.h"
 #include "z_zone.h"
 
+static patch_t *player_face;
+static patch_t *player_backdrops[4];
+
 extern void M_WriteText(int x, int y, char *string);
 
 static void Drawer(void)
@@ -59,6 +66,7 @@ static void Drawer(void)
     patch_t *backdrop;
     int backdrop_lumpnum;
     char buf[128];
+    int i, y;
 
     // Use INTERPIC or TITLEPIC if we don't have it
 
@@ -75,17 +83,32 @@ static void Drawer(void)
     
     V_DrawPatch(0, 0, 0, backdrop);
 
-    sprintf(buf, "%i clients connected to server.", net_clients_in_game);
+    // draw players
 
-    M_WriteText(32, 100, buf);
+    y = 100 - 16 * net_clients_in_game - 24;
+    
+    M_WriteText(32, y, "Players currently waiting:");
+
+    y += 24;
+
+    for (i=0; i<net_clients_in_game; ++i)
+    {
+        V_DrawPatch(32, y, 0, player_backdrops[i]);
+        V_DrawPatch(32, y, 0, player_face);
+        M_WriteText(80, y+12, net_player_names[i]);
+        M_WriteText(200, y+12, net_player_addresses[i]);
+        y += 32;
+    }
+
+    y += 16;
 
     if (net_client_controller)
     {
-        M_WriteText(32, 150, "Press space to start the game...");
+        M_WriteText(32, y, "Press space to start the game...");
     }
     else
     {
-        M_WriteText(32, 150, "Waiting for the game to start...");
+        M_WriteText(32, y, "Waiting for the game to start...");
     }
 }
 
@@ -104,6 +127,20 @@ static void ProcessEvents(void)
     }
 }
 
+static void NET_InitGUI(void)
+{
+    char buf[8];
+    int i;
+
+    player_face = W_CacheLumpName("STFST01", PU_STATIC);
+
+    for (i=0 ; i<MAXPLAYERS ; i++)
+    {
+        sprintf(buf, "STPB%d", i);
+        player_backdrops[i] = W_CacheLumpName(buf, PU_STATIC);
+    }
+}
+
 // Displays a graphical screen while waiting for the game to start.
 
 void NET_WaitForStart(void)
@@ -118,6 +155,8 @@ void NET_WaitForStart(void)
         return;
     }
 
+    NET_InitGUI();
+
     last_tic_time = I_GetTime();
 
     while (net_waiting_for_start)
diff --git a/src/net_server.c b/src/net_server.c
index 39e6da8..b50d703 100644
--- a/src/net_server.c
+++ b/src/net_server.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: net_server.c 251 2006-01-02 21:48:37Z fraggle $
+// $Id: net_server.c 262 2006-01-07 20:08:11Z fraggle $
 //
 // Copyright(C) 2005 Simon Howard
 //
@@ -21,6 +21,10 @@
 // 02111-1307, USA.
 //
 // $Log$
+// Revision 1.11  2006/01/07 20:08:11  fraggle
+// Send player name and address in the waiting data packets.  Display these
+// on the waiting screen, and improve the waiting screen appearance.
+//
 // Revision 1.10  2006/01/02 21:48:37  fraggle
 // fix client connected function
 //
@@ -396,6 +400,10 @@ static void NET_SV_Packet(net_packet_t *packet, net_addr_t *addr)
 static void NET_SV_SendWaitingData(net_client_t *client)
 {
     net_packet_t *packet;
+    int num_clients;
+    int i;
+
+    num_clients = NET_SV_NumClients();
 
     // time to send the client another status packet
 
@@ -404,11 +412,28 @@ static void NET_SV_SendWaitingData(net_client_t *client)
 
     // include the number of clients waiting
 
-    NET_WriteInt8(packet, NET_SV_NumClients());
+    NET_WriteInt8(packet, num_clients);
 
     // indicate whether the client is the controller
 
     NET_WriteInt8(packet, NET_SV_Controller() == client);
+
+    // send the address of all players
+
+    for (i=0; i<num_clients; ++i)
+    {
+        char *addr;
+
+        // name
+
+        NET_WriteString(packet, "Player");
+
+        // address
+
+        addr = NET_AddrToString(clients[i].addr);
+
+        NET_WriteString(packet, addr);
+    }
     
     // send packet to client and free
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/chocolate-doom.git



More information about the Pkg-games-commits mailing list