tSome bugs with player-player fighting fixed - vaccinewars - be a doctor and tr… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 7a73b4f2abd069c39c355077ce7a6a466a420f22 | |
parent b09cd2804b9450424e2b1f257c70fdf2f3d0c456 | |
Author: Ben Webb <[email protected]> | |
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(-) | |
--- | |
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); | |
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; | |
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) { | |
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); |