diff --git a/source/level/layercollision.cpp b/source/level/layercollision.cpp new file mode 100644 index 000000000..cec8c5c37 --- /dev/null +++ b/source/level/layercollision.cpp @@ -0,0 +1,85 @@ +/******************************/ +/*** Solid Tile Layer Class ***/ +/******************************/ + +#include "system\global.h" +#include +#include "utils\utils.h" +#include "gfx\prim.h" + + +#include "LayerTile.h" +#include "LayerTileSolid.h" + + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +CLayerTileSolid::CLayerTileSolid(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList) : CLayerTile(Hdr,TileList,TriList,QuadList,VtxList) +{ +} + +/*****************************************************************************/ +CLayerTileSolid::~CLayerTileSolid() +{ +} + + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +void CLayerTileSolid::init(DVECTOR &MapPos,int Shift,int Width,int Height) +{ + CLayerTile::init(MapPos,Shift,MapWidth,MapHeight); +} + +/*****************************************************************************/ +void CLayerTileSolid::shutdown() +{ +} + +/*****************************************************************************/ +void CLayerTileSolid::think(DVECTOR &MapPos) +{ // Overide default strip scroll update +int XPos=MapPos.vx>>MapXYShift; +int YPos=MapPos.vy>>MapXYShift; + + ShiftX=XPos&15; + ShiftY=YPos&15; + + MapX=XPos>>4; + MapY=YPos>>4; +} + +/*****************************************************************************/ +void CLayerTileSolid::render() +{ +sPrimGridElem *Grid=GetGridPos(MapX,MapY); +s16 TileX,TileY; +sOT *ThisOT=OtPtr+LayerOT; + +// Setup shift bits of pos + TileY=-ShiftY; + +// Render it!! + for (int Y=0; YDown; + TileX=-ShiftX; + + for (int X=0; XPrim; +/**/ Prim->x0=TileX; +/**/ Prim->y0=TileY; + addPrimNoCheck(ThisOT,Prim); + Grid=Grid->Right; + TileX+=TILE_WIDTH; + } + Grid=GridDown; + TileY+=TILE_HEIGHT; + } +} + + + diff --git a/source/level/layercollision.h b/source/level/layercollision.h new file mode 100644 index 000000000..da88c8892 --- /dev/null +++ b/source/level/layercollision.h @@ -0,0 +1,29 @@ +/******************************/ +/*** Solid Tile Layer Class ***/ +/******************************/ + +#ifndef __LAYER_TILE_SOLID_H__ +#define __LAYER_TILE_SOLID_H__ + + +/*****************************************************************************/ +class CLayerTileSolid : public CLayerTile +{ +public: + CLayerTileSolid(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList); + ~CLayerTileSolid(); + + void init(DVECTOR &MapPos,int Shift,int Width,int Height); + void shutdown(); + void think(DVECTOR &MapPos); + void render(); + +protected: + +}; + + + +/*****************************************************************************/ + +#endif \ No newline at end of file