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");