tInitial support for new fighting code added to GTK+ client - 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 001a80142b0fb405b15b8353bc9427cffd05228a (DIR) parent 72b7a1e3f3c0b29e27f2b98445df4ccde9f95913 (HTM) Author: Ben Webb <ben@salilab.org> Date: Sun, 22 Oct 2000 16:35:29 +0000 Initial support for new fighting code added to GTK+ client Diffstat: M src/curses_client.c | 1 + M src/gtk_client.c | 1 + M src/message.c | 21 +++++++++++++++++++-- M src/message.h | 1 + M src/serverside.c | 2 +- 5 files changed, 23 insertions(+), 3 deletions(-) --- (DIR) diff --git a/src/curses_client.c b/src/curses_client.c t@@ -1421,6 +1421,7 @@ 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); (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c t@@ -1200,6 +1200,7 @@ void StartGame() { Play=ClientData.Play=g_new(Player,1); FirstClient=AddPlayer(0,Play,FirstClient); Play->fd=ClientSock; + InitAbilities(Play); SendAbilities(Play); SetPlayerName(Play,ClientData.PlayerName); SendNullClientMessage(Play,C_NONE,C_NAME,NULL,ClientData.PlayerName); (DIR) diff --git a/src/message.c b/src/message.c t@@ -209,9 +209,14 @@ void InitAbilities(Player *Play) { Play->Abil.Remote[i]=FALSE; Play->Abil.Shared[i]=FALSE; } -/* Set local abilities */ +/* Set local abilities; abilities that are client-dependent + (e.g. A_NEWFIGHT) can be overridden by individual clients if required, + by calling SetAbility, prior to calling SendAbilities */ + Play->Abil.Local[A_PLAYERID]=TRUE; + Play->Abil.Local[A_NEWFIGHT]=TRUE; Play->Abil.Local[A_DRUGVALUE]=(DrugValue ? TRUE : FALSE); + if (!Network) for (i=0;i<A_NUM;i++) { Play->Abil.Remote[i]=Play->Abil.Shared[i]=Play->Abil.Local[i]; } t@@ -252,6 +257,18 @@ void CombineAbilities(Player *Play) { } } +void SetAbility(Player *Play,gint Type,gboolean Set) { +/* Sets ability "Type" of player "Play", and also sets shared abilities if */ +/* networking is not active (the local server should support all abilities */ +/* that the client uses). Call this function prior to calling SendAbilities */ +/* so that the ability is recognised properly when networking _is_ active */ + if (Type<0 || Type>=A_NUM) return; + Play->Abil.Local[Type]=Set; + if (!Network) { + Play->Abil.Remote[Type]=Play->Abil.Shared[Type]=Play->Abil.Local[Type]; + } +} + gboolean HaveAbility(Player *Play,gint Type) { /* Returns TRUE if ability "Type" is one of player "Play"'s shared abilities */ if (Type<0 || Type>=A_NUM) return FALSE; t@@ -769,7 +786,7 @@ int ProcessMessage(char *Msg,Player *Play,Player **Other,char *AICode, gchar *pt,*buf; guint ID; - if (!First || !Play) return; + if (!First || !Play) return -1; *AICode=*Code=C_NONE; *Other=&Noone; (DIR) diff --git a/src/message.h b/src/message.h t@@ -160,6 +160,7 @@ void InitAbilities(Player *Play); void SendAbilities(Player *Play); void ReceiveAbilities(Player *Play,gchar *Data); void CombineAbilities(Player *Play); +void SetAbility(Player *Play,gint Type,gboolean Set); gboolean HaveAbility(Player *Play,gint Type); void SendFightReload(Player *To); void SendOldCanFireMessage(Player *To,GString *text); (DIR) diff --git a/src/serverside.c b/src/serverside.c t@@ -664,7 +664,7 @@ gboolean HandleServerCommand(char *string) { g_print(_("Users currently logged on:-\n")); for (list=FirstServer;list;list=g_slist_next(list)) { tmp=(Player *)list->data; - g_print("%s\n",GetPlayerName(tmp)); + if (!tmp->IsCop) g_print("%s\n",GetPlayerName(tmp)); } } else g_message(_("No users currently logged on!")); } else if (strncasecmp(string,"push ",5)==0) {