diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 93beb3ecd..434f68e5e 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -18,6 +18,8 @@ #include "Core.h" #include "Layer.h" #include "LayerTile.h" +#include "utils.h" + /*****************************************************************************/ /*****************************************************************************/ @@ -182,13 +184,13 @@ int ListSize=Layer.size(); Layer[ActiveLayer]->FindCursorPos(this,View,GetCam(),CurrentMousePos); } -/*****************************************************************************/ +///////////////////////////////////////////////////////////////////////////// void CCore::RenderTileView(CMapEditView *View) { Vec &ThisCam=GetCam(); TileBank.RenderSet(this,ThisCam,Is3dFlag); -// TileBank.RenderCursor(this,ThisCam,Is3dFlag); + // Get Cursor Pos TileBank.FindCursorPos(this,View,GetCam(),CurrentMousePos); @@ -333,6 +335,29 @@ CMultiBar *ParamBar=Frm->GetParamBar(); } +/*****************************************************************************/ +void CCore::UpdateLayerGUI(CMapEditView *View) +{ +CMainFrame *Frm=(CMainFrame*)AfxGetApp()->GetMainWnd(); +CMultiBar *ParamBar=Frm->GetParamBar(); +CLayerList *List=(CLayerList*)Frm->GetDialog(IDD_LAYER_LIST_DIALOG); +int ListSize=Layer.size(); + + List->ListBox.ResetContent(); + + for (int i=0; iListBox.AddString(Layer[i]->GetName()); +// List->ListBox.SetCheck(i,Layer[i]->IsVisible()); + } +// Now sets checks (silly MSoft bug!!) + for (i=0; iListBox.SetCheck(i,Layer[i]->IsVisible()); + } + +} + /*****************************************************************************/ /* void CCore::SetActiveLayer(int i) @@ -442,9 +467,9 @@ Vec &CCore::GetCam() } /*****************************************************************************/ -void CCore::UpdateAll(CMapEditView *View) +void CCore::UpdateGUI(CMapEditView *View) { - UpdateView(View); + UpdateLayerGUI(View); UpdateGrid(View); TileBank.UpdateGUI(this,TileViewFlag); @@ -452,6 +477,13 @@ void CCore::UpdateAll(CMapEditView *View) } +/*****************************************************************************/ +void CCore::UpdateAll(CMapEditView *View) +{ + UpdateGUI(View); + UpdateView(View); +} + /*****************************************************************************/ void CCore::UpdateView(CMapEditView *View,Vec Ofs) { @@ -463,6 +495,7 @@ Vec &ThisCam=GetCam(); if (View) View->Invalidate(); } + /*****************************************************************************/ void CCore::SetMapSize(CMapEditView *View,int Width,int Height) { diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index a30a14b2a..1ad23dee6 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -62,6 +62,7 @@ public: void UpdateParamBar(); // Layers + void UpdateLayerGUI(CMapEditView *View); // void SetActiveLayer(int Layer); // int GetActiveLayer() {return(ActiveLayer);} // CLayer *GetLayer(int i) {return(Layer[i]);} @@ -74,6 +75,7 @@ public: CTexCache &GetTexCache() {return(TexCache);} // Misc + void UpdateGUI(CMapEditView *View); void UpdateAll(CMapEditView *View); void UpdateView(CMapEditView *View,Vec Ofs=Vec(0,0,0)); diff --git a/Utils/MapEdit/Layer.h b/Utils/MapEdit/Layer.h index 95857bfa4..ef7e2ba7e 100644 --- a/Utils/MapEdit/Layer.h +++ b/Utils/MapEdit/Layer.h @@ -34,6 +34,9 @@ virtual ~CLayer(){}; virtual char *GetName(); virtual void SetName(char *_Name); + +virtual void SetVisible(BOOL f) {VisibleFlag=f;} +virtual BOOL IsVisible() {return(VisibleFlag);} virtual int GetType()=0; virtual float GetLayerZPosDiv() {return(ZPosDiv);} @@ -71,6 +74,7 @@ protected: BOOL Render3dFlag; float ZPosDiv,MapSizeDiv; BOOL ResizeFlag; + BOOL VisibleFlag; }; diff --git a/Utils/MapEdit/LayerTile.cpp b/Utils/MapEdit/LayerTile.cpp index 24d8e5bb4..ae2fd98bf 100644 --- a/Utils/MapEdit/LayerTile.cpp +++ b/Utils/MapEdit/LayerTile.cpp @@ -32,6 +32,7 @@ CLayerTile::CLayerTile(char *_Name,int Width,int Height,float MapDiv,float ZDiv, MapSizeDiv=MapDiv; ResizeFlag=Resizable; Render3dFlag=Is3d; + VisibleFlag=TRUE; Mode=MouseModePaint; Map.SetSize(Width/MapDiv,Height/MapDiv,TRUE); @@ -58,6 +59,7 @@ void CLayerTile::Load(CFile *File,float Version) File->Read(&ZPosDiv,sizeof(float)); File->Read(&MapSizeDiv,sizeof(float)); File->Read(&ResizeFlag,sizeof(BOOL)); + File->Read(&VisibleFlag,sizeof(BOOL)); File->Read(&Mode,sizeof(MouseMode)); Map.Load(File,Version); } @@ -72,9 +74,9 @@ void CLayerTile::Save(CFile *File) File->Write(&ZPosDiv,sizeof(float)); File->Write(&MapSizeDiv,sizeof(float)); File->Write(&ResizeFlag,sizeof(BOOL)); + File->Write(&VisibleFlag,sizeof(BOOL)); File->Write(&Mode,sizeof(MouseMode)); Map.Save(File); - } /*****************************************************************************/ diff --git a/Utils/MapEdit/MapEdit.clw b/Utils/MapEdit/MapEdit.clw index 98bc3474e..a6027373b 100644 --- a/Utils/MapEdit/MapEdit.clw +++ b/Utils/MapEdit/MapEdit.clw @@ -2,7 +2,7 @@ [General Info] Version=1 -LastClass=CMapSizeDlg +LastClass=CLayerList LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "mapedit.h" @@ -18,19 +18,19 @@ Class6=CMapEditDoc Class7=CMapEditView ResourceCount=10 -Resource1=IDD_LAYER_LIST_DIALOG -Resource2=IDR_MAINFRAME (English (U.S.)) -Resource3=IDR_TOOLBAR (English (U.S.)) +Resource1=IDD_MULTIBAR (English (U.S.)) +Resource2=IDD_LAYER_LIST_DIALOG +Resource3=IDD_GFXTOOLBAR Resource4=IDD_DIALOGBAR (English (U.S.)) Resource5=IDR_MAPEDITYPE (English (U.S.)) Class8=CMultiBar -Resource6=IDD_TILESET_DIALOG -Resource7=IDD_MULTIBAR (English (U.S.)) +Resource6=IDR_MAINFRAME (English (U.S.)) +Resource7=IDR_TOOLBAR (English (U.S.)) Class9=CLayerList Class10=CTileSetDlg -Resource8=IDD_GFXTOOLBAR +Resource8=IDD_ABOUTBOX (English (U.S.)) Class11=CGfxToolBar -Resource9=IDD_ABOUTBOX (English (U.S.)) +Resource9=IDD_TILESET_DIALOG Class12=CMapSizeDlg Resource10=IDD_MAPSIZE @@ -209,7 +209,7 @@ ImplementationFile=LayerList.cpp BaseClass=CDialog Filter=D VirtualFilter=dWC -LastObject=CLayerList +LastObject=IDC_LAYER_LIST [DLG:IDD_TILESET_DIALOG] Type=1 diff --git a/Utils/MapEdit/MapEditView.cpp b/Utils/MapEdit/MapEditView.cpp index 2aff0249c..bd1fb4666 100644 --- a/Utils/MapEdit/MapEditView.cpp +++ b/Utils/MapEdit/MapEditView.cpp @@ -61,7 +61,7 @@ CMapEditView::~CMapEditView() ///////////////////////////////////////////////////////////////////////////// void CMapEditView::VideoMode(ColorsNumber & c, ZAccuracy & z, BOOL & dbuf) { - c=THOUSANDS; // ask for 65355 colors... + c=MILLIONS; // ask for 65355 colors... z=NORMAL; // ...16 bit Z-buffer... dbuf=TRUE; // ...double-buffering } diff --git a/Utils/MapEdit/TileSet.cpp b/Utils/MapEdit/TileSet.cpp index fbb1b4a15..c38b34f77 100644 --- a/Utils/MapEdit/TileSet.cpp +++ b/Utils/MapEdit/TileSet.cpp @@ -44,8 +44,9 @@ CTileBank::CTileBank() SelStart=-1; SelEnd=1; -#ifdef _DEBUGx - AddTileSet("c:/temp/rockp/rockp.gin"); +#ifdef _DEBUG +// AddTileSet("c:/temp/rockp/rockp.gin"); + AddTileSet("c:/temp/3/test.gin"); int W=3; int H=3; @@ -113,6 +114,7 @@ int ListSize=TileSet.size(); sprintf(Filename,"%s%s.%s",ThisSet.GetPath(),ThisSet.GetName(),"Gin"); File->Write(Filename,256+64); } + } /*****************************************************************************/ @@ -148,6 +150,7 @@ int ListSize=TileSet.size(); } LoadFlag=TRUE; + } /*****************************************************************************/ @@ -324,6 +327,7 @@ int ChildCount=ThisNode.GetPruneChildCount(); Tile.push_back(CTile(Core,this,Scene,ThisNode.PruneChildList[Child])); } + Loaded=TRUE; } diff --git a/Utils/MapEdit/utils.cpp b/Utils/MapEdit/utils.cpp index ad8542e23..0a3a9dcfd 100644 --- a/Utils/MapEdit/utils.cpp +++ b/Utils/MapEdit/utils.cpp @@ -3,8 +3,7 @@ /*************/ #include "stdafx.h" -//#include // Header File For Windows -//#include // Header File For Standard Input/Output + #include "gl3d.h" #include #include @@ -210,8 +209,8 @@ int Status=FALSE; // Typical Texture Generation Using Data From The Bitmap glBindTexture(GL_TEXTURE_2D, Text); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glBindTexture(GL_TEXTURE_2D, 0); } @@ -227,3 +226,72 @@ int Status=FALSE; return Status; // Return The Status } + +/**************************************************************************************/ +struct sTgaHdr +{ + char id; // 0 + char colmaptype; // 1 + char imagetype; // 2 + char fei[2]; // 3 + char cml[2]; // 5 + char cmes; // 7 + short xorig; // 8 + short yorig; // 10 + short width; // 12 + short height; // 14 + char depth; // 15 + char imagedesc; // 16 +}; + + + +void SaveTGA(char *Filename,int SX,int SY,int SW,int SH) +{ +FILE *File; +sTgaHdr FileHdr; + + File=fopen(Filename,"wb"); + +//--------------------------------------------------------------------------- +// Header + memset(&FileHdr,0 ,sizeof(sTgaHdr)); + + FileHdr.imagetype= 2; //imagetype + FileHdr.width = SW; + FileHdr.height= SH; + FileHdr.depth=24; +// FileHdr.imagedesc=24; + + fwrite(&FileHdr,sizeof(sTgaHdr),1,File); + + +//--------------------------------------------------------------------------- +// Data + for (int Y=0; Y