This commit is contained in:
Daveo 2001-02-02 19:16:49 +00:00
parent fd240a847f
commit 4321a15043
7 changed files with 43 additions and 83 deletions

View File

@ -21,7 +21,7 @@ make$Chapter\_$Level\:\t$Chapter\_$Level\_LVL\n
clean$Chapter\_$Level\:\tclean$Chapter\_$Level\_LVL
$Chapter\_$Level\_IN_DIR :=\t\$(LEVELS_IN_DIR)/$Chapter/$Level
$Chapter\_$Level\_IN :=\t\$(foreach LVL, \$(LEVELS_$Chapter\_$Level), \$($Chapter\_$Level\_IN_DIR)/$Level\$(LVL).pme)
$Chapter\_$Level\_IN :=\t\$(foreach LVL, \$(LEVELS_$Chapter\_$Level), \$($Chapter\_$Level\_IN_DIR)/$Level\$(LVL).mex)
$Chapter\_$Level\_OUT :=\t\$(foreach LVL, \$(LEVELS_$Chapter\_$Level), \$(LEVELS_OUT_DIR)/$Chapter\_$Level\$(LVL).lvl)
$Chapter\_$Level\_TEX :=\t\$(LEVELS_OUT_DIR)/$Chapter\_$Level.tex)

View File

@ -122,7 +122,8 @@ level_src := level \
layertile \
layerback \
layertilesolid \
layertile3d
layertile3d \
layercollision
locale_src := textdbase

View File

@ -1,85 +1,33 @@
/******************************/
/*** Solid Tile Layer Class ***/
/*** Collision Layer Class ***/
/******************************/
#include "system\global.h"
#include <DStructs.h>
#include "utils\utils.h"
#include "gfx\prim.h"
#include "LayerTile.h"
#include "LayerTileSolid.h"
#include "LayerCollision.h"
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
CLayerTileSolid::CLayerTileSolid(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList) : CLayerTile(Hdr,TileList,TriList,QuadList,VtxList)
CLayerCollision::CLayerCollision(sLayerHdr *Hdr)
{
LayerHdr=Hdr;
Map=(u8*)MakePtr(Hdr,sizeof(sLayerHdr));
MapWidth=LayerHdr->Width;
MapHeight=LayerHdr->Height;
printf("COLLISION LAYER = %i %i\n",MapWidth,MapHeight);
}
/*****************************************************************************/
CLayerCollision::~CLayerCollision()
{
}
/*****************************************************************************/
CLayerTileSolid::~CLayerTileSolid()
void CLayerCollision::shutdown()
{
}
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
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; Y<SCREEN_TILE_HEIGHT; Y++)
{
sPrimGridElem *GridDown= Grid->Down;
TileX=-ShiftX;
for (int X=0; X<SCREEN_TILE_WIDTH; X++)
{
TSPRT_16 *Prim=&Grid->Prim;
/**/ Prim->x0=TileX;
/**/ Prim->y0=TileY;
addPrimNoCheck(ThisOT,Prim);
Grid=Grid->Right;
TileX+=TILE_WIDTH;
}
Grid=GridDown;
TileY+=TILE_HEIGHT;
}
}

View File

@ -1,25 +1,26 @@
/******************************/
/*** Solid Tile Layer Class ***/
/*** Collision Layer Class ***/
/******************************/
#ifndef __LAYER_TILE_SOLID_H__
#define __LAYER_TILE_SOLID_H__
#ifndef __LAYER_COLLISION_H__
#define __LAYER_COLLISION_H__
#include <dstructs.h>
/*****************************************************************************/
class CLayerTileSolid : public CLayerTile
class CLayerCollision
{
public:
CLayerTileSolid(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList);
~CLayerTileSolid();
CLayerCollision(sLayerHdr *Hdr);
virtual ~CLayerCollision();
void init(DVECTOR &MapPos,int Shift,int Width,int Height);
void shutdown();
void think(DVECTOR &MapPos);
void render();
virtual void shutdown();
protected:
sLayerHdr *LayerHdr;
int MapWidth,MapHeight;
u8 *Map;
};

View File

@ -15,10 +15,10 @@
#include "level\layerback.h"
#include "level\layertilesolid.h"
#include "level\layertile3d.h"
#include "level\layercollision.h"
#include "pad\pads.h"
DVECTOR CLevel::MapPos;
/*****************************************************************************/
@ -97,6 +97,13 @@ sTile *TileList=(sTile*)MakePtr(LevelHdr,LevelHdr->TileList);
TileLayers[CLayerTile::LAYER_TILE_TYPE_FORE]=NewLayer;
}
*/
// Collision
if (LevelHdr->CollisionLayer)
{
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->CollisionLayer);
CollisionLayer=new ("Collision Layer") CLayerCollision(Layer);
}
}
/*****************************************************************************/

View File

@ -6,10 +6,11 @@
#define __LEVEL_LEVEL_H__
#include "system\global.h"
#include "level/layertile.h"
#include "level/layertile.h"
#include "level/layercollision.h"
/*****************************************************************************/
class CLayer;
class CLayer;
class CLevel
{
public:
@ -33,7 +34,9 @@ private:
// Tile Layers
CLayerTile *TileLayers[CLayerTile::LAYER_TILE_TYPE_MAX];
CLayerTile *TileLayers[CLayerTile::LAYER_TILE_TYPE_MAX];
// Collision
CLayerCollision *CollisionLayer;
};
/*****************************************************************************/

Binary file not shown.