rott/rott/rt_net.h

332 lines
6.8 KiB
C
Executable File

/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
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 the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//***************************************************************************
//
// RT_NET.H - Network stuff
//
//***************************************************************************
#ifndef _rt_net_public
#define _rt_net_public
#include "develop.h"
#include "rottnet.h"
#include "rt_actor.h"
#include "rt_battl.h"
#include "rt_playr.h"
#include "rt_main.h"
#define MAXCMDS 256
#define COM_DELTA 1
#define COM_REQUEST 2
#define COM_FIXUP 3
#define COM_TEXT 4
#define COM_PAUSE 5
#define COM_QUIT 6
#define COM_SYNC 7
#define COM_REMRID 8
#define COM_RESPAWN 10
#define COM_UNPAUSE 11
#define COM_SERVER 12
#define COM_START 13
#define COM_GAMEDESC 15
#define COM_GAMEPLAY 16
#define COM_GAMEMASTER 17
#define COM_GAMEACK 18
#define COM_ENDGAME 19
#define COM_SYNCTIME 20
#if (SYNCCHECK==1)
#define COM_SYNCCHECK 21
#endif
#define COM_SOUNDANDDELTA 22
#define COM_EXIT 23
#define COM_GAMEEND 24
#define COM_DELTANULL 25
#define CHECKSYNCTIME (VBLCOUNTER<<2)
#define NETSYNCSERVERTIME (VBLCOUNTER)
#define MODEMSYNCSERVERTIME (VBLCOUNTER/4)
#define DUMMYPACKETSIZE 20
#define COM_MAXTEXTSTRINGLENGTH 33
// Sound defines for Remote ridicule
#define COM_SOUND_START_TRANSMISSION (0xff)
#define COM_SOUND_END_TRANSMISSION (0xfe)
#define COM_SOUND_NORMAL_TRANSMISSION (0xfd)
#define COM_SOUND_BUFFERSIZE 256
// Demo Delta Structure
typedef struct DemoType {
int time;
short momx;
short momy;
word dangle;
word buttons;
} DemoType;
// Demo Header Structure
typedef struct DemoHeaderType {
gametype demostate;
} DemoHeaderType;
// Movement Queue Structure
typedef struct MoveType {
byte type;
int time;
short momx;
short momy;
word dangle;
word buttons;
char Sounddata[0];
} MoveType;
typedef struct NullMoveType {
byte type;
int time;
} NullMoveType;
typedef struct {
void * Commands[MAXCMDS];
} CommandType;
typedef struct {
byte CommandStates[MAXCMDS];
} CommandStatusType;
typedef MoveType COM_SoundAndDeltaType;
// uncomment for live remote ridicule
typedef struct {
byte type;
byte data[COM_SOUND_BUFFERSIZE];
// char data[COM_MAXTEXTSTRINGLENGTH];
} COM_SoundType;
typedef struct {
byte type;
int synctime;
} COM_SyncType;
typedef struct {
byte type;
int time;
int synctime;
int x;
int y;
int z;
word angle;
word randomindex;
} COM_CheckSyncType;
typedef struct {
byte type;
int time;
byte numpackets;
byte data;
} COM_ServerHeaderType;
typedef struct {
byte type;
int time;
byte numpackets;
} COM_RequestType;
typedef struct {
byte type;
int time;
byte towho;
char string[COM_MAXTEXTSTRINGLENGTH];
} COM_TextType;
#define MSG_DIRECTED_TO_ALL 255
#define MSG_DIRECTED_TO_TEAM 254
typedef struct {
byte type;
int time;
byte player;
byte num;
byte towho;
} COM_RemoteRidiculeType;
typedef struct {
byte type;
int time;
byte numpackets;
byte data;
} COM_FixupType;
typedef struct {
byte type;
int time;
} COM_QuitType;
typedef struct {
byte type;
int time;
} COM_ExitType;
typedef struct {
byte type;
int time;
} COM_GameEndType;
typedef struct {
byte character; // which character
byte uniformcolor; // which color
char codename[MAXCODENAMELENGTH]; // codename
} COM_PlayerDescriptionType;
typedef struct {
byte type;
byte player; // which player
byte violence;
byte Product;
unsigned Version;
COM_PlayerDescriptionType playerdescription;
} COM_GamePlayerType;
typedef struct {
byte type;
byte level;
word mapcrc;
byte violence;
byte Product;
byte mode;
unsigned Version;
boolean teamplay;
specials SpecialsTimes;
battle_type options;
char battlefilename[20];
int randomseed;
boolean ludicrousgibs;
COM_PlayerDescriptionType players[MAXPLAYERS];
} COM_GameMasterType;
typedef struct {
byte type;
byte player; // which player
} COM_GameAckType;
typedef struct {
byte type;
int time;
} COM_EndGameType;
typedef struct {
byte type;
int time;
} COM_RespawnType;
typedef struct {
byte type;
int time;
} COM_PauseType;
typedef struct {
byte type;
int time;
} COM_UnPauseType;
extern boolean demorecord,
demoplayback;
extern byte *demoptr,
*lastdemoptr,
*demobuffer;
extern boolean demodone;
extern int predemo_violence;
void ControlPlayer (void);
void ControlRemote (objtype * ob);
void ControlPlayerObj (objtype * ob);
void InitializeGameCommands( void );
void ShutdownGameCommands( void );
void UpdateClientControls ( void );
void StartupClientControls ( void );
void ShutdownClientControls ( void );
void ProcessServer ( void );
void ServerLoop( void );
void SendPlayerDescription( void );
void SetGameDescription( void * pkt );
void SendGameDescription( void );
void SendGameAck( void );
void SendGameStart( void );
void SetupGamePlayer ( void );
void SetupGameMaster ( void );
void SetNormalHorizon (objtype * ob);
void SaveDemo (int demonumber);
void LoadDemo (int demonumber);
void RecordDemo ( void );
void SetupDemo ( void );
void FreeDemo ( void );
boolean DemoExists (int demonumber);
void AddEndGameCommand ( void );
void AddTextMessage ( char * message, int length, int towho );
void AddEndGameCommand ( void );
void AddPauseStateCommand ( int type );
void AddRespawnCommand ( void );
void RecordDemoCmd (void);
void ResetCurrentCommand ( void );
void AddRemoteRidiculeCommand ( int player, int towho, int num );
void ProcessRemoteRidicule ( void * pkt );
void SyncToServer( void );
void AddQuitCommand ( void );
void AddExitCommand ( void );
void AddGameEndCommand ( void );
boolean PlayerInGame ( int p );
boolean ConsoleIsServer ( void );
extern boolean IsServer;
extern boolean standalone;
extern boolean playerdead;
extern boolean modemgame;
extern boolean networkgame;
extern int numplayers;
extern int server;
extern boolean GamePaused;
extern boolean battlegibs;
extern boolean remoteridicule;
#if (SYNCCHECK==1)
extern int lastsynccheck;
extern COM_CheckSyncType PlayerSync[MAXPLAYERS];
void CheckForSyncCheck ( void );
#endif
int GamePacketSize( void );
#endif