rott/rott/rt_ted.h

185 lines
4.2 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_TED.C - Ted stuff for maps and such
//
//***************************************************************************
#include "rottnet.h"
#ifndef _rt_ted_public
#define _rt_ted_public
#define MAXCLOCKS 10
#define MAXSPAWNLOCATIONS 50
#define POWERUPTICS ((VBLCOUNTER*60)+6)
#define IsPlatform(x,y) ( (MAPSPOT((x),(y),2)==1) || ((MAPSPOT((x),(y),2)>=4) && (MAPSPOT((x),(y),2)<=9)))
#define EXITTILE (107)
#define SECRETEXITTILE (106)
#define FL_SWITCH 0x01
#define FL_ON 0x02
#define FL_REVERSIBLE 0x04
#define FL_W_DAMAGE 0x08
#define FL_W_INVERTED 0x10
#define FL_S_FLIPPED 0x20
#define MAXTEAMS 11
typedef struct
{
int nummembers;
int uniformcolor;
int tilex,tiley;
byte dir;
} teamtype;
extern teamtype TEAM[MAXPLAYERS];
typedef struct
{ thingtype which;
byte flags;
byte hitpoints;
word tile;
byte tilex,tiley;
} wall_t;
typedef struct
{
int number;
char mapname[23];
} mapinfo_t;
typedef struct
{
int nummaps;
mapinfo_t maps[100];
} mapfileinfo_t;
#define MAXLEVELNAMELENGTH 23
#define ALLOCATEDLEVELNAMELENGTH 24
#define NUMPLANES 3
#define NUMHEADEROFFSETS 100
#define MAP_SPECIAL_TOGGLE_PUSHWALLS 0x0001
typedef struct
{
unsigned used;
unsigned CRC;
unsigned RLEWtag;
unsigned MapSpecials;
unsigned planestart[ NUMPLANES ];
unsigned planelength[ NUMPLANES ];
char Name[ ALLOCATEDLEVELNAMELENGTH ];
} RTLMAP;
typedef struct
{int x,y,dir;
}_2dvec;
extern _2dvec SPAWNLOC[MAXSPAWNLOCATIONS],FIRST,SECOND;
typedef struct
{int time1;
int time2;
byte points_to_tilex;
byte points_to_tiley;
int linkindex;
}str_clock;
extern int numareatiles[NUMAREAS+1];
extern int shapestart,shapestop;
extern int NUMSPAWNLOCATIONS;
extern int mapwidth;
extern int mapheight;
extern wall_t walls[MAXWALLTILES];
extern str_clock Clocks[MAXCLOCKS];
extern int LightsInArea[NUMAREAS+1];
extern int numclocks;
extern word ELEVATORLOCATION;
extern unsigned short int *mapplanes[3];
extern int gunsstart;
extern int elevatorstart;
extern int spritestop;
extern int fog;
extern int lightsource;
extern int SNAKELEVEL;
extern boolean insetupgame;
extern char LevelName[80];
extern boolean ISRTL;
void PreCacheGroup(int,int,int); // added type
void AssignTeams(void);
void LoadTedMap( const char *extension, int mapnum );
void SetupGameLevel(void);
void ScanInfoPlane(void);
void PreCacheLump( int lump, int level, int type ); // added type
void SetupGameLevelAgain (void);
void ScanInfoPlaneAgain (void);
void PreCacheActor( int actor, int which );
void PreCache( void );
void SetupWalls( void );
void SetupAnimatedWalls( void );
void SetupSwitches( void );
void SetupPlayers( void );
void SetupMaskedWalls( void );
void SetupPushWalls( void );
void SetupPushWallLinks( void );
void SetupDoors (void);
void SetupDoorLinks (void);
void SetupClocks (void);
void SetupLinkedActors (void);
void SetupLights(void);
void SetupWindows ( void );
int GetWallIndex( int texture );
void PrintMapStats (void);
void PrintTileStats (void);
void GetMapInfo (mapfileinfo_t * mapinfo);
void GetMapFileName ( char * filename );
void SetBattleMapFileName ( char * filename );
word GetMapCRC ( int num );
int GetNextMap ( int tilex, int tiley );
void Illuminate();
int GetSongForLevel ( void );
void CheckHolidays(void);
boolean IsChristmas(void);
boolean DoPanicMapping (void);
#endif