#ifndef BUILDING_H

#define BUILDING_H

class SOLDIERTYPE;
// for what it's worth, 2 bytes, we use roof climb spots as 1-based
// so the 0th entry is always 0 and can be compared with (and not equal)
// NOWHERE or any other location
#define MAX_CLIMBSPOTS_PER_BUILDING 255

// similarly for buildings, only we really want 0 to be invalid index
#define NO_BUILDING 0
#define MAX_BUILDINGS 255

typedef struct BUILDING
{
	INT32			sUpClimbSpots[MAX_CLIMBSPOTS_PER_BUILDING];
	INT32 		sDownClimbSpots[MAX_CLIMBSPOTS_PER_BUILDING];
	UINT8			ubNumClimbSpots;
} BUILDING;

//extern UINT8 gubBuildingInfo[ WORLD_MAX ];
extern UINT8 * gubBuildingInfo;

BOOLEAN InBuilding( INT32 sGridNo );
BUILDING * GenerateBuilding( INT32 sDesiredSpot );
BUILDING * FindBuilding( INT32 sGridNo );
void GenerateBuildings( void );
INT32 FindClosestClimbPoint( SOLDIERTYPE *pSoldier, INT32 sStartGridNo, INT32 sDesiredGridNo, BOOLEAN fClimbUp );
BOOLEAN SameBuilding( INT32 sGridNo1, INT32 sGridNo2 );

#endif