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