mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-12 22:00:49 +00:00
errors can be handled - add a MSG_ReadBlock and MSG_WriteBlock, which write arbitrary - add a MSG_PeekByte, although I never actually used it.. - canonicalize the svc's, so that if qw and nq have a svc with the same name but different contents, they get different names - add all the nq stuff to svc_t, so it has both nq and qw. fun enum that :) - fix all the sizebuf_t usages so they init all the fields properly - move qw's net_svc.c, net_clc.c, net_packetlog.c, and msg_ucmd.c (renamed to net_ucmd.c) into libs/net - move headers for the above in include/QF - convert remaining clc bits to NET_CLC (I think I got them all) - I split net_svc into net_svc_common and net_svc_qw too, in preperation for adding nq - moved movevars_t into "QF/net_svc_qw.h", from pmove.h - made the CL_Parse* functions in qw get the net_svc_*_t as a param, instead of parsing themselves - use a jumptable for CL_Parse* - probably other machinates I've forgotten - and of course, probably added numerous bugs :)
108 lines
3 KiB
C
108 lines
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 NET_CLC_H
|
|
#define NET_CLC_H
|
|
|
|
#include "QF/mathlib.h"
|
|
#include "QF/msg.h"
|
|
#include "QF/net.h"
|
|
#include "QF/net_protocol.h"
|
|
|
|
//#include "bothdefs.h"
|
|
//#include "net.h"
|
|
//#include "pmove.h"
|
|
|
|
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 // NET_CLC_H
|