Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
298 serge 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
//
19
//
20
//-----------------------------------------------------------------------------
21
 
22
 
23
#ifndef __D_PLAYER__
24
#define __D_PLAYER__
25
 
26
 
27
// The player data structure depends on a number
28
// of other structs: items (internal inventory),
29
// animation states (closely tied to the sprites
30
// used to represent them, unfortunately).
31
#include "d_items.h"
32
#include "p_pspr.h"
33
 
34
// In addition, the player is just a special
35
// case of the generic moving object/actor.
36
#include "p_mobj.h"
37
 
38
// Finally, for odd reasons, the player input
39
// is buffered within the player data struct,
40
// as commands per game tick.
41
#include "d_ticcmd.h"
42
 
43
#ifdef __GNUG__
44
#pragma interface
45
#endif
46
 
47
 
48
 
49
 
50
//
51
// Player states.
52
//
53
typedef enum
54
{
55
    // Playing or camping.
56
    PST_LIVE,
57
    // Dead on the ground, view follows killer.
58
    PST_DEAD,
59
    // Ready to restart/respawn???
60
    PST_REBORN
61
 
62
} playerstate_t;
63
 
64
 
65
//
66
// Player internal flags, for cheats and debug.
67
//
68
typedef enum
69
{
70
    // No clipping, walk through barriers.
71
    CF_NOCLIP		= 1,
72
    // No damage, no health loss.
73
    CF_GODMODE		= 2,
74
    // Not really a cheat, just a debug aid.
75
    CF_NOMOMENTUM	= 4
76
 
77
} cheat_t;
78
 
79
 
80
//
81
// Extended player object info: player_t
82
//
83
typedef struct player_s
84
{
85
    mobj_t*		mo;
86
    playerstate_t	playerstate;
87
    ticcmd_t		cmd;
88
 
89
    // Determine POV,
90
    //  including viewpoint bobbing during movement.
91
    // Focal origin above r.z
92
    fixed_t		viewz;
93
    // Base height above floor for viewz.
94
    fixed_t		viewheight;
95
    // Bob/squat speed.
96
    fixed_t         	deltaviewheight;
97
    // bounded/scaled total momentum.
98
    fixed_t         	bob;
99
 
100
    // This is only used between levels,
101
    // mo->health is used during levels.
102
    int			health;
103
    int			armorpoints;
104
    // Armor type is 0-2.
105
    int			armortype;
106
 
107
    // Power ups. invinc and invis are tic counters.
108
    int			powers[NUMPOWERS];
109
    boolean		cards[NUMCARDS];
110
    boolean		backpack;
111
 
112
    // Frags, kills of other players.
113
    int			frags[MAXPLAYERS];
114
    weapontype_t	readyweapon;
115
 
116
    // Is wp_nochange if not changing.
117
    weapontype_t	pendingweapon;
118
 
119
    boolean		weaponowned[NUMWEAPONS];
120
    int			ammo[NUMAMMO];
121
    int			maxammo[NUMAMMO];
122
 
123
    // True if button down last tic.
124
    int			attackdown;
125
    int			usedown;
126
 
127
    // Bit flags, for cheats and debug.
128
    // See cheat_t, above.
129
    int			cheats;
130
 
131
    // Refired shots are less accurate.
132
    int			refire;
133
 
134
     // For intermission stats.
135
    int			killcount;
136
    int			itemcount;
137
    int			secretcount;
138
 
139
    // Hint messages.
140
    char*		message;
141
 
142
    // For screen flashing (red or bright).
143
    int			damagecount;
144
    int			bonuscount;
145
 
146
    // Who did damage (NULL for floors/ceilings).
147
    mobj_t*		attacker;
148
 
149
    // So gun flashes light up areas.
150
    int			extralight;
151
 
152
    // Current PLAYPAL, ???
153
    //  can be set to REDCOLORMAP for pain, etc.
154
    int			fixedcolormap;
155
 
156
    // Player skin colorshift,
157
    //  0-3 for which color to draw player.
158
    int			colormap;
159
 
160
    // Overlay view sprites (gun, etc).
161
    pspdef_t		psprites[NUMPSPRITES];
162
 
163
    // True if secret level has been done.
164
    boolean		didsecret;
165
 
166
} player_t;
167
 
168
 
169
//
170
// INTERMISSION
171
// Structure passed e.g. to WI_Start(wb)
172
//
173
typedef struct
174
{
175
    boolean	in;	// whether the player is in game
176
 
177
    // Player stats, kills, collected items etc.
178
    int		skills;
179
    int		sitems;
180
    int		ssecret;
181
    int		stime;
182
    int		frags[4];
183
    int		score;	// current score on entry, modified on return
184
 
185
} wbplayerstruct_t;
186
 
187
typedef struct
188
{
189
    int		epsd;	// episode # (0-2)
190
 
191
    // if true, splash the secret level
192
    boolean	didsecret;
193
 
194
    // previous and next levels, origin 0
195
    int		last;
196
    int		next;
197
 
198
    int		maxkills;
199
    int		maxitems;
200
    int		maxsecret;
201
    int		maxfrags;
202
 
203
    // the par time
204
    int		partime;
205
 
206
    // index of this player in game
207
    int		pnum;
208
 
209
    wbplayerstruct_t	plyr[MAXPLAYERS];
210
 
211
} wbstartstruct_t;
212
 
213
 
214
#endif
215
//-----------------------------------------------------------------------------
216
//
217
// $Log:$
218
//
219
//-----------------------------------------------------------------------------