]> git.lizzy.rs Git - plan9front.git/blob - sys/src/games/doom/d_net.h
games/doom: add /sys/games/lib/doom as default wad path
[plan9front.git] / sys / src / games / doom / d_net.h
1 // Emacs style mode select   -*- C++ -*- 
2 //-----------------------------------------------------------------------------
3 //
4 // $Id:$
5 //
6 // Copyright (C) 1993-1996 by id Software, Inc.
7 //
8 // This source is available for distribution and/or modification
9 // only under the terms of the DOOM Source Code License as
10 // published by id Software. All rights reserved.
11 //
12 // The source is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
15 // for more details.
16 //
17 // DESCRIPTION:
18 //      Networking stuff.
19 //
20 //-----------------------------------------------------------------------------
21
22
23 #ifndef __D_NET__
24 #define __D_NET__
25
26 #include "d_player.h"
27
28
29 #ifdef __GNUG__
30 #pragma interface
31 #endif
32
33
34 //
35 // Network play related stuff.
36 // There is a data struct that stores network
37 //  communication related stuff, and another
38 //  one that defines the actual packets to
39 //  be transmitted.
40 //
41
42 #define DOOMCOM_ID              0x12345678l
43
44 // Max computers/players in a game.
45 #define MAXNETNODES             8
46
47
48 // Networking and tick handling related.
49 #define BACKUPTICS              12
50
51 typedef enum
52 {
53     CMD_SEND    = 1,
54     CMD_GET     = 2
55
56 } command_t;
57
58
59 //
60 // Network packet data.
61 //
62 typedef struct
63 {
64     // High bit is retransmit request.
65     unsigned            checksum;
66     // Only valid if NCMD_RETRANSMIT.
67     byte                retransmitfrom;
68     
69     byte                starttic;
70     byte                player;
71     byte                numtics;
72     ticcmd_t            cmds[BACKUPTICS];
73
74 } doomdata_t;
75
76
77
78
79 typedef struct
80 {
81     // Supposed to be DOOMCOM_ID?
82     long                id;
83     
84     // DOOM executes an int to execute commands.
85     short               intnum;         
86     // Communication between DOOM and the driver.
87     // Is CMD_SEND or CMD_GET.
88     short               command;
89     // Is dest for send, set by get (-1 = no packet).
90     short               remotenode;
91     
92     // Number of bytes in doomdata to be sent
93     short               datalength;
94
95     // Info common to all nodes.
96     // Console is allways node 0.
97     short               numnodes;
98     // Flag: 1 = no duplication, 2-5 = dup for slow nets.
99     short               ticdup;
100     // Flag: 1 = send a backup tic in every packet.
101     short               extratics;
102     // Flag: 1 = deathmatch.
103     short               deathmatch;
104     // Flag: -1 = new game, 0-5 = load savegame
105     short               savegame;
106     short               episode;        // 1-3
107     short               map;            // 1-9
108     short               skill;          // 1-5
109
110     // Info specific to this node.
111     short               consoleplayer;
112     short               numplayers;
113     
114     // These are related to the 3-display mode,
115     //  in which two drones looking left and right
116     //  were used to render two additional views
117     //  on two additional computers.
118     // Probably not operational anymore.
119     // 1 = left, 0 = center, -1 = right
120     short               angleoffset;
121     // 1 = drone
122     short               drone;          
123
124     // The packet data to be sent.
125     doomdata_t          data;
126     
127 } doomcom_t;
128
129
130
131 // Create any new ticcmds and broadcast to other players.
132 void NetUpdate (void);
133
134 // Broadcasts special packets to other players
135 //  to notify of game exit
136 void D_QuitNetGame (void);
137
138 //? how many ticks to run?
139 void TryRunTics (void);
140
141
142 #endif
143
144 //-----------------------------------------------------------------------------
145 //
146 // $Log:$
147 //
148 //-----------------------------------------------------------------------------
149