diff --git a/Utils/Libs/DaveLib/List.h b/Utils/Libs/DaveLib/List.h index 1880e913e..388d88061 100644 --- a/Utils/Libs/DaveLib/List.h +++ b/Utils/Libs/DaveLib/List.h @@ -46,6 +46,7 @@ public: void clear() {List.clear();} void resize(int i) {List.resize(i);} void erase(int i) {List.erase(List.begin()+i);} + void insert(int i,T &Item) {List.insert(List.begin()+i,Item);} // int begin() {return(List.begin);} diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index b64df8b9b..14fb27e4f 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -27,6 +27,8 @@ #include "Export.h" #include "LayerList.h" +const Vector3 DefaultCamPos(0.0f,0.0f,0.9f); + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -62,8 +64,8 @@ int Width,Height; AddLayer(LAYER_TYPE_TILE,LAYER_SUBTYPE_SCRATCH, Width, Height); ActiveLayer=FindLayer(LAYER_TYPE_TILE,LAYER_SUBTYPE_ACTION); - MapCam.Zero(); - TileCam.Zero(); + MapCam=DefaultCamPos; + TileCam=DefaultCamPos; TileViewFlag=FALSE; GridFlag=TRUE; Is3dFlag=TRUE; @@ -559,6 +561,8 @@ void CCore::UpdateGrid(BOOL Toggle) void CCore::UpdateTileView(BOOL Toggle) { if (!Layer[ActiveLayer]->HasTileView()) return; + if (TileViewFlag && !TileBank.CanClose()) return; + if (Toggle) { TileViewFlag=!TileViewFlag; @@ -717,6 +721,15 @@ Vector3 &ThisCam=GetCam(); return((float)SCREEN_MAP_HEIGHT/ThisCam.z); } +/*****************************************************************************/ +void CCore::ResetView() +{ +Vector3 &ThisCam=GetCam(); + + ThisCam=DefaultCamPos; + UpdateView(); +} + /*****************************************************************************/ /*** GUI *********************************************************************/ /*****************************************************************************/ diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index a2ccd3f88..e274b3a5b 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -119,6 +119,8 @@ public: void CopySelection(); void PasteSelection(); + void ResetView(); + private: CMapEditView *CurrentView; CPoint CurrentMousePos,LastMousePos; diff --git a/Utils/MapEdit/Export.cpp b/Utils/MapEdit/Export.cpp index d4dc7c102..5fa30adf2 100644 --- a/Utils/MapEdit/Export.cpp +++ b/Utils/MapEdit/Export.cpp @@ -30,7 +30,6 @@ CExport::CExport(char *Filename) // Write Dummy File Header fwrite(&FileHdr,sizeof(sExpFileHdr),1,File); -// for (int i=0;iGetTileBank(); sExpTile BlankElem={0,0,0,0}; TRACE1("LayerTile Ofs %i\n",ThisFilePos); - LayerOfs.push_back(ThisFilePos); - - LayerHdr.Type=LAYER_TYPE_TILE; - LayerHdr.SubType=SubType; - LayerHdr.Width=Map.GetWidth(); - LayerHdr.Height=Map.GetHeight(); - fwrite(&LayerHdr,sizeof(sExpLayerHdr),1,File); + ExportLayerHeader(LAYER_TYPE_TILE,SubType,Width,Height); UsedTileList.Add(BlankElem); // Ensure blank tile is present @@ -95,27 +110,21 @@ sExpTile BlankElem={0,0,0,0}; } } } - +*/ /*****************************************************************************/ /*** Collision Layer *********************************************************/ /*****************************************************************************/ +/* void CExport::ExportLayerCollision(CCore *Core,char *LayerName,int SubType,CMap &Map) { -sExpLayerHdr LayerHdr; int Width=Map.GetWidth(); int Height=Map.GetHeight(); -int ThisFilePos=ftell(File); u8 OutElem; TRACE1("LayerCollision Ofs %i\n",ThisFilePos); - LayerOfs.push_back(ThisFilePos); - - LayerHdr.Type=LAYER_TYPE_COLLISION; - LayerHdr.SubType=SubType; - LayerHdr.Width=Map.GetWidth(); - LayerHdr.Height=Map.GetHeight(); - fwrite(&LayerHdr,sizeof(sExpLayerHdr),1,File); + ExportLayerHeader(LAYER_TYPE_COLLISION,SubType,Width,Height); + for (int Y=0; Y LayerOfs; CList TriList; diff --git a/Utils/MapEdit/LayerCollision.cpp b/Utils/MapEdit/LayerCollision.cpp index 072627f38..589aa4c7e 100644 --- a/Utils/MapEdit/LayerCollision.cpp +++ b/Utils/MapEdit/LayerCollision.cpp @@ -109,7 +109,27 @@ void CLayerCollision::GUIChanged(CCore *Core) /*****************************************************************************/ void CLayerCollision::Export(CCore *Core,CExport &Exp) { - Exp.ExportLayerCollision(Core,GetName(),SubType,Map); +int Width=Map.GetWidth(); +int Height=Map.GetHeight(); + + Exp.ExportLayerHeader(LAYER_TYPE_COLLISION,SubType,Width,Height); + + for (int Y=0; YGetTileBank(); +sExpTile BlankElem={0,0,0,0}; + + Exp.ExportLayerHeader(LAYER_TYPE_TILE,SubType,Width,Height); + + Exp.AddTile(BlankElem); // Ensure blank tile is present + + for (int Y=0; YGetTile(MapElem.Set,MapElem.Tile); + sExpLayerTile OutElem; + sExpTile OutTile; + + OutTile.Set=MapElem.Set; + OutTile.Tile=MapElem.Tile; + OutTile.TriCount=0; + OutTile.XOfs=ThisTile.GetTexXOfs(); + OutTile.YOfs=ThisTile.GetTexYOfs(); + + OutElem.Tile=Exp.AddTile(OutTile); + OutElem.Flags=MapElem.Flags; + Exp.Write(&OutElem,sizeof(sExpLayerTile)); + } + } } /*****************************************************************************/ diff --git a/Utils/MapEdit/MapEdit.clw b/Utils/MapEdit/MapEdit.clw index 4d4228743..c8d1ff476 100644 --- a/Utils/MapEdit/MapEdit.clw +++ b/Utils/MapEdit/MapEdit.clw @@ -26,17 +26,17 @@ Class14=CMultiBar Class15=CNewMapGUI ResourceCount=12 -Resource1=IDD_ABOUTBOX (English (U.S.)) -Resource2=IDD_MULTIBAR (English (U.S.)) +Resource1=IDD_MAPSIZE +Resource2=IDD_NEWMAP Resource3=IDR_MAPEDITYPE (English (U.S.)) -Resource4=IDD_LAYER_LIST_DIALOG -Resource5=IDD_MAPSIZE -Resource6=IDD_NEWMAP -Resource7=IDD_ADDLAYER -Resource8=IDD_LAYERTILE_GUI -Resource9=IDD_LAYERTILE_TOOLBAR -Resource10=IDR_TOOLBAR (English (U.S.)) -Resource11=IDR_MAINFRAME (English (U.S.)) +Resource4=IDD_ADDLAYER +Resource5=IDD_LAYERTILE_GUI +Resource6=IDD_LAYERTILE_TOOLBAR +Resource7=IDR_TOOLBAR (English (U.S.)) +Resource8=IDR_MAINFRAME (English (U.S.)) +Resource9=IDD_ABOUTBOX (English (U.S.)) +Resource10=IDD_MULTIBAR (English (U.S.)) +Resource11=IDD_LAYER_LIST_DIALOG Resource12=IDD_LAYERSHADE_GUI [CLS:CAddLayerDlg] @@ -110,7 +110,7 @@ Type=0 BaseClass=CDocument HeaderFile=MapEditDoc.h ImplementationFile=MapEditDoc.cpp -LastObject=CMapEditDoc +LastObject=ID_RESET_VIEW Filter=N VirtualFilter=DC @@ -255,53 +255,55 @@ Command9=ID_EDIT_UNDO Command10=ID_EDIT_CUT Command11=ID_EDIT_COPY Command12=ID_EDIT_PASTE -Command13=ID_VIEW_TOOLBAR -Command14=ID_VIEW_STATUS_BAR -Command15=ID_MAP_SETSIZE -Command16=ID_TOGGLE_GRID -Command17=ID_ZOOM_IN -Command18=ID_ZOOM_OUT -Command19=ID_MIRRORX -Command20=ID_MIRRORY -Command21=ID_ACTIVEBRUSH_LEFT -Command22=ID_ACTIVEBRUSH_RIGHT -Command23=ID_TOGGLE_TILEVIEW -Command24=ID_2D_3D_TOGGLE -Command25=ID_WINDOW_NEW -Command26=ID_WINDOW_CASCADE -Command27=ID_WINDOW_TILE_HORZ -Command28=ID_WINDOW_ARRANGE -Command29=ID_APP_ABOUT -CommandCount=29 +Command13=ID_RESET_VIEW +Command14=ID_VIEW_TOOLBAR +Command15=ID_VIEW_STATUS_BAR +Command16=ID_MAP_SETSIZE +Command17=ID_TOGGLE_GRID +Command18=ID_ZOOM_IN +Command19=ID_ZOOM_OUT +Command20=ID_MIRRORX +Command21=ID_MIRRORY +Command22=ID_ACTIVEBRUSH_LEFT +Command23=ID_ACTIVEBRUSH_RIGHT +Command24=ID_TOGGLE_TILEVIEW +Command25=ID_2D_3D_TOGGLE +Command26=ID_WINDOW_NEW +Command27=ID_WINDOW_CASCADE +Command28=ID_WINDOW_TILE_HORZ +Command29=ID_WINDOW_ARRANGE +Command30=ID_APP_ABOUT +CommandCount=30 [ACL:IDR_MAINFRAME (English (U.S.))] Type=1 Class=? -Command1=ID_ZOOM_IN -Command2=ID_ZOOM_OUT -Command3=ID_ACTIVEBRUSH_LEFT -Command4=ID_ACTIVEBRUSH_RIGHT -Command5=ID_2D_3D_TOGGLE -Command6=ID_EDIT_COPY -Command7=ID_TOGGLE_GRID -Command8=ID_FILE_NEW -Command9=ID_FILE_OPEN -Command10=ID_FILE_SAVE -Command11=ID_EDIT_PASTE -Command12=ID_ZOOM_IN -Command13=ID_EDIT_UNDO -Command14=ID_EDIT_CUT -Command15=ID_EDIT_COPY -Command16=ID_EDIT_PASTE -Command17=ID_TOGGLE_TILEVIEW -Command18=ID_ZOOM_OUT -Command19=ID_NEXT_PANE -Command20=ID_PREV_PANE -Command21=ID_MIRRORX -Command22=ID_EDIT_CUT -Command23=ID_MIRRORY -Command24=ID_EDIT_UNDO -CommandCount=24 +Command1=ID_RESET_VIEW +Command2=ID_ZOOM_IN +Command3=ID_ZOOM_OUT +Command4=ID_ACTIVEBRUSH_LEFT +Command5=ID_ACTIVEBRUSH_RIGHT +Command6=ID_2D_3D_TOGGLE +Command7=ID_EDIT_COPY +Command8=ID_TOGGLE_GRID +Command9=ID_FILE_NEW +Command10=ID_FILE_OPEN +Command11=ID_FILE_SAVE +Command12=ID_EDIT_PASTE +Command13=ID_ZOOM_IN +Command14=ID_EDIT_UNDO +Command15=ID_EDIT_CUT +Command16=ID_EDIT_COPY +Command17=ID_EDIT_PASTE +Command18=ID_TOGGLE_TILEVIEW +Command19=ID_ZOOM_OUT +Command20=ID_NEXT_PANE +Command21=ID_PREV_PANE +Command22=ID_MIRRORX +Command23=ID_EDIT_CUT +Command24=ID_MIRRORY +Command25=ID_EDIT_UNDO +CommandCount=25 [DLG:IDD_ABOUTBOX (English (U.S.))] Type=1 diff --git a/Utils/MapEdit/MapEdit.cpp b/Utils/MapEdit/MapEdit.cpp index 52ad1e59a..45436e4d8 100644 --- a/Utils/MapEdit/MapEdit.cpp +++ b/Utils/MapEdit/MapEdit.cpp @@ -96,7 +96,7 @@ BOOL CMapEditApp::InitInstance() CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Prevent creating new doc on startup (should still open cmd line file tho) -#ifndef _DEBUG +#ifndef _DEBUGx if (cmdInfo.m_nShellCommand==CCommandLineInfo::FileNew) cmdInfo.m_nShellCommand=CCommandLineInfo::FileNothing; #endif // Dispatch commands specified on the command line @@ -121,6 +121,14 @@ void CMapEditApp::SetCurrent(CMapEditDoc *Cur) } } +void CMapEditApp::CloseDoc(CMapEditDoc *Cur) +{ + if (CurrentDoc==Cur) + { + CurrentDoc=NULL; + } +} + ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About diff --git a/Utils/MapEdit/MapEdit.h b/Utils/MapEdit/MapEdit.h index fffb9a099..7aab0aea9 100644 --- a/Utils/MapEdit/MapEdit.h +++ b/Utils/MapEdit/MapEdit.h @@ -26,6 +26,7 @@ public: CMapEditApp(); void SetCurrent(CMapEditDoc *Cur); + void CloseDoc(CMapEditDoc *Cur); CMapEditDoc *GetCurrent() { return(CurrentDoc); diff --git a/Utils/MapEdit/MapEdit.rc b/Utils/MapEdit/MapEdit.rc index a276a97a5..88821046c 100644 --- a/Utils/MapEdit/MapEdit.rc +++ b/Utils/MapEdit/MapEdit.rc @@ -108,6 +108,8 @@ BEGIN END POPUP "&View" BEGIN + MENUITEM "Reset View", ID_RESET_VIEW + MENUITEM SEPARATOR MENUITEM "&Toolbar", ID_VIEW_TOOLBAR MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR END @@ -157,6 +159,7 @@ END IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE BEGIN + "0", ID_RESET_VIEW, VIRTKEY, NOINVERT 187, ID_ZOOM_IN, VIRTKEY, NOINVERT 189, ID_ZOOM_OUT, VIRTKEY, NOINVERT 219, ID_ACTIVEBRUSH_LEFT, VIRTKEY, NOINVERT diff --git a/Utils/MapEdit/MapEditDoc.cpp b/Utils/MapEdit/MapEditDoc.cpp index dad6eee7a..26587be8c 100644 --- a/Utils/MapEdit/MapEditDoc.cpp +++ b/Utils/MapEdit/MapEditDoc.cpp @@ -33,9 +33,10 @@ BEGIN_MESSAGE_MAP(CMapEditDoc, CDocument) ON_COMMAND(ID_MAP_SETSIZE, OnMapSetSize) ON_COMMAND(ID_EDIT_COPY, OnEditCopy) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) + ON_COMMAND(ID_2D_3D_TOGGLE, On2d3dToggle) ON_COMMAND(ID_TOOLBAR_TILEPALETTE, OnToggleTileview) ON_COMMAND(ID_TOGGLE_GRID, OnToggleGrid) - ON_COMMAND(ID_2D_3D_TOGGLE, On2d3dToggle) + ON_COMMAND(ID_RESET_VIEW, OnResetView) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -71,6 +72,7 @@ void CMapEditDoc::OnCloseDocument() { Core.GUIRemoveAll(); CDocument::OnCloseDocument(); + theApp.CloseDoc(this); } @@ -186,7 +188,7 @@ void CMapEditDoc::OnActivebrushRight() {Core.ActiveBrushRight();} void CMapEditDoc::On2d3dToggle() {Core.Toggle2d3d();} void CMapEditDoc::OnZoomIn() {Core.Zoom(-0.1f); UpdateView();} void CMapEditDoc::OnZoomOut() {Core.Zoom(+0.1f); UpdateView();} - +void CMapEditDoc::OnResetView() {Core.ResetView();} /*********************************************************************************/ /*********************************************************************************/ @@ -294,4 +296,3 @@ void CMapEditDoc::FocusView() { theApp.GetMainWnd()->SetFocus(); // Put control back to Window :o) } - diff --git a/Utils/MapEdit/MapEditDoc.h b/Utils/MapEdit/MapEditDoc.h index d7cb87a74..63c17a3c3 100644 --- a/Utils/MapEdit/MapEditDoc.h +++ b/Utils/MapEdit/MapEditDoc.h @@ -98,6 +98,7 @@ protected: afx_msg void OnEditCopy(); afx_msg void OnEditPaste(); afx_msg void On2d3dToggle(); + afx_msg void OnResetView(); //}}AFX_MSG DECLARE_MESSAGE_MAP() diff --git a/Utils/MapEdit/TileSet.h b/Utils/MapEdit/TileSet.h index 13220efd5..4787c2be0 100644 --- a/Utils/MapEdit/TileSet.h +++ b/Utils/MapEdit/TileSet.h @@ -68,6 +68,7 @@ public: void GUIUpdate(CCore *Core); BOOL IsTileValid(int Set,int Tile); + bool CanClose() {return(SelStart==-1);} void SetCollision(bool f); CTileSet &GetSet(int Set) {return(TileSet[Set]);} diff --git a/Utils/MapEdit/resource.h b/Utils/MapEdit/resource.h index 3577323bc..f60822269 100644 --- a/Utils/MapEdit/resource.h +++ b/Utils/MapEdit/resource.h @@ -58,6 +58,7 @@ #define ID_EXPORT 32795 #define ID_ZOOM_IN 32797 #define ID_ZOOM_OUT 32798 +#define ID_RESET_VIEW 32799 #define ID_INDICATOR_CURSORXY 59142 // Next default values for new objects @@ -66,7 +67,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 177 -#define _APS_NEXT_COMMAND_VALUE 32799 +#define _APS_NEXT_COMMAND_VALUE 32800 #define _APS_NEXT_CONTROL_VALUE 1070 #define _APS_NEXT_SYMED_VALUE 101 #endif