This commit is contained in:
Daveo 2001-02-16 18:23:01 +00:00
parent 4c95915814
commit 5205d550c9
17 changed files with 189 additions and 90 deletions

View File

@ -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);}

View File

@ -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 *********************************************************************/
/*****************************************************************************/

View File

@ -119,6 +119,8 @@ public:
void CopySelection();
void PasteSelection();
void ResetView();
private:
CMapEditView *CurrentView;
CPoint CurrentMousePos,LastMousePos;

View File

@ -30,7 +30,6 @@ CExport::CExport(char *Filename)
// Write Dummy File Header
fwrite(&FileHdr,sizeof(sExpFileHdr),1,File);
// for (int i=0;i<EXPORT_LAYER_COUNT; i++) fwrite(&LayerCount,sizeof(int),1,File);
}
/*****************************************************************************/
@ -52,25 +51,41 @@ int LayerCount=LayerOfs.size();
}
/*****************************************************************************/
/*** Tile Map ****************************************************************/
void CExport::Write(void *Addr,int Len)
{
fwrite(Addr,Len,1,File);
}
/*****************************************************************************/
void CExport::ExportLayerTile(CCore *Core,char *LayerName,int SubType,CMap &Map)
int CExport::ExportLayerHeader(int Type,int SubType,int Width,int Height)
{
sExpLayerHdr LayerHdr;
int ThisFilePos=ftell(File);
LayerOfs.push_back(ThisFilePos);
LayerHdr.Type=Type;
LayerHdr.SubType=SubType;
LayerHdr.Width=Width;
LayerHdr.Height=Height;
fwrite(&LayerHdr,sizeof(sExpLayerHdr),1,File);
return(ThisFilePos);
}
/*****************************************************************************/
/*** Tile Map ****************************************************************/
/*****************************************************************************/
/*
void CExport::ExportLayerTile(CCore *Core,char *LayerName,int SubType,CMap &Map)
{
int Width=Map.GetWidth();
int Height=Map.GetHeight();
int ThisFilePos=ftell(File);
CTileBank &TileBank=Core->GetTileBank();
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<Height; Y++)
{
for (int X=0; X<Width; X++)
@ -131,7 +140,7 @@ u8 OutElem;
}
}
}
*/
/*****************************************************************************/
/*** Tiles *******************************************************************/
/*****************************************************************************/

View File

@ -25,8 +25,9 @@ public:
CExport(char *Filename);
~CExport();
void ExportLayerTile(CCore *Core,char *LayerName,int SubType,CMap &Map);
void ExportLayerCollision(CCore *Core,char *LayerName,int SubType,CMap &Map);
void Write(void *Addr,int Len);
int ExportLayerHeader(int Type,int SubType,int Width,int Height);
int AddTile(sExpTile &Tile) {return(UsedTileList.Add(Tile));}
void ExportTiles(CCore *Core);
void ExportStrList(CCore *Core);
@ -38,7 +39,6 @@ protected:
sExpFileHdr FileHdr;
// int LayerCount;
CList<int> LayerOfs;
CList<sExpTri> TriList;

View File

@ -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; Y<Height; Y++)
{
for (int X=0; X<Width; X++)
{
sMapElem &MapElem=Map.Get(X,Y);
u8 OutElem=0;
if (MapElem.Tile)
{
OutElem=((MapElem.Tile-1)*4)+1;
OutElem+=MapElem.Flags & TILE_FLAG_MIRROR_XY;
}
//fwrite(&OutElem,sizeof(u8),1,File);
Exp.Write(&OutElem,sizeof(u8));
}
}
}
/*****************************************************************************/

View File

@ -169,6 +169,10 @@ void CLayerShade::GUIChanged(CCore *Core)
/*****************************************************************************/
void CLayerShade::Export(CCore *Core,CExport &Exp)
{
// Exp.ExportLayerTile(Core,GetName(),SubType,Map);
Exp.ExportLayerHeader(LAYER_TYPE_SHADE,SubType,Width,Height);
for (int i=0; i<LAYER_SHADE_RGB_MAX; i++)
{
Exp.Write(&RGB[i],sizeof(RGBQUAD));
}
}

View File

@ -15,6 +15,10 @@ class CLayerShade : public CLayer
{
public:
enum
{
LAYER_SHADE_RGB_MAX=4,
};
CLayerShade(){};
CLayerShade(int SubType,int Width,int Height); // New Layer
CLayerShade(CFile *File,int Version); // Load Layer
@ -60,7 +64,7 @@ protected:
CLayerShadeGUI ShadeDlg;
RGBQUAD RGB[2];
RGBQUAD RGB[LAYER_SHADE_RGB_MAX];
};
/*****************************************************************************/

View File

@ -662,7 +662,35 @@ BOOL CLayerTile::Paint(CMap &Blk,CPoint &CursorPos)
/*****************************************************************************/
void CLayerTile::Export(CCore *Core,CExport &Exp)
{
Exp.ExportLayerTile(Core,GetName(),SubType,Map);
int Width=Map.GetWidth();
int Height=Map.GetHeight();
CTileBank &TileBank=Core->GetTileBank();
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; Y<Height; Y++)
{
for (int X=0; X<Width; X++)
{
sMapElem &MapElem=Map.Get(X,Y);
CTile &ThisTile=Core->GetTile(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));
}
}
}
/*****************************************************************************/

View File

@ -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

View File

@ -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

View File

@ -26,6 +26,7 @@ public:
CMapEditApp();
void SetCurrent(CMapEditDoc *Cur);
void CloseDoc(CMapEditDoc *Cur);
CMapEditDoc *GetCurrent()
{
return(CurrentDoc);

View File

@ -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

View File

@ -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)
}

View File

@ -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()

View File

@ -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]);}

View File

@ -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