URI:
       tmessage.h - vaccinewars - be a doctor and try to vaccinate the world
  HTML git clone git://src.adamsgaard.dk/vaccinewars
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tmessage.h (7115B)
       ---
            1 /************************************************************************
            2  * message.h      Header file for dopewars message-handling routines    *
            3  * Copyright (C)  1998-2021  Ben Webb                                   *
            4  *                Email: benwebb@users.sf.net                           *
            5  *                WWW: https://dopewars.sourceforge.io/                 *
            6  *                                                                      *
            7  * This program is free software; you can redistribute it and/or        *
            8  * modify it under the terms of the GNU General Public License          *
            9  * as published by the Free Software Foundation; either version 2       *
           10  * of the License, or (at your option) any later version.               *
           11  *                                                                      *
           12  * This program is distributed in the hope that it will be useful,      *
           13  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
           14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
           15  * GNU General Public License for more details.                         *
           16  *                                                                      *
           17  * You should have received a copy of the GNU General Public License    *
           18  * along with this program; if not, write to the Free Software          *
           19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
           20  *                   MA  02111-1307, USA.                               *
           21  ************************************************************************/
           22 
           23 #ifndef __DP_MESSAGE_H__
           24 #define __DP_MESSAGE_H__
           25 
           26 #ifdef HAVE_CONFIG_H
           27 #include <config.h>
           28 #endif
           29 
           30 #include <glib.h>
           31 #include "error.h"
           32 #include "dopewars.h"
           33 #include "network.h"
           34 
           35 typedef enum {
           36   C_PRINTMESSAGE = 'A',
           37   C_LIST, C_ENDLIST, C_NEWNAME, C_MSG, C_MSGTO, C_JOIN, C_LEAVE,
           38   C_SUBWAYFLASH, C_UPDATE, C_DRUGHERE, C_GUNSHOP, C_LOANSHARK,
           39   C_BANK, C_QUESTION, C_UNUSED, C_HISCORE, C_STARTHISCORE, C_ENDHISCORE,
           40   C_BUYOBJECT, C_DONE, C_REQUESTJET, C_PAYLOAN, C_ANSWER, C_DEPOSIT, C_PUSH,
           41   C_QUIT = 'a',
           42   C_RENAME, C_NAME, C_SACKBITCH, C_TIPOFF, C_SPYON, C_WANTQUIT,
           43   C_CONTACTSPY, C_KILL, C_REQUESTSCORE, C_INIT, C_DATA,
           44   C_FIGHTPRINT, C_FIGHTACT, C_TRADE, C_CHANGEDISP,
           45   C_NETMESSAGE, C_ABILITIES
           46 } MsgCode;
           47 
           48 typedef enum {
           49   C_NONE = 'A',
           50   C_ASKLOAN, C_COPSMESG, C_ASKBITCH, C_ASKGUN, C_ASKGUNSHOP,
           51   C_ASKPUB, C_ASKBANK, C_ASKRUN, C_ASKRUNFIGHT, C_ASKSEW,
           52   C_MEETPLAYER, C_FIGHT, C_FIGHTDONE, C_MOTD, C_VERSIONCHECK,
           53   C_MISSFIGHT
           54 } AICode;
           55 
           56 #define DT_LOCATION    'A'
           57 #define DT_DRUG        'B'
           58 #define DT_GUN         'C'
           59 #define DT_PRICES      'D'
           60 
           61 typedef enum {
           62   F_ARRIVED = 'A', F_STAND = 'S', F_HIT = 'H',
           63   F_MISS = 'M', F_RELOAD = 'R', F_LEAVE = 'L',
           64   F_LASTLEAVE = 'D', F_FAILFLEE = 'F', F_MSG = 'G'
           65 } FightPoint;
           66 
           67 void SendClientMessage(Player *From, AICode AI, MsgCode Code,
           68                        Player *To, char *Data);
           69 void SendNullClientMessage(Player *From, AICode AI, MsgCode Code,
           70                            Player *To, char *Data);
           71 void DoSendClientMessage(Player *From, AICode AI, MsgCode Code,
           72                          Player *To, char *Data, Player *BufOwn);
           73 void SendServerMessage(Player *From, AICode AI, MsgCode Code,
           74                        Player *To, char *Data);
           75 void SendPrintMessage(Player *From, AICode AI, Player *To, char *Data);
           76 void SendQuestion(Player *From, AICode AI, Player *To, char *Data);
           77 
           78 #ifdef NETWORKING
           79 #define DOPE_META_ERROR dope_meta_error_quark()
           80 
           81 typedef enum {
           82   DOPE_META_ERROR_EMPTY,     /* No servers listed on metaserver */
           83   DOPE_META_ERROR_INTERNAL,  /* Internal metaserver error */
           84   DOPE_META_ERROR_BAD_REPLY  /* Bad reply from metaserver */
           85 } DopeMetaError;
           86 
           87 GQuark dope_meta_error_quark(void);
           88 
           89 gboolean PlayerHandleNetwork(Player *Play, gboolean ReadReady,
           90                              gboolean WriteReady, gboolean ErrorReady,
           91                              gboolean *DoneOK);
           92 gboolean ReadPlayerDataFromWire(Player *Play);
           93 void QueuePlayerMessageForSend(Player *Play, gchar *data);
           94 gboolean WritePlayerDataToWire(Player *Play);
           95 gchar *GetWaitingPlayerMessage(Player *Play);
           96 
           97 gboolean OpenMetaHttpConnection(CurlConnection *conn, GError **err);
           98 gboolean HandleWaitingMetaServerData(CurlConnection *conn, GSList **listpt,
           99                                      GError **err);
          100 void ClearServerList(GSList **listpt);
          101 #endif /* NETWORKING */
          102 
          103 extern GSList *FirstClient;
          104 
          105 extern void (*ClientMessageHandlerPt) (char *, Player *);
          106 
          107 void InitNetwork(void);
          108 void AddURLEnc(GString *str, gchar *unenc);
          109 void chomp(char *str);
          110 void BroadcastToClients(AICode AI, MsgCode Code, char *Data, Player *From,
          111                         Player *Except);
          112 void SendInventory(Player *From, AICode AI, MsgCode Code, Player *To,
          113                    Inventory *Guns, Inventory *Drugs);
          114 void ReceiveInventory(char *Data, Inventory *Guns, Inventory *Drugs);
          115 void SendPlayerData(Player *To);
          116 void SendSpyReport(Player *To, Player *SpiedOn);
          117 void ReceivePlayerData(Player *Play, char *text, Player *From);
          118 void SendInitialData(Player *To);
          119 void ReceiveInitialData(Player *Play, char *data);
          120 void SendMiscData(Player *To);
          121 void ReceiveMiscData(char *Data);
          122 gchar *GetNextWord(gchar **Data, gchar *Default);
          123 void AssignNextWord(gchar **Data, gchar **Dest);
          124 int GetNextInt(gchar **Data, int Default);
          125 price_t GetNextPrice(gchar **Data, price_t Default);
          126 void ShutdownNetwork(Player *Play);
          127 void SwitchToSinglePlayer(Player *Play);
          128 int ProcessMessage(char *Msg, Player *Play, Player **Other, AICode *AI,
          129                    MsgCode *Code, char **Data, GSList *First);
          130 void ReceiveDrugsHere(char *text, Player *To);
          131 gboolean HandleGenericClientMessage(Player *From, AICode AI, MsgCode Code,
          132                                     Player *To, char *Data,
          133                                     DispMode *DisplayMode);
          134 void InitAbilities(Player *Play);
          135 void SendAbilities(Player *Play);
          136 void ReceiveAbilities(Player *Play, gchar *Data);
          137 void CombineAbilities(Player *Play);
          138 void SetAbility(Player *Play, gint Type, gboolean Set);
          139 gboolean HaveAbility(Player *Play, gint Type);
          140 void SendFightReload(Player *To);
          141 void SendOldCanFireMessage(Player *To, GString *text);
          142 void SendOldFightPrint(Player *To, GString *text, gboolean FightOver);
          143 void SendFightLeave(Player *Play, gboolean FightOver);
          144 void ReceiveFightMessage(gchar *Data, gchar **AttackName,
          145                          gchar **DefendName, int *DefendHealth,
          146                          int *DefendBitches, gchar **BitchName,
          147                          int *BitchesKilled, int *ArmPercent,
          148                          FightPoint *fp, gboolean *CanRunHere,
          149                          gboolean *Loot, gboolean *CanFire,
          150                          gchar **Message);
          151 void SendFightMessage(Player *Attacker, Player *Defender,
          152                       int BitchesKilled, FightPoint fp, price_t Loot,
          153                       gboolean Broadcast, gchar *Msg);
          154 void FormatFightMessage(Player *To, GString *text, Player *Attacker,
          155                         Player *Defender, int BitchesKilled,
          156                         int ArmPercent, FightPoint fp, price_t Loot);
          157 
          158 #endif /* __DP_MESSAGE_H__ */