tSome bugs with player-player fighting fixed - 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 7a73b4f2abd069c39c355077ce7a6a466a420f22 (DIR) parent b09cd2804b9450424e2b1f257c70fdf2f3d0c456 (HTM) Author: Ben Webb <ben@salilab.org> Date: Tue, 9 Jan 2001 00:21:08 +0000 Some bugs with player-player fighting fixed Diffstat: M src/curses_client.c | 2 +- M src/gtk_client.c | 11 ++++++++++- M src/serverside.c | 17 +++++++++-------- M src/serverside.h | 3 ++- 4 files changed, 22 insertions(+), 11 deletions(-) --- (DIR) diff --git a/src/curses_client.c b/src/curses_client.c t@@ -121,7 +121,7 @@ void CheckForResize(Player *Play) { Width=COLS; Depth=LINES; attrset(TextAttr); clear_screen(); display_message(""); - DisplayFightMessage(Play,NULL); + DisplayFightMessage(Play,""); print_status(Play,1); } sigprocmask(SIG_UNBLOCK,&sigset,NULL); (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c t@@ -635,6 +635,7 @@ static void CreateFightDialog() { void DisplayFightMessage(char *Data) { Player *Play; gint EditPos; + GtkAccelGroup *accel_group; GtkWidget *Deal,*Fight,*Stand,*Run,*Text; char cr[] = "\n"; gchar *AttackName,*DefendName,FightPoint,*Message; t@@ -652,7 +653,7 @@ void DisplayFightMessage(char *Data) { } else { CreateFightDialog(); } - if (!FightDialog) return; + if (!FightDialog || !Data[0]) return; Deal=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(FightDialog),"deal")); Fight=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(FightDialog),"fight")); t@@ -666,6 +667,14 @@ void DisplayFightMessage(char *Data) { ReceiveFightMessage(Data,&AttackName,&DefendName,&DefendHealth, &DefendBitches,&BitchesKilled,&ArmPercent, &FightPoint,&CanRunHere,&Loot,&CanFire,&Message); + if (FightPoint==F_LASTLEAVE) { + Play->Flags&= ~FIGHTING; + } else { + Play->Flags|=FIGHTING; + } + accel_group=(GtkAccelGroup *) + gtk_object_get_data(GTK_OBJECT(ClientData.window),"accel_group"); + SetJetButtonTitle(accel_group); } else { Message=Data; if (Play->Flags&FIGHTING) FightPoint=F_MSG; else FightPoint=F_LASTLEAVE; (DIR) diff --git a/src/serverside.c b/src/serverside.c t@@ -1226,29 +1226,30 @@ void AttackPlayer(Player *Play,Player *Attacked) { if (Play->FightArray) { FightArray=Play->FightArray; - AddPlayerToFight(Attacked,FightArray,Play); + AddPlayerToFight(Attacked,FightArray,Play,TRUE); } else if (Attacked->FightArray) { FightArray=Attacked->FightArray; - AddPlayerToFight(Play,FightArray,Attacked); + AddPlayerToFight(Play,FightArray,Attacked,TRUE); } else { FightArray=g_ptr_array_new(); - AddPlayerToFight(Attacked,FightArray,Play); - AddPlayerToFight(Play,FightArray,Attacked); + AddPlayerToFight(Attacked,FightArray,Play,TRUE); + AddPlayerToFight(Play,FightArray,Attacked,FALSE); } Fire(Play); } -void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other) { +void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other, + gboolean Inform) { /* Adds the player "NewPlay" to the fight "Fight", and informs any */ -/* players already in the fight of the new player's arrival. "Other" is */ -/* a player already in the fight */ +/* players already in the fight of the new player's arrival, if */ +/* "Inform" is TRUE. "Other" is a player already in the fight. */ NewPlay->FightArray=Fight; NewPlay->ResyncNum=NewPlay->EventNum; NewPlay->EventNum=E_FIGHT; g_ptr_array_add(Fight,NewPlay); - SendFightMessage(NewPlay,Other,0,F_ARRIVED,FALSE,TRUE,NULL); + if (Inform) SendFightMessage(NewPlay,Other,0,F_ARRIVED,FALSE,TRUE,NULL); } gboolean IsOpponent(Player *Play,Player *Other) { (DIR) diff --git a/src/serverside.h b/src/serverside.h t@@ -69,7 +69,8 @@ gboolean CheckHighScoreFile(); int HighScoreRead(struct HISCORE *MultiScore,struct HISCORE *AntiqueScore); void CopsAttackPlayer(Player *Play); void AttackPlayer(Player *Play,Player *Attacked); -void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other); +void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other, + gboolean Inform); gboolean IsOpponent(Player *Play,Player *Other); void Fire(Player *Play); void WithdrawFromCombat(Player *Play);