rott/rott/rt_stat.h

239 lines
5.7 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_STAT.C (static object functions)
//
//***************************************************************************
#ifndef _rt_stat_public
#define _rt_stat_public
#include "rt_ted.h"
#define MAXSWITCHES 64
#define MAXANIMWALLS 17
#define NUMSTATS 91
typedef enum {
stat_ylight,
stat_rlight,
stat_glight,
stat_blight,
stat_chandelier,
stat_lamp,
stat_pedgoldkey,
stat_pedsilverkey,
stat_pedironkey,
stat_pedcrystalkey,
stat_gibs1,
stat_gibs2,
stat_gibs3,
stat_monkmeal,
stat_priestporridge,
stat_monkcrystal1,
stat_monkcrystal2,
stat_oneup,
stat_threeup,
stat_altbrazier1,
stat_altbrazier2,
stat_healingbasin,
stat_emptybasin,
stat_bat,
stat_knifestatue,
stat_twopistol,
stat_mp40,
stat_bazooka,
stat_firebomb,
stat_heatseeker,
stat_drunkmissile,
stat_firewall,
stat_splitmissile,
stat_kes,
stat_lifeitem1,
stat_lifeitem2,
stat_lifeitem3,
stat_lifeitem4,
stat_tntcrate,
stat_bonusbarrel,
stat_torch,
stat_floorfire,
stat_dipball1,
stat_dipball2,
stat_dipball3,
stat_touch1,
stat_touch2,
stat_touch3,
stat_touch4,
stat_dariantouch,
stat_scotthead,
stat_garb1,
stat_garb2,
stat_garb3,
stat_shit,
stat_grate,
stat_metalshards,
stat_emptypedestal,
stat_emptytable,
stat_stool,
stat_bcolumn,
stat_gcolumn,
stat_icolumn,
stat_tree,
stat_plant,
stat_urn,
stat_haystack,
stat_ironbarrel,
stat_heatgrate,
stat_standardpole,
stat_pit,
stat_godmode,
stat_dogmode,
stat_fleetfeet,
stat_elastic,
stat_mushroom,
stat_gasmask,
stat_bulletproof,
stat_asbesto,
stat_random,
stat_rubble,
stat_woodfrag,
stat_metalfrag,
stat_emptystatue,
stat_tomlarva,
stat_bullethole,
stat_collector,
stat_mine,
stat_missmoke,
stat_disk,
stat_badstatic
} stat_t;
typedef struct awall
{
byte active;
byte count;
signed char ticcount;
int texture;
int basetexture;
} animwall_t;
typedef struct statstruct
{
thingtype which;
byte tilex,tiley;
fixed x,y,z;
int shapenum;
unsigned flags;
signed char ticcount;
signed char ammo;
byte *visspot;
signed char count;
byte numanims;
stat_t itemnumber;
short int hitpoints;
short int whichstat;
short int areanumber;
long linked_to;
struct statstruct *statnext;
struct statstruct *statprev;
struct statstruct *nextactive;
struct statstruct *prevactive;
} statobj_t;
typedef struct respstruct
{
byte tilex,tiley;
int ticcount;
stat_t itemnumber;
int spawnz;
struct respstruct *next;
struct respstruct *prev;
long linked_to;
} respawn_t;
typedef struct
{
short heightoffset;
int picnum;
stat_t type;
unsigned flags;
byte tictime;
byte numanims;
byte hitpoints;
byte damage;
signed char ammo;
} statinfo;
extern statobj_t *lastactivestat,*firstactivestat;
extern statobj_t *firstemptystat,*lastemptystat;
extern int spritestart;
extern wall_t switches[MAXSWITCHES],*lastswitch;
extern respawn_t *firstrespawn,*lastrespawn;
extern statobj_t *FIRSTSTAT,*LASTSTAT,*sprites[MAPSIZE][MAPSIZE];
extern statinfo stats[NUMSTATS];
extern dirtype diagonal[9][9];
extern dirtype opposite[9];
extern int statcount;
extern int animwallstart;
extern animwall_t animwalls[MAXANIMWALLS];
void Set_NewZ_to_MapValue(fixed*,int,const char*,int,int);
void RemoveFromFreeStaticList(statobj_t*);
void CheckCriticalStatics(void);
void ActivateLight(long);
void DeactivateLight(long);
void TurnOnLight(int,int);
void TurnOffLight(int,int);
void MakeStatActive(statobj_t*);
void MakeStatInactive(statobj_t*);
void AddStatic(statobj_t *);
void RemoveStatic(statobj_t *);
void SpawnSwitchThingy(int,int);
void InitStaticList (void);
void InitAnimatedWallList(void);
void SetupAnimatedWall(int which);
void SpawnStatic (int tilex, int tiley, int mtype, int zoffset);
void SpawnSolidStatic (statobj_t * temp);
void AnimateWalls(void);
void DoSprites(void);
void SaveAnimWalls(byte ** buf, int * size);
void SaveStatics(byte ** buf, int * size);
void LoadAnimWalls(byte * buf, int size);
void LoadStatics(byte * buf, int size);
void SaveSwitches(byte ** buf, int * size);
void LoadSwitches(byte * buf, int size);
void SpawnInertStatic (int x, int y, int z, int mtype);
void SpawnStaticDamage(statobj_t * stat, int angle);
#endif