mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-15 08:21:06 +00:00
- move clc_t into net_clc.h from net_protocol.h - split packet processing stuff from net.h into net_packet.h - add a is_server arg to Log_{Incoming,Outgoing}_Packet, so libs/net is oblivious to if we're running a server or not (except with the arg, obviously) - remove the long obsolete (even in original quake) svc_spawnbinary stuff - make nq use QF/net_svc.h - make nq link to libQFnet too - make qw's cl_parse.c use net_svc_qw_any_t instead of net_svc_any_t
118 lines
3.3 KiB
C
118 lines
3.3 KiB
C
/*
|
|
net_clc.h
|
|
|
|
(description)
|
|
|
|
Copyright (C) 1996-1997 Id Software, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to:
|
|
|
|
Free Software Foundation, Inc.
|
|
59 Temple Place - Suite 330
|
|
Boston, MA 02111-1307, USA
|
|
|
|
$Id$
|
|
*/
|
|
|
|
#ifndef QF_NET_CLC_H
|
|
#define QF_NET_CLC_H
|
|
|
|
#include "QF/mathlib.h"
|
|
#include "QF/msg.h"
|
|
#include "QF/net_packet.h"
|
|
#include "QF/net_protocol.h"
|
|
|
|
// N means netquake, Q means quakeworld
|
|
typedef enum {
|
|
clc_bad = 0,
|
|
clc_nop = 1, // NQ
|
|
clc_disconnect = 2, // N
|
|
clc_move = 3, // NQ [usercmd_t]
|
|
clc_stringcmd = 4, // NQ [string] message
|
|
clc_delta = 5, // Q [byte] sequence number, requests delta
|
|
// compression of message
|
|
clc_tmove = 6, // Q teleport request, spectator only
|
|
clc_upload = 7, // Q teleport request, spectator only
|
|
} clc_t;
|
|
|
|
|
|
typedef struct net_clc_nop_s
|
|
{
|
|
} net_clc_nop_t;
|
|
|
|
typedef struct net_clc_move_s
|
|
{
|
|
int seq_hash; // this is the ONLY thing that has to be set
|
|
// before calling *_Parse
|
|
byte checksum;
|
|
byte calculatedchecksum;
|
|
byte packetloss;
|
|
usercmd_t usercmd[3];
|
|
} net_clc_move_t;
|
|
|
|
typedef struct net_clc_stringcmd_s
|
|
{
|
|
const char *command;
|
|
} net_clc_stringcmd_t;
|
|
|
|
typedef struct net_clc_delta_s
|
|
{
|
|
byte sequence;
|
|
} net_clc_delta_t;
|
|
|
|
typedef struct net_clc_tmove_s
|
|
{
|
|
vec3_t origin;
|
|
} net_clc_tmove_t;
|
|
|
|
typedef struct net_clc_upload_s
|
|
{
|
|
short size;
|
|
byte percent;
|
|
const byte *data;
|
|
} net_clc_upload_t;
|
|
|
|
typedef union net_clc_any_u
|
|
{
|
|
net_clc_nop_t nop;
|
|
net_clc_move_t move;
|
|
net_clc_stringcmd_t stringcmd;
|
|
net_clc_delta_t delta;
|
|
net_clc_tmove_t tmove;
|
|
net_clc_upload_t upload;
|
|
} net_clc_any_t;
|
|
|
|
typedef net_status_t (*net_clc_emit_t) (net_clc_any_t *block, sizebuf_t *buf);
|
|
typedef net_status_t (*net_clc_parse_t) (net_clc_any_t *block, msg_t *msg);
|
|
|
|
const char *NET_CLC_GetString (clc_t type);
|
|
net_status_t NET_CLC_Emit (clc_t type, void *block, sizebuf_t *buf);
|
|
net_status_t NET_CLC_Parse (clc_t *type, net_clc_any_t *block, msg_t *msg);
|
|
|
|
net_status_t NET_CLC_NOP_Emit (net_clc_nop_t *block, sizebuf_t *buf);
|
|
net_status_t NET_CLC_NOP_Parse (net_clc_nop_t *block, msg_t *msg);
|
|
net_status_t NET_CLC_Move_Emit (net_clc_move_t *block, sizebuf_t *buf);
|
|
net_status_t NET_CLC_Move_Parse (net_clc_move_t *block, msg_t *msg);
|
|
net_status_t NET_CLC_Stringcmd_Emit (net_clc_stringcmd_t *block,
|
|
sizebuf_t *buf);
|
|
net_status_t NET_CLC_Stringcmd_Parse (net_clc_stringcmd_t *block, msg_t *msg);
|
|
net_status_t NET_CLC_Delta_Emit (net_clc_delta_t *block, sizebuf_t *buf);
|
|
net_status_t NET_CLC_Delta_Parse (net_clc_delta_t *block, msg_t *msg);
|
|
net_status_t NET_CLC_TMove_Emit (net_clc_tmove_t *block, sizebuf_t *buf);
|
|
net_status_t NET_CLC_TMove_Parse (net_clc_tmove_t *block, msg_t *msg);
|
|
net_status_t NET_CLC_Upload_Emit (net_clc_upload_t *block, sizebuf_t *buf);
|
|
net_status_t NET_CLC_Upload_Parse (net_clc_upload_t *block, msg_t *msg);
|
|
|
|
#endif // QF_NET_CLC_H
|