This commit is contained in:
parent
d8ead7306d
commit
cff3ff7ea2
2 changed files with 49 additions and 111 deletions
|
@ -17,20 +17,44 @@
|
|||
class CLayerCollision
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
COL_Y_OFS =8,
|
||||
};
|
||||
|
||||
CLayerCollision(sLayerHdr *Hdr);
|
||||
virtual ~CLayerCollision();
|
||||
|
||||
virtual void shutdown();
|
||||
|
||||
u8 Get(int X,int Y) {return(Map[X+(Y*MapWidth)]&COLLISION_TILE_MASK);}
|
||||
u16 GetYPos(int Y) {return(ColYTable[Y+COL_Y_OFS]);}
|
||||
|
||||
int getHeightFromGround(int _x,int _y,int _maxHeight=32);
|
||||
int getHeightFromGroundExcluding(int _x,int _y,int _exclusion,int _maxHeight=32);
|
||||
int getHeightFromGroundNonSB(int _x,int _y,int _maxHeight=32);
|
||||
int getHeightFromGroundNonSB(int _x,int _y,int _maxHeight=32) {return( CLayerCollision::getHeightFromGroundExcluding( _x, _y, COLLISION_TYPE_FLAG_SB_NOMOVE, _maxHeight ) );}
|
||||
int getHeightFromGroundCart(int _x,int _y,int _maxHeight=32);
|
||||
int getHeightFromGroundAmmo(int _x,int _y,int _maxHeight=32);
|
||||
int getCollisionBlock(int _x,int _y) {return Map[(_x>>4)+((_y>>4)*MapWidth)];}
|
||||
|
||||
u8 *getMapPtr(int _x,int _y) {return(&Map[(_x>>4)+((_y>>4)*MapWidth)]);}
|
||||
inline u8 *getMapPtr(int _x,int _y)
|
||||
{
|
||||
int Ofs=(_x>>4)+GetYPos(_y>>4);
|
||||
return(&Map[Ofs]);
|
||||
// return(&Map[(_x>>4)+((_y>>4)*MapWidth)]);
|
||||
}
|
||||
|
||||
inline int getCollisionBlock(int _x,int _y)
|
||||
{
|
||||
u8 Col=*getMapPtr(_x,_y);
|
||||
return (Col);
|
||||
// return Map[(_x>>4)+((_y>>4)*MapWidth)];
|
||||
}
|
||||
|
||||
inline u8 Get(int X,int Y)
|
||||
{
|
||||
return(getCollisionBlock(X,Y) & COLLISION_TILE_MASK);
|
||||
// return(Map[X+(Y*MapWidth)]&COLLISION_TILE_MASK);
|
||||
}
|
||||
|
||||
|
||||
#ifdef __SHOW_COLLISION__
|
||||
void render(DVECTOR &MapPos);
|
||||
|
@ -47,6 +71,7 @@ protected:
|
|||
u8 *Map;
|
||||
|
||||
static u8 s_collisionTable[];
|
||||
u16 *ColYTable;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue