diff --git a/Utils/MapEdit/LayerShade.cpp b/Utils/MapEdit/LayerShade.cpp index 802a02339..e99d22875 100644 --- a/Utils/MapEdit/LayerShade.cpp +++ b/Utils/MapEdit/LayerShade.cpp @@ -75,6 +75,7 @@ void CLayerShade::Load(CFile *File,int Version) else { File->Read(&Count,sizeof(int)); + if (Count<2) Count=2; for (int i=0; iRead(&Pos[i],sizeof(int)); @@ -204,7 +205,9 @@ void CLayerShade::Export(CCore *Core,CExport &Exp) for (int i=0; iCount; i++) - { - SetPolyG4(&Poly[i]); - setRGB0(&Poly[i],Data->Data[i].RGB[0],Data->Data[i].RGB[1],Data->Data[i].RGB[2]); - setRGB1(&Poly[i],Data->Data[i].RGB[0],Data->Data[i].RGB[1],Data->Data[i].RGB[2]); -// setRGB2(G4,0,0,128-Col); -// setRGB3(G4,0,0,128-Col); - - } + Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr)); + ASSERT(Data->Count<=LAYER_SHADE_RGB_MAX); + printf("%i Back Shades",Data->Count); + BandCount=Data->Count-1; } /*****************************************************************************/ @@ -46,6 +35,19 @@ CLayerBack::~CLayerBack() /*****************************************************************************/ void CLayerBack::init(DVECTOR &MapPos,int Shift,int Width,int Height) { + MapXYShift=Shift; + + BandHeight=(Height*16)/(BandCount); + + for (int i=0; iData[i+0].RGB[0],Data->Data[i+0].RGB[1],Data->Data[i+0].RGB[2]); + setRGB1(&Band[i],Data->Data[i+0].RGB[0],Data->Data[i+0].RGB[1],Data->Data[i+0].RGB[2]); + setRGB2(&Band[i],Data->Data[i+1].RGB[0],Data->Data[i+1].RGB[1],Data->Data[i+1].RGB[2]); + setRGB3(&Band[i],Data->Data[i+1].RGB[0],Data->Data[i+1].RGB[1],Data->Data[i+1].RGB[2]); + } + } /*****************************************************************************/ @@ -56,17 +58,21 @@ void CLayerBack::shutdown() /*****************************************************************************/ void CLayerBack::think(DVECTOR &MapPos) { - YOfs=MapPos.vy>>2; + YOfs=MapPos.vy>>MapXYShift; } /*****************************************************************************/ -int BH=256; void CLayerBack::render() { -sOT *ThisOT=OtPtr+(MAX_OT-1); -//printf("%i %i\n",MapWidth,MapHeight); - setXYWH(&Poly[0],0,-YOfs,512,BH); -// addPrim(ThisOT,&Poly[0]); +sOT *ThisOT=OtPtr+(MAX_OT-1); +int ThisY=-YOfs; + + for (int i=0; i-1) s_globalLevelSelectThing=Lvl; +#endif for (int i=0; i