From f6fca816455118c6c5b7d6079bc17630b373386a Mon Sep 17 00:00:00 2001 From: Daveo Date: Thu, 3 May 2001 20:50:32 +0000 Subject: [PATCH] --- source/level/layerback.cpp | 220 ++++++------------------------------- source/level/layerback.h | 17 +-- 2 files changed, 33 insertions(+), 204 deletions(-) diff --git a/source/level/layerback.cpp b/source/level/layerback.cpp index 103b120f9..1a6d7a66f 100644 --- a/source/level/layerback.cpp +++ b/source/level/layerback.cpp @@ -14,26 +14,6 @@ #include "Game\game.h" -sBackRGBTable CLayerBack::BackRGBTable[]= -{ - {255, 0, 0,0}, - {255,255, 0,0}, - { 0,255, 0,0}, - { 0,255,255,0}, - { 0, 0,255,0}, - {255, 0,255,0}, - {255,255,255,0}, - {128, 0, 0,0}, - {128,128, 0,0}, - { 0,128, 0,0}, - { 0,128,128,0}, - { 0, 0,128,0}, - {128, 0,128,0}, - {128,128,128,0}, -}; - -#define BackRGBTableSize sizeof(BackRGBTable)/sizeof(sBackRGBTable) - /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -41,46 +21,10 @@ CLayerBack::CLayerBack(sLevelHdr *LevelHdr,sLayerHdr *Hdr) : CLayerTile(LevelHdr { Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr)); + Data->GfxList=(sLayerShadeBackGfx*)MakePtr(Hdr,(int)Data->GfxList); + Data->TypeList=(sLayerShadeBackGfxType*)MakePtr(Hdr,(int)Data->TypeList); ASSERT(Data->BandCount<=LAYER_SHADE_RGB_MAX); BandCount=Data->BandCount-1; -// Setup back gfx -/* - for (int i=0; itpage=Data->BackGfx[Type].TPage; - Gt4->clut=Data->BackGfx[Type].Clut; - setUVWH(Gt4,Data->BackGfx[Type].U,Data->BackGfx[Type].V,Data->BackGfx[Type].W,Data->BackGfx[Type].H); - SpriteList[i].W=Data->BackGfx[Type].W; - SpriteList[i].H=Data->BackGfx[Type].H; - setSemiTrans(Gt4,1); - Gt4->u1--; Gt4->u3--; - Gt4->v2--; Gt4->v3--; - -// Init all - setRGB0(Gt4,255,255,255); - setRGB1(Gt4,255,255,255); - setRGB2(Gt4,255,255,255); - setRGB3(Gt4,255,255,255); - SpriteList[i].Angle=0; - SpriteList[i].AngleInc=0; - SpriteList[i].PosInc.vx=0; - SpriteList[i].PosInc.vy=0; - SpriteList[i].Scale.vx=1024; - SpriteList[i].Scale.vy=1024; - SpriteList[i].ScaleInc.vx=0; - SpriteList[i].ScaleInc.vy=0; - - InitSprite(&SpriteList[i]); - SpriteList[i].Pos.vx=getRndRange(512<BackGfx[SpritePtr->Type].Flags & MOVE) - if (0) - { - switch(StartPos&3) - { - case 0: // Left - SpritePtr->Pos.vx=-63; - SpritePtr->Pos.vy=(Pos%(256+128))-63; - SpritePtr->PosInc.vx=XInc; - if (XInc&1) - SpritePtr->PosInc.vy=+YInc; - else - SpritePtr->PosInc.vy=-YInc; - break; - - case 1: // Right - SpritePtr->Pos.vx=512+63; - SpritePtr->Pos.vy=(Pos%(256+128))-63; - SpritePtr->PosInc.vx=-XInc; - if (XInc&1) - SpritePtr->PosInc.vy=+YInc; - else - SpritePtr->PosInc.vy=-YInc; - break; - case 2: // Top - SpritePtr->Pos.vx=(Pos%(512+128))-63; - SpritePtr->Pos.vy=-63; - if (YInc&1) - SpritePtr->PosInc.vx=+XInc; - else - SpritePtr->PosInc.vx=-XInc; - SpritePtr->PosInc.vy=YInc; - break; - case 3: // Bottom - SpritePtr->Pos.vx=(Pos%(512+128))-63; - SpritePtr->Pos.vy=256+63; - if (YInc&1) - SpritePtr->PosInc.vx=+XInc; - else - SpritePtr->PosInc.vx=-XInc; - SpritePtr->PosInc.vy=-YInc; - break; - } - SpritePtr->Pos.vx<<=MOVE_SHIFT; - SpritePtr->Pos.vy<<=MOVE_SHIFT; - } - - if (Data->BackGfx[SpritePtr->Type].Flags & SCALE) - if (0) - { - SpritePtr->Scale.vx=getRndRange(4095); - SpritePtr->Scale.vy=getRndRange(4095); - SpritePtr->ScaleInc.vx=getRndRange(31)+31; - if (SpritePtr->ScaleInc.vx&1) SpritePtr->ScaleInc.vx=-SpritePtr->ScaleInc.vx; - SpritePtr->ScaleInc.vy=getRndRange(31)+31; - if (SpritePtr->ScaleInc.vy&1) SpritePtr->ScaleInc.vy=-SpritePtr->ScaleInc.vy; - } - if (Data->BackGfx[SpritePtr->Type].Flags & SPIN) - if (0) - { - SpritePtr->AngleInc=getRndRange(31)+31; - if (SpritePtr->AngleInc&1) SpritePtr->AngleInc=-SpritePtr->AngleInc; - } - - if (Data->BackGfx[SpritePtr->Type].Flags & COLOR) - { -int i; - i=getRndRange(BackRGBTableSize-1); SpritePtr->Poly.r0=BackRGBTable[i].R; SpritePtr->Poly.g0=BackRGBTable[i].G; SpritePtr->Poly.b0=BackRGBTable[i].B; - i=getRndRange(BackRGBTableSize-1); SpritePtr->Poly.r1=BackRGBTable[i].R; SpritePtr->Poly.g1=BackRGBTable[i].G; SpritePtr->Poly.b1=BackRGBTable[i].B; - i=getRndRange(BackRGBTableSize-1); SpritePtr->Poly.r2=BackRGBTable[i].R; SpritePtr->Poly.g2=BackRGBTable[i].G; SpritePtr->Poly.b2=BackRGBTable[i].B; - i=getRndRange(BackRGBTableSize-1); SpritePtr->Poly.r3=BackRGBTable[i].R; SpritePtr->Poly.g3=BackRGBTable[i].G; SpritePtr->Poly.b3=BackRGBTable[i].B; - } -*/ - -} - -/*****************************************************************************/ -//extern DVECTOR TileMapOfs; void CLayerBack::think(DVECTOR &MapPos) { int _XOfs=MapPos.vx>>MapXYShift; int _YOfs=MapPos.vy>>MapXYShift; -// _YOfs+=TileMapOfs.vy; PosDx=(_XOfs-XOfs)<>MapXYShift; } /*****************************************************************************/ -int Tran=0; +int GfxW=64/16; +int GfxH=64/16; void CLayerBack::render() { -const int OTPos=(MAX_OT-1); -sOT *ThisOT=OtPtr+OTPos; -int i,ThisY=-YOfs; -/* +sOT *ThisOT=OtPtr+(MAX_OT-1); +int i,ThisY=-YOfs; // Render Back Sprites -#if 0 -sBackSprite *SpritePtr=SpriteList; - for (i=0; iPos.vx+=SpritePtr->PosInc.vx; - SpritePtr->Pos.vy+=SpritePtr->PosInc.vy; - SpritePtr->Pos.vx-=PosDx; - SpritePtr->Pos.vy-=PosDy; +sLayerShadeBackGfx *GfxList=Data->GfxList; - SpritePtr->Angle+=SpritePtr->AngleInc; - SpritePtr->Angle&=4095; - SpritePtr->Scale.vx+=SpritePtr->ScaleInc.vx; - SpritePtr->Scale.vx&=4095; - SpritePtr->Scale.vy+=SpritePtr->ScaleInc.vy; - SpritePtr->Scale.vy&=4095; - - int X=(SpritePtr->Pos.vx>>MOVE_SHIFT); - int Y=(SpritePtr->Pos.vy>>MOVE_SHIFT); - - - if (X<-64 || X>512+64 || Y<-64 || Y>256+64) + for (i=0; iGfxCount; i++) { - InitSprite(SpritePtr); + POLY_GT4 *Gt4=GetPrimGT4(); + int PosX=(GfxList->PosX<PosY<TypeList[GfxList->Type]; + + Gt4->x0=PosX+(GfxList->Ofs[0][0]-(GfxW/2)*16); Gt4->y0=PosY+(GfxList->Ofs[0][1]-(GfxH/2)*16); + Gt4->x1=PosX+(GfxList->Ofs[1][0]+(GfxW/2)*16); Gt4->y1=PosY+(GfxList->Ofs[1][1]-(GfxH/2)*16); + Gt4->x2=PosX+(GfxList->Ofs[2][0]-(GfxW/2)*16); Gt4->y2=PosY+(GfxList->Ofs[2][1]+(GfxH/2)*16); + Gt4->x3=PosX+(GfxList->Ofs[3][0]+(GfxW/2)*16); Gt4->y3=PosY+(GfxList->Ofs[3][1]+(GfxH/2)*16); + + setRGB0(Gt4,GfxList->RGB[0][0],GfxList->RGB[0][1],GfxList->RGB[0][2]); + setRGB1(Gt4,GfxList->RGB[1][0],GfxList->RGB[1][1],GfxList->RGB[1][2]); + setRGB2(Gt4,GfxList->RGB[2][0],GfxList->RGB[2][1],GfxList->RGB[2][2]); + setRGB3(Gt4,GfxList->RGB[3][0],GfxList->RGB[3][1],GfxList->RGB[3][2]); + + setUVWH(Gt4,ThisType.U,ThisType.V,ThisType.W,ThisType.H); + Gt4->u1--; Gt4->u3--; + Gt4->v2--; Gt4->v3--; + Gt4->clut=ThisType.Clut; + Gt4->tpage=ThisType.TPage; + AddPrim(ThisOT,Gt4); + GfxList++; } - -POLY_GT4 *Gt4=&SpriteList[i].Poly; -int ScaleX=msin(SpritePtr->Scale.vx); -int ScaleY=msin(SpritePtr->Scale.vy); - Gt4->tpage|=Tran<<5; - -sBox Box; - RotateBox(&Box,SpritePtr->W,SpritePtr->W,ScaleX,ScaleY,SpritePtr->Angle); - Gt4->x0=X+Box.x0; Gt4->y0=Y+Box.y0; - Gt4->x1=X+Box.x1; Gt4->y1=Y+Box.y1; - Gt4->x2=X+Box.x2; Gt4->y2=Y+Box.y2; - Gt4->x3=X+Box.x3; Gt4->y3=Y+Box.y3; - AddPrim(ThisOT,Gt4); - SpritePtr++; - } -#endif -*/ // Render Back Shade + for (i=0; i