/*******************/ /*** 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); // Load script (messy) GString ExecPath; GString ScriptName; GetExecPath(ExecPath); ScriptName=ExecPath+theApp.GetConfigStr("LayerScript","BackGfxScript"); Script.LoadAndImport(ScriptName); int i,ListSize=Script.GetGroupCount(); BackGfx.resize(ListSize); for (i=0; iRead(&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)); } if (Version>=7) { File->Read(&Back0,sizeof(int)); File->Read(&Back1,sizeof(int)); } if (Version>=8) { File->Read(&TransMode0,sizeof(int)); File->Read(&Flags0,sizeof(int)); File->Read(&TransMode1,sizeof(int)); File->Read(&Flags1,sizeof(int)); } } /*****************************************************************************/ 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)); } File->Write(&Back0,sizeof(int)); File->Write(&Back1,sizeof(int)); File->Write(&TransMode0,sizeof(int)); File->Write(&Flags0,sizeof(int)); File->Write(&TransMode1,sizeof(int)); File->Write(&Flags1,sizeof(int)); } /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ 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