aboutsummaryrefslogtreecommitdiff
path: root/src/connections.hh
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-06-22 00:52:27 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-06-22 00:52:27 -0300
commitc4dfe97e95846b43c578b3be35d0ef69f9b50e94 (patch)
tree104189628cc30e172cd291fd56dda2382fb38ed9 /src/connections.hh
parentefeb10adcc606ad261782a260c8ef86e77ea0608 (diff)
downloadgame-c4dfe97e95846b43c578b3be35d0ef69f9b50e94.tar.gz
game-c4dfe97e95846b43c578b3be35d0ef69f9b50e94.zip
`sending.cc`
Diffstat (limited to 'src/connections.hh')
-rw-r--r--src/connections.hh208
1 files changed, 208 insertions, 0 deletions
diff --git a/src/connections.hh b/src/connections.hh
index 921a604..17cf7df 100644
--- a/src/connections.hh
+++ b/src/connections.hh
@@ -4,10 +4,139 @@
#include "common.hh"
#include "crypto.hh"
#include "enums.hh"
+#include "map.hh"
struct TConnection;
struct TPlayer;
+enum ClientCommand: int {
+ CL_CMD_LOGIN = 10,
+ CL_CMD_LOGIN_TREATED = 11,
+ CL_CMD_LOGOUT = 20,
+ CL_CMD_PING = 30,
+ CL_CMD_GO = 100,
+ CL_CMD_GO_NORTH = 101,
+ CL_CMD_GO_EAST = 102,
+ CL_CMD_GO_SOUTH = 103,
+ CL_CMD_GO_WEST = 104,
+ CL_CMD_GO_STOP = 105,
+ CL_CMD_GO_NORTHEAST = 106,
+ CL_CMD_GO_SOUTHEAST = 107,
+ CL_CMD_GO_SOUTHWEST = 108,
+ CL_CMD_GO_NORTHWEST = 109,
+ CL_CMD_ROTATE_NORTH = 111,
+ CL_CMD_ROTATE_EAST = 112,
+ CL_CMD_ROTATE_SOUTH = 113,
+ CL_CMD_ROTATE_WEST = 114,
+ CL_CMD_MOVE_OBJECT = 120,
+ CL_CMD_TRADE_OBJECT = 125,
+ CL_CMD_INSPECT_TRADE = 126,
+ CL_CMD_ACCEPT_TRADE = 127,
+ CL_CMD_REJECT_TRADE = 128,
+ CL_CMD_USE_OBJECT = 130,
+ CL_CMD_USE_TWO_OBJECTS = 131,
+ CL_CMD_USE_ON_CREATURE = 132,
+ CL_CMD_TURN_OBJECT = 133,
+ CL_CMD_CLOSE_CONTAINER = 135,
+ CL_CMD_UP_CONTAINER = 136,
+ CL_CMD_EDIT_TEXT = 137,
+ CL_CMD_EDIT_LIST = 138,
+ CL_CMD_LOOK_AT_POINT = 140,
+ CL_CMD_TALK = 150,
+ CL_CMD_GET_CHANNELS = 151,
+ CL_CMD_JOIN_CHANNEL = 152,
+ CL_CMD_LEAVE_CHANNEL = 153,
+ CL_CMD_PRIVATE_CHANNEL = 154,
+ CL_CMD_PROCESS_REQUEST = 155,
+ CL_CMD_REMOVE_REQUEST = 156,
+ CL_CMD_CANCEL_REQUEST = 157,
+ CL_CMD_SET_TACTICS = 160,
+ CL_CMD_ATTACK = 161,
+ CL_CMD_FOLLOW = 162,
+ CL_CMD_INVITE_TO_PARTY = 163,
+ CL_CMD_JOIN_PARTY = 164,
+ CL_CMD_REVOKE_INVITATION = 165,
+ CL_CMD_PASS_LEADERSHIP = 166,
+ CL_CMD_LEAVE_PARTY = 167,
+ CL_CMD_OPEN_CHANNEL = 170,
+ CL_CMD_INVITE_TO_CHANNEL = 171,
+ CL_CMD_EXCLUDE_FROM_CHANNEL = 172,
+ CL_CMD_CANCEL = 190,
+ CL_CMD_REFRESH_FIELD = 201,
+ CL_CMD_REFRESH_CONTAINER = 202,
+ CL_CMD_GET_OUTFIT = 210,
+ CL_CMD_SET_OUTFIT = 211,
+ CL_CMD_ADD_BUDDY = 220,
+ CL_CMD_REMOVE_BUDDY = 221,
+ CL_CMD_BUG_REPORT = 230,
+ CL_CMD_RULE_VIOLATION = 231,
+ CL_CMD_ERROR_FILE_ENTRY = 232,
+};
+
+enum ServerCommand: int {
+ SV_CMD_INIT_GAME = 10,
+ SV_CMD_RIGHTS = 11,
+ SV_CMD_LOGIN_ERROR = 20,
+ SV_CMD_LOGIN_PREMIUM = 21,
+ SV_CMD_LOGIN_WAITINGLIST = 22,
+ SV_CMD_PING = 30,
+ SV_CMD_FULLSCREEN = 100,
+ SV_CMD_ROW_NORTH = 101,
+ SV_CMD_ROW_EAST = 102,
+ SV_CMD_ROW_SOUTH = 103,
+ SV_CMD_ROW_WEST = 104,
+ SV_CMD_FIELD_DATA = 105,
+ SV_CMD_ADD_FIELD = 106,
+ SV_CMD_CHANGE_FIELD = 107,
+ SV_CMD_DELETE_FIELD = 108,
+ SV_CMD_MOVE_CREATURE = 109,
+ SV_CMD_CONTAINER = 110,
+ SV_CMD_CLOSE_CONTAINER = 111,
+ SV_CMD_CREATE_IN_CONTAINER = 112,
+ SV_CMD_CHANGE_IN_CONTAINER = 113,
+ SV_CMD_DELETE_IN_CONTAINER = 114,
+ SV_CMD_SET_INVENTORY = 120,
+ SV_CMD_DELETE_INVENTORY = 121,
+ SV_CMD_TRADE_OFFER_OWN = 125,
+ SV_CMD_TRADE_OFFER_PARTNER = 126,
+ SV_CMD_CLOSE_TRADE = 127,
+ SV_CMD_AMBIENTE = 130,
+ SV_CMD_GRAPHICAL_EFFECT = 131,
+ SV_CMD_TEXTUAL_EFFECT = 132,
+ SV_CMD_MISSILE_EFFECT = 133,
+ SV_CMD_MARK_CREATURE = 134,
+ SV_CMD_CREATURE_HEALTH = 140,
+ SV_CMD_CREATURE_LIGHT = 141,
+ SV_CMD_CREATURE_OUTFIT = 142,
+ SV_CMD_CREATURE_SPEED = 143,
+ SV_CMD_CREATURE_SKULL = 144,
+ SV_CMD_CREATURE_PARTY = 145,
+ SV_CMD_EDIT_TEXT = 150,
+ SV_CMD_EDIT_LIST = 151,
+ SV_CMD_PLAYER_DATA = 160,
+ SV_CMD_PLAYER_SKILLS = 161,
+ SV_CMD_PLAYER_STATE = 162,
+ SV_CMD_CLEAR_TARGET = 163,
+ SV_CMD_TALK = 170,
+ SV_CMD_CHANNELS = 171,
+ SV_CMD_OPEN_CHANNEL = 172,
+ SV_CMD_PRIVATE_CHANNEL = 173,
+ SV_CMD_OPEN_REQUEST = 174,
+ SV_CMD_DELETE_REQUEST = 175,
+ SV_CMD_FINISH_REQUEST = 176,
+ SV_CMD_CLOSE_REQUEST = 177,
+ SV_CMD_OPEN_OWN_CHANNEL = 178,
+ SV_CMD_CLOSE_CHANNEL = 179,
+ SV_CMD_MESSAGE = 180,
+ SV_CMD_SNAPBACK = 181,
+ SV_CMD_FLOOR_UP = 190,
+ SV_CMD_FLOOR_DOWN = 191,
+ SV_CMD_OUTFIT = 200,
+ SV_CMD_BUDDY_DATA = 210,
+ SV_CMD_BUDDY_ONLINE = 211,
+ SV_CMD_BUDDY_OFFLINE = 212,
+};
+
// TODO(fusion): The maximum number of connections should probably be kept in
// sync with the maximum number of communication threads, or maybe it is the
// same constant.
@@ -93,6 +222,7 @@ struct TConnection {
TKnownCreature KnownCreatureTable[150];
};
+// connections.cc
TConnection *AssignFreeConnection(void);
TConnection *GetFirstConnection(void);
TConnection *GetNextConnection(void);
@@ -100,4 +230,82 @@ void ProcessConnections(void);
void InitConnections(void);
void ExitConnections(void);
+// sending.cc
+void SendAll(void);
+bool BeginSendData(TConnection *Connection);
+void FinishSendData(TConnection *Connection);
+void SkipFlush(TConnection *Connection);
+void SendMapObject(TConnection *Connection, Object Obj);
+void SendMapPoint(TConnection *Connection, int x, int y, int z);
+void SendResult(TConnection *Connection, RESULT r);
+void SendRefresh(TConnection *Connection);
+void SendInitGame(TConnection *Connection, uint32 CreatureID);
+void SendRights(TConnection *Connection);
+void SendPing(TConnection *Connection);
+void SendFullScreen(TConnection *Connection);
+void SendRow(TConnection *Connection, int Direction);
+void SendFloors(TConnection *Connection, bool Up);
+void SendFieldData(TConnection *Connection, int x, int y, int z);
+void SendAddField(TConnection *Connection, int x, int y, int z, Object Obj);
+void SendChangeField(TConnection *Connection, int x, int y, int z, Object Obj);
+void SendDeleteField(TConnection *Connection, int x, int y, int z, Object Obj);
+void SendMoveCreature(TConnection *Connection,
+ uint32 CreatureID, int DestX, int DestY, int DestZ);
+void SendContainer(TConnection *Connection, int ContainerNr);
+void SendCloseContainer(TConnection *Connection, int ContainerNr);
+void SendCreateInContainer(TConnection *Connection, int ContainerNr, Object Obj);
+void SendChangeInContainer(TConnection *Connection, int ContainerNr, Object Obj);
+void SendDeleteInContainer(TConnection *Connection, int ContainerNr, Object Obj);
+void SendBodyInventory(TConnection *Connection, uint32 CreatureID);
+void SendSetInventory(TConnection *Connection, int Position, Object Obj);
+void SendDeleteInventory(TConnection *Connection, int Position);
+void SendTradeOffer(TConnection *Connection, const char *Name, bool OwnOffer, Object Obj);
+void SendCloseTrade(TConnection *Connection);
+void SendAmbiente(TConnection *Connection);
+void SendGraphicalEffect(TConnection *Connection, int x, int y, int z, int Type);
+void SendTextualEffect(TConnection *Connection, int x, int y, int z, int Color, const char *Text);
+void SendMissileEffect(TConnection *Connection, int OrigX, int OrigY, int OrigZ,
+ int DestX, int DestY, int DestZ, int Type);
+void SendMarkCreature(TConnection *Connection, uint32 CreatureID, int Color);
+void SendCreatureHealth(TConnection *Connection, uint32 CreatureID);
+void SendCreatureLight(TConnection *Connection, uint32 CreatureID);
+void SendCreatureOutfit(TConnection *Connection, uint32 CreatureID);
+void SendCreatureSpeed(TConnection *Connection, uint32 CreatureID);
+void SendCreatureSkull(TConnection *Connection, uint32 CreatureID);
+void SendCreatureParty(TConnection *Connection, uint32 CreatureID);
+void SendEditText(TConnection *Connection, Object Obj);
+void SendEditList(TConnection *Connection, uint8 Type, uint32 ID, const char *Text);
+void SendPlayerData(TConnection *Connection);
+void SendPlayerSkills(TConnection *Connection);
+void SendPlayerState(TConnection *Connection, uint8 State);
+void SendClearTarget(TConnection *Connection);
+void SendTalk(TConnection *Connection, uint32 StatementID,
+ const char *Sender, int Mode, const char *Text, int Data);
+void SendTalk(TConnection *Connection, uint32 StatementID,
+ const char *Sender, int Mode, int Channel, const char *Text);
+void SendTalk(TConnection *Connection, uint32 StatementID,
+ const char *Sender, int Mode, int x, int y, int z, const char *Text);
+void SendChannels(TConnection *Connection);
+void SendOpenChannel(TConnection *Connection, int Channel);
+void SendPrivateChannel(TConnection *Connection, const char *Name);
+void SendOpenRequest(TConnection *Connection);
+void SendDeleteRequest(TConnection *Connection, const char *Name);
+void SendFinishRequest(TConnection *Connection, const char *Name);
+void SendCloseRequest(TConnection *Connection);
+void SendOpenOwnChannel(TConnection *Connection, int Channel);
+void SendCloseChannel(TConnection *Connection, int Channel);
+void SendMessage(TConnection *Connection, int Mode, const char *Text, ...) ATTR_PRINTF(3, 4);
+void SendSnapback(TConnection *Connection);
+void SendOutfit(TConnection *Connection);
+void SendBuddyData(TConnection *Connection, uint32 CharacterID, const char *Name, bool Online);
+void SendBuddyStatus(TConnection *Connection, uint32 CharacterID, bool Online);
+void BroadcastMessage(int Mode, const char *Text, ...) ATTR_PRINTF(2, 3);
+void DeleteGamemasterRequest(const char *Name);
+void InitSending(void);
+void ExitSending(void);
+
+// receiving.cc
+void InitReceiving(void);
+void ExitReceiving(void);
+
#endif // TIBIA_CONNECTIONS_HH_