DEADSOFTWARE

ac57351ce2abf65d42e2cf3ddd2b73d1fb555fc4
[d2df-sdl.git] / src / game / g_nethandler.pas
1 (* Copyright (C) Doom 2D: Forever Developers
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *)
16 {$INCLUDE ../shared/a_modes.inc}
17 unit g_nethandler;
19 interface
21 uses g_net, g_netmsg, ENet;
23 procedure g_Net_ClientMsgHandler(P: pENetPacket);
24 procedure g_Net_ClientLightMsgHandler(P: pENetPacket);
25 procedure g_Net_HostMsgHandler(S: pTNetClient; P: pENetPacket);
27 implementation
29 uses e_msg;
31 procedure g_Net_ClientMsgHandler(P: pENetPacket);
32 var
33 MID: Byte;
34 NetMsg: TMsg;
35 begin
36 if not NetMsg.Init(P^.data, P^.dataLength, True) then
37 Exit;
39 MID := NetMsg.ReadByte();
41 case MID of
42 NET_MSG_CHAT: MC_RECV_Chat(NetMsg);
43 NET_MSG_GFX: MC_RECV_Effect(NetMsg);
44 NET_MSG_SND: MC_RECV_Sound(NetMsg);
45 NET_MSG_SCORE: MC_RECV_GameStats(NetMsg);
46 NET_MSG_COOP: MC_RECV_CoopStats(NetMsg);
47 NET_MSG_GEVENT: MC_RECV_GameEvent(NetMsg);
48 NET_MSG_FLAG: MC_RECV_FlagEvent(NetMsg);
49 NET_MSG_GSET: MC_RECV_GameSettings(NetMsg);
51 NET_MSG_PLR: MC_RECV_PlayerCreate(NetMsg);
52 NET_MSG_PLRPOS: MC_RECV_PlayerPos(NetMsg);
53 NET_MSG_PLRSTA: MC_RECV_PlayerStats(NetMsg);
54 NET_MSG_PLRDEL: MC_RECV_PlayerDelete(NetMsg);
55 NET_MSG_PLRDMG: MC_RECV_PlayerDamage(NetMsg);
56 NET_MSG_PLRDIE: MC_RECV_PlayerDeath(NetMsg);
57 NET_MSG_PLRFIRE:MC_RECV_PlayerFire(NetMsg);
58 NET_MSG_PLRSET: MC_RECV_PlayerSettings(NetMsg);
60 NET_MSG_MSPAWN: MC_RECV_MonsterSpawn(NetMsg);
61 NET_MSG_MPOS: MC_RECV_MonsterPos(NetMsg);
62 NET_MSG_MSTATE: MC_RECV_MonsterState(NetMsg);
63 NET_MSG_MSHOT: MC_RECV_MonsterShot(NetMsg);
64 NET_MSG_MDEL: MC_RECV_MonsterDelete(NetMsg);
66 NET_MSG_SHADD: MC_RECV_CreateShot(NetMsg);
67 NET_MSG_SHPOS: MC_RECV_UpdateShot(NetMsg);
68 NET_MSG_SHDEL: MC_RECV_DeleteShot(NetMsg);
70 NET_MSG_ISPAWN: MC_RECV_ItemSpawn(NetMsg);
71 NET_MSG_IDEL: MC_RECV_ItemDestroy(NetMsg);
73 NET_MSG_PSTATE: MC_RECV_PanelState(NetMsg);
74 NET_MSG_PTEX: MC_RECV_PanelTexture(NetMsg);
76 NET_MSG_TSOUND: MC_RECV_TriggerSound(NetMsg);
77 NET_MSG_TMUSIC: MC_RECV_TriggerMusic(NetMsg);
79 NET_MSG_TIME_SYNC: MC_RECV_TimeSync(NetMsg);
80 NET_MSG_VOTE_EVENT: MC_RECV_VoteEvent(NetMsg);
81 end;
83 enet_packet_destroy(P);
84 end;
86 procedure g_Net_ClientLightMsgHandler(P: pENetPacket);
87 var
88 MID: Byte;
89 NetMsg: TMsg;
90 begin
91 if not NetMsg.Init(P^.data, P^.dataLength, True) then
92 Exit;
94 MID := NetMsg.ReadByte();
96 case MID of
97 NET_MSG_GEVENT: MC_RECV_GameEvent(NetMsg);
98 NET_MSG_GSET: MC_RECV_GameSettings(NetMsg);
100 NET_MSG_PLR: if NetState <> NET_STATE_AUTH then MC_RECV_PlayerCreate(NetMsg);
101 NET_MSG_PLRDEL: if NetState <> NET_STATE_AUTH then MC_RECV_PlayerDelete(NetMsg);
102 end;
104 enet_packet_destroy(P);
105 end;
107 procedure g_Net_HostMsgHandler(S: pTNetClient; P: pENetPacket);
108 var
109 MID: Byte;
110 NetMsg: TMsg;
111 begin
112 if not NetMsg.Init(P^.data, P^.dataLength, True) then
113 Exit;
115 MID := NetMsg.ReadByte();
117 case MID of
118 NET_MSG_INFO: MH_RECV_Info(S, NetMsg);
119 NET_MSG_CHAT: MH_RECV_Chat(S, NetMsg);
120 NET_MSG_REQFST: MH_RECV_FullStateRequest(S, NetMsg);
122 NET_MSG_PLRPOS: MH_RECV_PlayerPos(S, NetMsg);
123 NET_MSG_PLRSET: MH_RECV_PlayerSettings(S, NetMsg);
124 NET_MSG_CHEAT: MH_RECV_CheatRequest(S, NetMsg);
126 NET_MSG_RCON_AUTH: MH_RECV_RCONPassword(S, NetMsg);
127 NET_MSG_RCON_CMD: MH_RECV_RCONCommand(S, NetMsg);
129 NET_MSG_MAP_REQUEST: MH_RECV_MapRequest(S, NetMsg);
130 NET_MSG_RES_REQUEST: MH_RECV_ResRequest(S, NetMsg);
132 NET_MSG_VOTE_EVENT: MH_RECV_Vote(S, NetMsg);
133 end;
135 enet_packet_destroy(P);
136 end;
138 end.