rott/rott/rt_playr.h

296 lines
7.5 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_PLAYR.C - Player movement and stuff
//
//***************************************************************************
#ifndef _rt_playr_public
#define _rt_playr_public
#include "rt_actor.h"
#include "rt_stat.h"
#include "states.h"
#include "rottnet.h"
#include "rt_battl.h"
#include "develop.h"
extern int mouse_ry_input_scale;
#define LOW_GRAVITY 10000
#define NORMAL_GRAVITY 30000
#define HIGH_GRAVITY 250000
#define TAGHANDHEIGHT 40
#define MAXDEAD 32
#define MAXBULLETS 64
#define MAXCODENAMELENGTH 9
#define ARMED(x) ( \
(gamestate.PlayerHasGun[x]) || \
(!BATTLEMODE) \
)
typedef struct
{
statetype *state;
int speed;
classtype obclass;
int offset;
int flags;
}missile_stats;
extern missile_stats PlayerMissileData[13];
extern int GetWeaponForItem(int itemnumber);
extern int GetItemForWeapon(int weapon);
typedef enum
{reset,
reset2,
done,
at_knife,
at_pulltrigger,
at_automatic,
at_dryheaving,
at_missileweapon
} attack_action;
typedef struct atkinf
{
attack_action attack;
char mtics,frame; // attack is 1 for gun, 2 for knife, 3 for machine guns,
// 4 for chaingun (orig. game)
} attack_t;
typedef struct weaptype
{const int screenheight;
int startammo;
int base_damage;
int impulse;
int numattacks;
attack_t attackinfo[14];
}williamdidthis;
//
// Interactive input status of device, returned by SWIFT_Get3DStatus
//
typedef struct {
short x;
short y;
short z;
short pitch;
short roll;
short yaw;
short buttons;
} SWIFT_3DStatus;
//
// Static data about device, returned by SWIFT_GetStaticDeviceInfo
//
typedef struct
{
unsigned char deviceType;
unsigned char majorVersion;
unsigned char minorVersion;
unsigned char coordDescriptor[6];
unsigned char reserved[1];
} SWIFT_StaticData;
typedef struct
{
int lives;
int health;
int triads;
signed char ammo;
short poweruptime;
short protectiontime;
int new_weapon;
int keys;
int weapon;
int missileweapon;
int bulletweapon;
signed char HASBULLETWEAPON[3];
int attackframe,attackcount,weaponframe;
byte player;
int topspeed;
int dmomx;
int dmomy;
int angle;
int anglefrac;
boolean buttonheld[NUMBUTTONS];
boolean buttonstate[NUMBUTTONS];
int horizon;
int lastmomz;
signed short playerheight;
signed short heightoffset;
signed short weaponheight;
byte weaponx,weapony;
word batblast;
signed char NETCAPTURED;
signed char HASKNIFE;
int oldweapon, oldmissileweapon;
signed short weapondowntics,weaponuptics;
int soundtime;
int healthtime;
objtype* guntarget;
int targettime;
// int steptime;
// int stepwhich;
boolean falling;
int oldshapeoffset;
int uniformcolor;
char codename[MAXCODENAMELENGTH];
int oldheightoffset;
int team;
} playertype;
typedef struct
{ int topspeed;
int toprunspeed;
int hitpoints;
int accuracy;
int height;
} ROTTCHARS;
#define M_LINKSTATE(x,y) \
{ y = &PLAYERSTATE[x->dirchoosetime];\
}
extern williamdidthis DOGSCRATCH;
extern int GRAVITY;
extern int controlupdatetime;
extern int controlupdatestarted;
extern statobj_t *DEADPLAYER[MAXDEAD];
extern int NUMDEAD;
extern objtype *PLAYER[MAXPLAYERS];
extern objtype *player;
extern playertype PLAYERSTATE[MAXPLAYERS],*locplayerstate;
extern ROTTCHARS characters[5];
extern williamdidthis FREE;
extern statetype s_player;
extern williamdidthis WEAPONS[MAXWEAPONS];
extern boolean cybermanenabled;
extern boolean spaceballenabled;
extern boolean SpaceBallPresent;
extern boolean CybermanPresent;
extern boolean mouseenabled;
extern boolean joystickenabled;
extern boolean joypadenabled;
extern boolean joystickprogressive;
extern int joystickport;
extern int joyxmax, joyymax, joyxmin, joyymin;
extern int buttonscan[NUMBUTTONS];
extern int buttonmouse[6];
extern int buttonjoy[8];
extern boolean buttonpoll[NUMBUTTONS];
extern boolean godmode;
extern boolean missilecam;
extern objtype * missobj;
extern int lastpolltime;
extern int controlbuf[3];
extern int buttonbits;
extern int pausedstartedticcount;
extern boolean RefreshPause;
void PlayNoWaySound(void);
int GetBonusTimeForItem(int);
int GetRespawnTimeForItem(int);
int GetItemForWeapon(int);
void SetWhoHaveWeapons(void);
int MaxHitpointsForCharacter(playertype*);
void RespawnPlayerobj(objtype*);
void RevivePlayerobj(int,int,int,objtype*);
void OperateElevatorSwitch(objtype*,int,int,int);
void ResetPlayerstate(playertype*);
void InitializeWeapons(playertype*);
void DropWeapon(objtype*ob);
void PollKeyboardButtons (void);
void PollMouseButtons (void);
void PollJoystickButtons (void);
void PollKeyboardMove (void);
void PollCyberman (void);
void PollMouseMove (void);
void PollJoystickMove (void);
void PollControls (void);
void AddDemoCmd (void);
void AddRemoteCmd (void);
void PlayerSlideMove(objtype * ob);
void SpawnSmoke(objtype*);
void GetBonus(objtype*,statobj_t*);
void SpawnPlayerobj(int,int,int,int);
void ClipPlayer(void);
void PlayerMove ( objtype * ob );
void Cmd_Use(objtype*);
void Cmd_Fire (objtype*ob);
void SpawnGunSmoke(int x, int y, int z, int angle, int bullethole);
void SpawnBlood(objtype * ob, int angle);
void SpawnMetalSparks(objtype * ob, int angle);
void CheckPlayerSpecials(objtype * ob);
void LoadPlayer ( void );
void PlayerTiltHead (objtype * ob);
boolean InRange (objtype *p, objtype *victim, int distance);
void CheckUnPause ( void );
void UpdatePlayers ( void );
void UnTargetActor ( objtype * target );
enum
{ RENORMALIZE = 1,
PITFALL,
PITRISE,
COLUMNCRUSH,
GODMODERISE,
GODMODEFALL,
DOGMODEFALL,
DOGMODERISE,
STEPUP,
STEPDOWN
};
extern void ResetWeapons(objtype *);
extern void SaveWeapons(objtype*);
extern int whichpath;
extern statobj_t *BulletHoles[MAXBULLETS];
extern boolean vrenabled;
void SetupBulletHoleLink (int num, statobj_t * item);
#endif