/*******************/ /*** Layer Shade ***/ /*******************/ #include "stdafx.h" #include #include #include #include "GLEnabledView.h" #include "MapEdit.h" #include "MapEditDoc.h" #include "MapEditView.h" #include "MainFrm.h" #include "Core.h" #include "Layer.h" #include "LayerShade.h" #include "Utils.h" #include "Select.h" #include "Export.h" #include "GUILayerShade.h" /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ // New Layer CLayerShade::CLayerShade(sLayerDef &Def) { InitLayer(Def); } /*****************************************************************************/ CLayerShade::~CLayerShade() { } /*****************************************************************************/ void CLayerShade::InitLayer(sLayerDef &Def) { CLayer::InitLayer(Def); LayerDef.Width=TileLayerMinWidth+(Def.Width-TileLayerMinWidth)/GetScaleFactor(); LayerDef.Height=TileLayerMinHeight+(Def.Height-TileLayerMinHeight)/GetScaleFactor(); RGB[0].rgbRed=255; RGB[0].rgbGreen=255; RGB[0].rgbBlue=255; RGB[1].rgbRed=255; RGB[1].rgbGreen=0; RGB[1].rgbBlue=0; RGB[2].rgbRed=0; RGB[2].rgbGreen=255; RGB[2].rgbBlue=0; RGB[3].rgbRed=0; RGB[3].rgbGreen=0; RGB[3].rgbBlue=255; Count=2; } /*****************************************************************************/ void CLayerShade::Load(CFile *File,int Version) { if (Version<=5) { BOOL DB; float DF; LayerDef.Type=LAYER_TYPE_SHADE; File->Read(&DB,sizeof(BOOL)); File->Read(&DF,sizeof(float)); File->Read(&DB,sizeof(BOOL)); File->Read(&LayerDef.VisibleFlag,sizeof(BOOL)); File->Read(&LayerDef.SubType,sizeof(int)); File->Read(&LayerDef.Width,sizeof(int)); File->Read(&LayerDef.Height,sizeof(int)); } InitLayer(LayerDef); File->Read(&Count,sizeof(int)); for (int i=0; iRead(&Pos[i],sizeof(int)); File->Read(&RGB[i],sizeof(RGBQUAD)); } } /*****************************************************************************/ void CLayerShade::Save(CFile *File) { // Always Save current version File->Write(&Count,sizeof(int)); for (int i=0; iWrite(&Pos[i],sizeof(int)); File->Write(&RGB[i],sizeof(RGBQUAD)); } } /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ void CLayerShade::Render(CCore *Core,Vector3 &CamPos,bool Is3d) { Vector3 ThisCam=Core->OffsetCam(CamPos,GetScaleFactor()); float ZoomW=Core->GetZoomW(); float ZoomH=Core->GetZoomH(); float ScrOfsX=(ZoomW/2); float ScrOfsY=(ZoomH/2); Vector3 &Scale=Core->GetScaleVector(); int ThisCount=Count-1; float X0=0; float X1=LayerDef.Width; float Y=(0+1); float YInc=(float)LayerDef.Height/(float)ThisCount; glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glScalef(Scale.x,Scale.y,Scale.z); glTranslatef(-ThisCam.x,ThisCam.y,0); // Set scroll offset glTranslatef(-ScrOfsX,ScrOfsY,0); // Bring to top left corner glBegin (GL_QUADS); for (int i=0; iGUIAdd(GUI,IDD_LAYER_SHADE); for (int i=0; iGUIRemove(GUI,IDD_LAYER_SHADE); } /*****************************************************************************/ void CLayerShade::GUIUpdate(CCore *Core) { GUI.CheckData(); } /*****************************************************************************/ void CLayerShade::GUIChanged(CCore *Core) { for (int i=0; i