tSupport in curses client for new fighting code - vaccinewars - be a doctor and… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 9f75850a08b67411b23f05dc8d845b1c08a1ab4e | |
parent 30a0b83c50180421e73560ab86e52103b2a06a78 | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 23 Oct 2000 03:29:54 +0000 | |
Support in curses client for new fighting code | |
Diffstat: | |
M src/curses_client.c | 70 +++++++++++++++++++----------… | |
M src/win32_client.c | 1 + | |
2 files changed, 44 insertions(+), 27 deletions(-) | |
--- | |
diff --git a/src/curses_client.c b/src/curses_client.c | |
t@@ -45,6 +45,8 @@ static void PrintHighScore(char *Data); | |
static int ResizedFlag; | |
static SCREEN *cur_screen; | |
static char ConnectMethod=CM_SERVER; | |
+static gboolean CanFire=FALSE,RunHere=FALSE; | |
+static gchar FightPoint; | |
/* Function definitions; make them static so as not to clash with functions | |
of the same name in different clients */ | |
t@@ -56,7 +58,7 @@ static int GetKey(char *allowed,char *orig_allowed,gboolean … | |
static void clear_bottom(), clear_screen(); | |
static void clear_line(int line), clear_exceptfor(int skip); | |
static void nice_wait(); | |
-static void DisplayFightMessage(char *text); | |
+static void DisplayFightMessage(Player *Play,char *text); | |
static void DisplaySpyReports(char *Data,Player *From,Player *To); | |
static void display_message(char *buf); | |
static void print_location(char *text); | |
t@@ -119,7 +121,7 @@ void CheckForResize(Player *Play) { | |
Width=COLS; Depth=LINES; | |
attrset(TextAttr); clear_screen(); | |
display_message(""); | |
- DisplayFightMessage(NULL); | |
+ DisplayFightMessage(Play,NULL); | |
print_status(Play,1); | |
} | |
sigprocmask(SIG_UNBLOCK,&sigset,NULL); | |
t@@ -668,15 +670,10 @@ void HandleClientMessage(char *Message,Player *Play) { | |
nice_wait(); | |
break; | |
case C_FIGHTPRINT: | |
- pt=Data; | |
- wrd=GetNextWord(&pt,NULL); | |
- while (wrd) { | |
- DisplayFightMessage(wrd); | |
- wrd=GetNextWord(&pt,NULL); | |
- } | |
+ DisplayFightMessage(Play,Data); | |
break; | |
case C_SUBWAYFLASH: | |
- DisplayFightMessage(NULL); | |
+ DisplayFightMessage(Play,NULL); | |
for (list=FirstClient;list;list=g_slist_next(list)) { | |
tmp=(Player *)list->data; | |
tmp->Flags &= ~FIGHTING; | |
t@@ -1029,7 +1026,7 @@ void nice_wait() { | |
attrset(TextAttr); | |
} | |
-void DisplayFightMessage(char *text) { | |
+void DisplayFightMessage(Player *Play,char *text) { | |
/* Handles the display of messages pertaining to player-player fights */ | |
/* in the lower part of screen (fighting sub-screen). Adds the new line */ | |
/* of text in "text" and scrolls up previous messages if necessary */ | |
t@@ -1041,26 +1038,42 @@ void DisplayFightMessage(char *text) { | |
static int x,y; | |
char *textpt; | |
int i; | |
+ gchar *AttackName,*DefendName; | |
+ int DefendHealth,DefendBitches,BitchesKilled,ArmPercent; | |
+ gboolean Loot; | |
+ | |
if (text==NULL) { | |
x=0; y=15; | |
for (i=0;i<5;i++) Messages[i][0]='\0'; | |
return; | |
} | |
- textpt=text; | |
- if (!textpt[0]) { | |
+ if (!text[0]) { | |
attrset(TextAttr); | |
clear_bottom(); | |
for (i=16;i<=20;i++) { | |
mvaddstr(i,1,Messages[i-16]); | |
} | |
- } else while(textpt[0]) { | |
- if (y==20) for (i=0;i<4;i++) { | |
- strcpy(Messages[i],Messages[i+1]); | |
+ } else { | |
+ if (HaveAbility(Play,A_NEWFIGHT)) { | |
+ ReceiveFightMessage(text,&AttackName,&DefendName,&DefendHealth, | |
+ &DefendBitches,&BitchesKilled,&ArmPercent, | |
+ &FightPoint,&RunHere,&Loot,&CanFire,&textpt); | |
+ } else { | |
+ textpt=text; | |
+ if (Play->Flags&FIGHTING) FightPoint=F_MSG; | |
+ else FightPoint=F_LASTLEAVE; | |
+ CanFire = (Play->Flags&CANSHOOT); | |
+ RunHere=FALSE; | |
+ } | |
+ while(textpt[0]) { | |
+ if (y==20) for (i=0;i<4;i++) { | |
+ strcpy(Messages[i],Messages[i+1]); | |
+ } | |
+ if (y<20) y++; | |
+ strncpy(Messages[y-16],textpt,78); Messages[y-16][78]='\0'; | |
+ if (strlen(textpt)<=78) break; | |
+ textpt+=78; | |
} | |
- if (y<20) y++; | |
- strncpy(Messages[y-16],textpt,78); Messages[y-16][78]='\0'; | |
- if (strlen(textpt)<=78) break; | |
- textpt+=78; | |
} | |
} | |
t@@ -1401,7 +1414,7 @@ static void Curses_DoGame(Player *Play) { | |
OldName=g_strdup(GetPlayerName(Play)); | |
attrset(TextAttr); clear_screen(); | |
display_message(NULL); | |
- DisplayFightMessage(NULL); | |
+ DisplayFightMessage(Play,NULL); | |
print_status(Play,1); | |
attrset(TextAttr); | |
t@@ -1421,7 +1434,6 @@ static void Curses_DoGame(Player *Play) { | |
display_message(""); | |
InitAbilities(Play); | |
- SetAbility(Play,A_NEWFIGHT,FALSE); | |
SendAbilities(Play); | |
SetPlayerName(Play,buf); | |
SendNullClientMessage(Play,C_NONE,C_NAME,NULL,buf); | |
t@@ -1477,17 +1489,17 @@ static void Curses_DoGame(Player *Play) { | |
curs_set(1); | |
break; | |
case DM_FIGHT: | |
- DisplayFightMessage(""); | |
+ DisplayFightMessage(Play,""); | |
attrset(PromptAttr); | |
g_string_assign(text,_("Do you ")); | |
- if (Play->Flags&CANSHOOT) { | |
+ if (CanFire) { | |
if (TotalGunsCarried(Play)>0) { | |
g_string_append(text,_("F>ight, ")); | |
} else { | |
g_string_append(text,_("S>tand, ")); | |
} | |
} | |
- if (Play->Flags&FIGHTING) g_string_append(text,_("R>un, ")); | |
+ if (FightPoint!=F_LASTLEAVE) g_string_append(text,_("R>un, ")); | |
dpg_string_sprintfa(text,_("D>eal %tde"),Names.Drugs); | |
g_string_append(text,_(", or Q>uit? ")); | |
mvaddstr(22,40-strlen(text->str)/2,text->str); | |
t@@ -1630,10 +1642,14 @@ static void Curses_DoGame(Player *Play) { | |
DisplayMode=DM_STREET; | |
break; | |
case 'R': | |
- jet(Play,TRUE); | |
+ if (RunHere) { | |
+ SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,"R"); | |
+ } else { | |
+ jet(Play,TRUE); | |
+ } | |
break; | |
case 'F': | |
- if (TotalGunsCarried(Play)>0 && Play->Flags&CANSHOOT) { | |
+ if (TotalGunsCarried(Play)>0 && CanFire) { | |
buf=g_strdup_printf("%c",c); | |
Play->Flags &= ~CANSHOOT; | |
SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,buf); | |
t@@ -1641,7 +1657,7 @@ static void Curses_DoGame(Player *Play) { | |
} | |
break; | |
case 'S': | |
- if (TotalGunsCarried(Play)==0 && Play->Flags&CANSHOOT) { | |
+ if (TotalGunsCarried(Play)==0 && CanFire) { | |
buf=g_strdup_printf("%c",c); | |
Play->Flags &= ~CANSHOOT; | |
SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,buf); | |
diff --git a/src/win32_client.c b/src/win32_client.c | |
t@@ -349,6 +349,7 @@ static void StartGame() { | |
Play=ClientData.Play=g_new(Player,1); | |
FirstClient=AddPlayer(0,Play,FirstClient); | |
Play->fd=ClientSock; | |
+ SetAbility(Play,A_NEWFIGHT,FALSE); | |
SendAbilities(Play); | |
SetPlayerName(Play,ClientData.PlayerName); | |
SendNullClientMessage(Play,C_NONE,C_NAME,NULL,ClientData.PlayerName); |