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__ */