tPlayers that have left fights (or are killed) are now marked as such in GUI client; player lists properly updated on server termination and switch to single-player mode - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit dc982dd81a76f2a8fcc599bdfe23552a230638de
 (DIR) parent d1e4cc1a14d5d36bd7c653f6819579fcd8c2d70c
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Sat, 12 Jan 2002 18:28:16 +0000
       
       Players that have left fights (or are killed) are now marked as such in GUI
       client; player lists properly updated on server termination and switch to
       single-player mode
       
       
       Diffstat:
         M src/gtk_client.c                    |      51 ++++++++++++++++++++++---------
       
       1 file changed, 36 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
       t@@ -326,6 +326,7 @@ void GetClientMessage(gpointer data,gint socket,
               g_warning(_("Connection to server lost - switching to "
                         "single player mode"));
               SwitchToSinglePlayer(ClientData.Play);
       +       UpdatePlayerLists();
               UpdateMenus();
             } else {
               ShutdownNetworkBuffer(&ClientData.Play->NetBuf);
       t@@ -381,6 +382,7 @@ void HandleClientMessage(char *pt,Player *Play) {
                 g_warning(_("You have been pushed from the server.\n"
                             "Switching to single player mode."));
                 SwitchToSinglePlayer(Play);
       +         UpdatePlayerLists();
                 UpdateMenus();
                 break;
              case C_QUIT:
       t@@ -388,6 +390,7 @@ void HandleClientMessage(char *pt,Player *Play) {
                 g_warning(_("The server has terminated.\n"
                             "Switching to single player mode."));
                 SwitchToSinglePlayer(Play);
       +         UpdatePlayerLists();
                 UpdateMenus();
                 break;
              case C_NEWNAME:
       t@@ -806,7 +809,8 @@ static void UpdateCombatant(gchar *DefendName,int DefendBitches,
                                    gchar *BitchName,int DefendHealth) {
        /* Updates the display of information for a player/cop in the Fight dialog. */
        /* If the player's name (DefendName) already exists, updates the display of */
       -/* total health and number of bitches - otherwise, adds a new entry.        */
       +/* total health and number of bitches - otherwise, adds a new entry. If     */
       +/* DefendBitches is -1, then the player has left.                           */
           guint i,RowIndex;
           gchar *name;
           struct combatant *compt;
       t@@ -847,23 +851,33 @@ static void UpdateCombatant(gchar *DefendName,int DefendBitches,
                                       DefendBitches,BitchName);
        
        /* Display of health during combat */
       -   HealthText=g_strdup_printf(_("Health: %d"),DefendHealth);
       +   if (DefendBitches == -1) {
       +     HealthText = g_strdup(_("(Left)"));
       +   } else if (DefendHealth == 0 && DefendBitches == 0) {
       +     HealthText = g_strdup(_("(Dead)"));
       +   } else {
       +     HealthText=g_strdup_printf(_("Health: %d"),DefendHealth);
       +   }
        
           ProgPercent=(gfloat)DefendHealth/100.0;
        
           if (compt->name) {
       -      if (DefendName[0]) gtk_label_set_text(GTK_LABEL(compt->name),DefendName);
       -      gtk_label_set_text(GTK_LABEL(compt->bitches),BitchText);
       -      gtk_label_set_text(GTK_LABEL(compt->healthlabel),HealthText);
       -      gtk_progress_bar_update(GTK_PROGRESS_BAR(compt->healthprog),
       -                              ProgPercent);
       +     if (DefendName[0]) {
       +       gtk_label_set_text(GTK_LABEL(compt->name),DefendName);
       +     }
       +     if (DefendBitches>=0) {
       +       gtk_label_set_text(GTK_LABEL(compt->bitches),BitchText);
       +     }
       +     gtk_label_set_text(GTK_LABEL(compt->healthlabel),HealthText);
       +     gtk_progress_bar_update(GTK_PROGRESS_BAR(compt->healthprog),
       +                             ProgPercent);
           } else {
        /* Display of the current player's name during combat */
              compt->name = gtk_label_new(DefendName[0] ? DefendName : _("You"));
        
              gtk_table_attach_defaults(GTK_TABLE(table),compt->name,0,1,
                                        RowIndex,RowIndex+1);
       -      compt->bitches = gtk_label_new(BitchText);
       +      compt->bitches = gtk_label_new(DefendBitches>=0 ? BitchText : "");
              gtk_table_attach_defaults(GTK_TABLE(table),compt->bitches,1,2,
                                        RowIndex,RowIndex+1);
              compt->healthprog = gtk_progress_bar_new();
       t@@ -937,13 +951,20 @@ void DisplayFightMessage(char *Data) {
              ReceiveFightMessage(Data,&AttackName,&DefendName,&DefendHealth,
                                  &DefendBitches,&BitchName,&BitchesKilled,&ArmPercent,
                                  &fp,&CanRunHere,&Loot,&CanFire,&Message);
       -      if (fp==F_HIT || fp==F_ARRIVED || fp==F_MISS) {
       -         UpdateCombatant(DefendName,DefendBitches,BitchName,DefendHealth);
       -      }
       -      if (fp==F_LASTLEAVE) {
       -         Play->Flags&= ~FIGHTING;
       -      } else {
       -         Play->Flags|=FIGHTING;
       +      Play->Flags|=FIGHTING;
       +      switch(fp) {
       +        case F_HIT: case F_ARRIVED: case F_MISS:
       +          UpdateCombatant(DefendName,DefendBitches,BitchName,DefendHealth);
       +          break;
       +        case F_LEAVE:
       +          if (AttackName[0]) {
       +            UpdateCombatant(AttackName,-1,BitchName,0);
       +          }
       +          break;
       +        case F_LASTLEAVE:
       +          Play->Flags&= ~FIGHTING;
       +          break;
       +        default:
              }
              accel_group=(GtkAccelGroup *)
                     gtk_object_get_data(GTK_OBJECT(ClientData.window),"accel_group");