This commit is contained in:
Daveo 2000-11-20 20:33:42 +00:00
parent d27fbedb88
commit b8103ac738
15 changed files with 283 additions and 114 deletions

View file

@ -24,8 +24,6 @@
/*****************************************************************************/ /*****************************************************************************/
CCore::CCore() CCore::CCore()
{ {
for (int i=0; i<LAYER_TYPE_MAX; i++) Layers[i]=0;
TileViewFlag=FALSE; TileViewFlag=FALSE;
GridFlag=TRUE; GridFlag=TRUE;
CurrentMousePos=CPoint(0,0); CurrentMousePos=CPoint(0,0);
@ -39,7 +37,8 @@ CCore::CCore()
/*****************************************************************************/ /*****************************************************************************/
CCore::~CCore() CCore::~CCore()
{ {
for (int i=0; i<LAYER_TYPE_MAX; i++) if (Layers[i]) delete Layers[i]; int ListSize=Layer.size();
for (int i=0; i<ListSize; i++) delete Layer[i];
} }
/*****************************************************************************/ /*****************************************************************************/
@ -53,29 +52,96 @@ CMultiBar *ParamBar=Frm->GetParamBar();
ParamBar->Add(Frm->GetLayerList(),IDD_LAYER_LIST_DIALOG,TRUE,TRUE); ParamBar->Add(Frm->GetLayerList(),IDD_LAYER_LIST_DIALOG,TRUE,TRUE);
ParamBar->Add(Frm->GetTileSetDlg(),IDD_TILESET_DIALOG,TRUE,TRUE); ParamBar->Add(Frm->GetTileSetDlg(),IDD_TILESET_DIALOG,TRUE,TRUE);
UpdateParamBar(); UpdateParamBar();
// Layers[ActiveLayer]->InitGUI(this); // Layer[ActiveLayer]->InitGUI(this);
// ParamBar->Update(); // ParamBar->Update();
UpdateAll(NULL);
} }
/*****************************************************************************/ /*****************************************************************************/
void CCore::NewMap() void CCore::New()
{ {
// Create Gfx Layers // Create Gfx Layers
// Name Width Height SizeDiv ViewDiv 3d? Resizable? // Name Width Height SizeDiv ViewDiv 3d? Resizable?
Layers[LAYER_TYPE_BACK]= new CLayerTile( "Back", 32, 32, 1.0f, 4.0f, FALSE, FALSE); Layer.push_back(new CLayerTile( "Back", 32, 32, 1.0f, 4.0f, FALSE, FALSE));
Layers[LAYER_TYPE_MID]= new CLayerTile( "Mid", TileLayerDefaultWidth, TileLayerDefaultHeight, 2.0f, 2.0f, FALSE, TRUE); Layer.push_back(new CLayerTile( "Mid", TileLayerDefaultWidth, TileLayerDefaultHeight, 2.0f, 2.0f, FALSE, TRUE));
Layers[LAYER_TYPE_ACTION]= new CLayerTile( "Action",TileLayerDefaultWidth, TileLayerDefaultHeight, 1.0f, 1.0f, TRUE, TRUE); Layer.push_back(new CLayerTile( "Action",TileLayerDefaultWidth, TileLayerDefaultHeight, 1.0f, 1.0f, TRUE, TRUE));
Layers[LAYER_TYPE_FORE]= new CLayerTile( "Fore", TileLayerDefaultWidth, TileLayerDefaultHeight, 0.5f, 0.5f, FALSE, TRUE); Layer.push_back(new CLayerTile( "Fore", TileLayerDefaultWidth, TileLayerDefaultHeight, 0.5f, 0.5f, FALSE, TRUE));
ActiveLayer=LAYER_TYPE_ACTION; ActiveLayer=LAYER_ACTION;
MapCam=Vec(0,0,0); MapCam=Vec(0,0,0);
TileCam=Vec(0,0,0); TileCam=Vec(0,0,0);
Init(); Init();
} }
/*****************************************************************************/ /*****************************************************************************/
void CCore::OpenMap() void CCore::Load(CFile *File)
{ {
float Version;
File->Read(&Version,sizeof(float));
File->Read(&MapCam,sizeof(Vec));
File->Read(&TileCam,sizeof(Vec));
File->Read(&TileCam,sizeof(Vec));
File->Read(&TileViewFlag,sizeof(BOOL));
File->Read(&GridFlag,sizeof(BOOL));
File->Read(&Is3dFlag,sizeof(BOOL));
// Layers
int LayerCount;
File->Read(&LayerCount,sizeof(int));
File->Read(&ActiveLayer,sizeof(int));
for (int i=0;i<LayerCount;i++)
{
int Type;
File->Read(&Type,sizeof(int));
switch (Type)
{
case LAYER_TYPE_TILE:
Layer.push_back(new CLayerTile(File,Version));
break;
}
}
TileBank.Load(File,Version);
Init();
}
/*****************************************************************************/
void CCore::Save(CFile *File)
{
File->Write(&FileVersion,sizeof(float));
File->Write(&MapCam,sizeof(Vec));
File->Write(&TileCam,sizeof(Vec));
File->Write(&TileCam,sizeof(Vec));
File->Write(&TileViewFlag,sizeof(BOOL));
File->Write(&GridFlag,sizeof(BOOL));
File->Write(&Is3dFlag,sizeof(BOOL));
// Layers
int LayerCount=Layer.size();
File->Write(&LayerCount,sizeof(int));
File->Write(&ActiveLayer,sizeof(int));
for (int i=0;i<LayerCount;i++)
{
int Type=Layer[i]->GetType();
File->Write(&Type,sizeof(int));
Layer[i]->Save(File);
}
TileBank.Save(File);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -101,18 +167,19 @@ void CCore::Render(CMapEditView *View,BOOL ForceRender)
void CCore::RenderLayers(CMapEditView *View) void CCore::RenderLayers(CMapEditView *View)
{ {
Vec &ThisCam=GetCam(); Vec &ThisCam=GetCam();
int ListSize=Layer.size();
for (int i=0;i<LAYER_TYPE_MAX;i++) for (int i=0;i<ListSize;i++)
{ {
Layers[i]->Render(this,ThisCam,Is3dFlag); Layer[i]->Render(this,ThisCam,Is3dFlag);
} }
Layers[ActiveLayer]->RenderCursor(this,ThisCam,Is3dFlag); Layer[ActiveLayer]->RenderCursor(this,ThisCam,Is3dFlag);
if (GridFlag) Layers[ActiveLayer]->RenderGrid(this,ThisCam); if (GridFlag) Layer[ActiveLayer]->RenderGrid(this,ThisCam);
// Get Cursor Pos // Get Cursor Pos
LastCursorPos=CursorPos; LastCursorPos=CursorPos;
Layers[ActiveLayer]->FindCursorPos(this,View,GetCam(),CurrentMousePos); Layer[ActiveLayer]->FindCursorPos(this,View,GetCam(),CurrentMousePos);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -134,7 +201,7 @@ void CCore::SetMode(int NewMode)
{ {
BOOL RedrawFlag=FALSE; BOOL RedrawFlag=FALSE;
RedrawFlag=Layers[ActiveLayer]->SetMode(NewMode); RedrawFlag=Layer[ActiveLayer]->SetMode(NewMode);
//if (RedrawFlag) View->Invalidate(); //if (RedrawFlag) View->Invalidate();
} }
@ -152,7 +219,7 @@ BOOL RedrawFlag=FALSE;
} }
else else
{ {
RedrawFlag=Layers[ActiveLayer]->LButtonControl(this,View,nFlags,CursorPos,DownFlag); RedrawFlag=Layer[ActiveLayer]->LButtonControl(this,View,nFlags,CursorPos,DownFlag);
} }
TileBank.SetActiveBrushL(); TileBank.SetActiveBrushL();
@ -179,7 +246,7 @@ BOOL RedrawFlag=FALSE;
} }
else else
{ {
RedrawFlag=Layers[ActiveLayer]->RButtonControl(this,View,nFlags,CursorPos,DownFlag); RedrawFlag=Layer[ActiveLayer]->RButtonControl(this,View,nFlags,CursorPos,DownFlag);
} }
TileBank.SetActiveBrushR(); TileBank.SetActiveBrushR();
@ -213,8 +280,8 @@ Vec &ThisCam=GetCam();
RECT ThisRect; RECT ThisRect;
View->GetWindowRect(&ThisRect); View->GetWindowRect(&ThisRect);
XS=ThisCam.z*4;//*Layers[ActiveLayer]->GetLayerZPos(); XS=ThisCam.z*4;//*Layer[ActiveLayer]->GetLayerZPos();
YS=ThisCam.z*4;//*Layers[ActiveLayer]->GetLayerZPos(); YS=ThisCam.z*4;//*Layer[ActiveLayer]->GetLayerZPos();
XS/=((ThisRect.right-ThisRect.left)); XS/=((ThisRect.right-ThisRect.left));
YS/=((ThisRect.bottom-ThisRect.top)); YS/=((ThisRect.bottom-ThisRect.top));
@ -235,7 +302,7 @@ Vec &ThisCam=GetCam();
} }
else else
{ {
Layers[ActiveLayer]->MouseMove(this,View,nFlags,CursorPos); Layer[ActiveLayer]->MouseMove(this,View,nFlags,CursorPos);
} }
} }
@ -259,7 +326,7 @@ CMultiBar *ParamBar=Frm->GetParamBar();
} }
else else
{ {
Layers[ActiveLayer]->InitGUI(this); Layer[ActiveLayer]->InitGUI(this);
} }
ParamBar->Update(); ParamBar->Update();
@ -267,11 +334,12 @@ CMultiBar *ParamBar=Frm->GetParamBar();
} }
/*****************************************************************************/ /*****************************************************************************/
/*
void CCore::SetActiveLayer(int i) void CCore::SetActiveLayer(int i)
{ {
// UpdateParamBar(NULL,ParamViewFlag); // UpdateParamBar(NULL,ParamViewFlag);
} }
*/
/*****************************************************************************/ /*****************************************************************************/
/*** Grid ********************************************************************/ /*** Grid ********************************************************************/
/*****************************************************************************/ /*****************************************************************************/
@ -332,7 +400,7 @@ void CCore::MirrorX(CMapEditView *View)
{ {
if (!TileViewFlag) if (!TileViewFlag)
{ {
Layers[ActiveLayer]->MirrorX(this); Layer[ActiveLayer]->MirrorX(this);
UpdateView(View); UpdateView(View);
} }
} }
@ -342,7 +410,7 @@ void CCore::MirrorY(CMapEditView *View)
{ {
if (!TileViewFlag) if (!TileViewFlag)
{ {
Layers[ActiveLayer]->MirrorY(this); Layer[ActiveLayer]->MirrorY(this);
UpdateView(View); UpdateView(View);
} }
} }
@ -380,7 +448,7 @@ void CCore::UpdateAll(CMapEditView *View)
UpdateGrid(View); UpdateGrid(View);
TileBank.UpdateGUI(this,TileViewFlag); TileBank.UpdateGUI(this,TileViewFlag);
Layers[ActiveLayer]->UpdateGUI(this); Layer[ActiveLayer]->UpdateGUI(this);
} }
@ -400,11 +468,12 @@ void CCore::SetMapSize(CMapEditView *View,int Width,int Height)
{ {
if (Width==GetMapWidth() && Height==GetMapHeight()) return; if (Width==GetMapWidth() && Height==GetMapHeight()) return;
for (int i=0; i<LAYER_TYPE_MAX; i++) int ListSize=Layer.size();
for (int i=0; i<ListSize; i++)
{ {
// Layers[i]->Resize(Width,Height); Layer[i]->Resize(Width,Height);
} }
Layers[LAYER_TYPE_ACTION]->Resize(Width,Height);
UpdateView(View); UpdateView(View);
} }

View file

@ -13,18 +13,27 @@
#include "TexCache.h" #include "TexCache.h"
#include "TileSet.h" #include "TileSet.h"
const float FileVersion=1.0f;
/*****************************************************************************/ /*****************************************************************************/
class CMapEditView; class CMapEditView;
class CCore class CCore
{ {
public: public:
enum
{
LAYER_BACK=0,
LAYER_MID,
LAYER_ACTION,
LAYER_FORE,
};
CCore(); CCore();
~CCore(); ~CCore();
void Init(); void Init();
void NewMap(); void New();
void OpenMap(); void Load(CFile *File);
void Save(CFile *File);
void Render(CMapEditView *View,BOOL ForceRender=FALSE); void Render(CMapEditView *View,BOOL ForceRender=FALSE);
void RenderLayers(CMapEditView *View); void RenderLayers(CMapEditView *View);
void RenderTileView(CMapEditView *View); void RenderTileView(CMapEditView *View);
@ -53,9 +62,9 @@ public:
void UpdateParamBar(); void UpdateParamBar();
// Layers // Layers
void SetActiveLayer(int Layer); // void SetActiveLayer(int Layer);
int GetActiveLayer() {return(ActiveLayer);} // int GetActiveLayer() {return(ActiveLayer);}
CLayer *GetLayer(int i) {return(Layers[i]);} // CLayer *GetLayer(int i) {return(Layer[i]);}
// Grid // Grid
void UpdateGrid(CMapEditView *View,BOOL Toggle=FALSE); void UpdateGrid(CMapEditView *View,BOOL Toggle=FALSE);
@ -73,15 +82,15 @@ public:
CPoint &GetCursorPos() {return(CursorPos);} CPoint &GetCursorPos() {return(CursorPos);}
void SetMapSize(CMapEditView *View,int Width,int Height); void SetMapSize(CMapEditView *View,int Width,int Height);
int GetMapWidth() {return(Layers[LAYER_TYPE_ACTION]->GetWidth());} int GetMapWidth() {return(Layer[LAYER_ACTION]->GetWidth());}
int GetMapHeight() {return(Layers[LAYER_TYPE_ACTION]->GetHeight());} int GetMapHeight() {return(Layer[LAYER_ACTION]->GetHeight());}
private: private:
CPoint CurrentMousePos,LastMousePos; CPoint CurrentMousePos,LastMousePos;
CPoint CursorPos,LastCursorPos; CPoint CursorPos,LastCursorPos;
Vec MapCam,TileCam; Vec MapCam,TileCam;
CLayer *Layers[LAYER_TYPE_MAX]; std::vector<CLayer*> Layer;
int ActiveLayer; int ActiveLayer;
CTileBank TileBank; CTileBank TileBank;

View file

@ -18,11 +18,7 @@ SELECT_BUFFER_SIZE=16,
/*****************************************************************************/ /*****************************************************************************/
enum LAYER_TYPE enum LAYER_TYPE
{ {
LAYER_TYPE_BACK=0, LAYER_TYPE_TILE=0,
LAYER_TYPE_MID,
LAYER_TYPE_ACTION,
LAYER_TYPE_FORE,
LAYER_TYPE_MAX LAYER_TYPE_MAX
}; };
@ -38,6 +34,7 @@ virtual ~CLayer(){};
virtual char *GetName(); virtual char *GetName();
virtual void SetName(char *_Name); virtual void SetName(char *_Name);
virtual int GetType()=0;
virtual float GetLayerZPosDiv() {return(ZPosDiv);} virtual float GetLayerZPosDiv() {return(ZPosDiv);}
@ -54,6 +51,9 @@ virtual int GetWidth()=0;
virtual int GetHeight()=0; virtual int GetHeight()=0;
virtual void Resize(int Width,int Height)=0; virtual void Resize(int Width,int Height)=0;
virtual void Load(CFile *File,float Version)=0;
virtual void Save(CFile *File)=0;
// Functions // Functions
virtual BOOL SetMode(int NewMode)=0; virtual BOOL SetMode(int NewMode)=0;
virtual BOOL InitMode()=0; virtual BOOL InitMode()=0;

View file

@ -39,9 +39,9 @@ CLayerTile::CLayerTile(char *_Name,int Width,int Height,float MapDiv,float ZDiv,
/*****************************************************************************/ /*****************************************************************************/
// Load Layer // Load Layer
CLayerTile::CLayerTile(char *_Name) CLayerTile::CLayerTile(CFile *File,int Version)
{ {
ASSERT(1); Load(File,Version);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -49,6 +49,34 @@ CLayerTile::~CLayerTile()
{ {
} }
/*****************************************************************************/
void CLayerTile::Load(CFile *File,float Version)
{
// Version 1
File->Read(Name,256);
File->Read(&Render3dFlag,sizeof(BOOL));
File->Read(&ZPosDiv,sizeof(float));
File->Read(&MapSizeDiv,sizeof(float));
File->Read(&ResizeFlag,sizeof(BOOL));
File->Read(&Mode,sizeof(MouseMode));
Map.Load(File,Version);
}
/*****************************************************************************/
void CLayerTile::Save(CFile *File)
{
// Always Save current version
File->Write(Name,256);
File->Write(&Render3dFlag,sizeof(BOOL));
File->Write(&ZPosDiv,sizeof(float));
File->Write(&MapSizeDiv,sizeof(float));
File->Write(&ResizeFlag,sizeof(BOOL));
File->Write(&Mode,sizeof(MouseMode));
Map.Save(File);
}
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::Resize(int Width,int Height) void CLayerTile::Resize(int Width,int Height)
{ {

View file

@ -12,8 +12,8 @@
/*****************************************************************************/ /*****************************************************************************/
enum TileLayerEnum enum TileLayerEnum
{ {
TileLayerDefaultWidth=3, TileLayerDefaultWidth=30,
TileLayerDefaultHeight=2, TileLayerDefaultHeight=20,
}; };
/*****************************************************************************/ /*****************************************************************************/
@ -36,9 +36,11 @@ public:
}; };
CLayerTile(char *_Name,int Width,int Height,float MapDiv,float ZDiv,BOOL Is3d,BOOL Resizable); // New Layer CLayerTile(char *_Name,int Width,int Height,float MapDiv,float ZDiv,BOOL Is3d,BOOL Resizable); // New Layer
CLayerTile(char *_Name); // Load Layer CLayerTile(CFile *File,int Version); // Load Layer
~CLayerTile(); ~CLayerTile();
int GetType() {return(LAYER_TYPE_TILE);}
void Render(CCore *Core,Vec &CamPos,BOOL Is3d); void Render(CCore *Core,Vec &CamPos,BOOL Is3d);
void RenderGrid(CCore *Core,Vec &CamPos); void RenderGrid(CCore *Core,Vec &CamPos);
@ -52,6 +54,8 @@ public:
int GetHeight() {return(Map.GetHeight());} int GetHeight() {return(Map.GetHeight());}
void Resize(int Width,int Height); void Resize(int Width,int Height);
void Load(CFile *File,float Version);
void Save(CFile *File);
// Functions // Functions
BOOL SetMode(int NewMode); BOOL SetMode(int NewMode);

View file

@ -12,6 +12,49 @@
#include "Map.h" #include "Map.h"
/*****************************************************************************/
void CMap::Load(CFile *File,float Version)
{
// Version 1
int Width;
int Height;
File->Read(&Width,sizeof(int));
File->Read(&Height,sizeof(int));
Delete();
SetSize(Width,Height);
for (int Y=0;Y<Height;Y++)
{
for (int X=0;X<Width;X++)
{
sMapElem ThisElem;
File->Read(&ThisElem,sizeof(sMapElem));
Set(X,Y,ThisElem);
}
}
}
/*****************************************************************************/
void CMap::Save(CFile *File)
{
int Width=GetWidth();
int Height=GetHeight();
File->Write(&Width,sizeof(int));
File->Write(&Height,sizeof(int));
for (int Y=0;Y<Height;Y++)
{
for (int X=0;X<Width;X++)
{
sMapElem &ThisElem=Get(X,Y);
File->Write(&ThisElem,sizeof(sMapElem));
}
}
}
/*****************************************************************************/ /*****************************************************************************/
void CMap::SetSize(int Width,int Height,BOOL ClearFlag) void CMap::SetSize(int Width,int Height,BOOL ClearFlag)
{ {

View file

@ -48,6 +48,10 @@ public:
BOOL DoesContainTile(sMapElem &Tile); BOOL DoesContainTile(sMapElem &Tile);
void Load(CFile *File,float Version);
void Save(CFile *File);
inline void operator=(CMap &Src) inline void operator=(CMap &Src)
{ {
int Width=Src.GetWidth(); int Width=Src.GetWidth();

View file

@ -18,19 +18,19 @@ Class6=CMapEditDoc
Class7=CMapEditView Class7=CMapEditView
ResourceCount=10 ResourceCount=10
Resource1=IDR_MAINFRAME (English (U.S.)) Resource1=IDD_LAYER_LIST_DIALOG
Resource2=IDD_TILESET_DIALOG Resource2=IDR_MAINFRAME (English (U.S.))
Resource3=IDD_LAYER_LIST_DIALOG Resource3=IDR_TOOLBAR (English (U.S.))
Resource4=IDD_DIALOGBAR (English (U.S.)) Resource4=IDD_DIALOGBAR (English (U.S.))
Resource5=IDR_MAPEDITYPE (English (U.S.)) Resource5=IDR_MAPEDITYPE (English (U.S.))
Class8=CMultiBar Class8=CMultiBar
Resource6=IDD_ABOUTBOX (English (U.S.)) Resource6=IDD_TILESET_DIALOG
Resource7=IDR_TOOLBAR (English (U.S.)) Resource7=IDD_MULTIBAR (English (U.S.))
Class9=CLayerList Class9=CLayerList
Class10=CTileSetDlg Class10=CTileSetDlg
Resource8=IDD_MULTIBAR (English (U.S.)) Resource8=IDD_GFXTOOLBAR
Class11=CGfxToolBar Class11=CGfxToolBar
Resource9=IDD_GFXTOOLBAR Resource9=IDD_ABOUTBOX (English (U.S.))
Class12=CMapSizeDlg Class12=CMapSizeDlg
Resource10=IDD_MAPSIZE Resource10=IDD_MAPSIZE

View file

@ -71,7 +71,7 @@ BOOL CMapEditApp::InitInstance()
// Change the registry key under which our settings are stored. // Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate // TODO: You should modify this string to be something appropriate
// such as the name of your company or organization. // such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications")); SetRegistryKey(_T("Climax"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU) LoadStdProfileSettings(); // Load standard INI file options (including MRU)

View file

@ -316,6 +316,14 @@ SOURCE=.\LayerList.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\MapSizeDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\MapSizeDlg.h
# End Source File
# Begin Source File
SOURCE=.\MultiBar.cpp SOURCE=.\MultiBar.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File

View file

@ -277,8 +277,8 @@ END
STRINGTABLE PRELOAD DISCARDABLE STRINGTABLE PRELOAD DISCARDABLE
BEGIN BEGIN
IDR_MAINFRAME "MapEdit" IDR_MAINFRAME "Map Editor"
IDR_MAPEDITYPE "\nMapEdi\nMapEdi\n\n\nMapEdit.Document\nMapEdi Document" IDR_MAPEDITYPE "Map Edit Doc\n\n\nMapEdit Project (*.MEP)\n.Mep\n"
END END
STRINGTABLE PRELOAD DISCARDABLE STRINGTABLE PRELOAD DISCARDABLE

View file

@ -39,7 +39,7 @@ BOOL CMapEditDoc::OnNewDocument()
{ {
if (!CDocument::OnNewDocument()) return FALSE; if (!CDocument::OnNewDocument()) return FALSE;
TRACE0("New Doc\n"); TRACE0("New Doc\n");
Core.NewMap(); Core.New();
return TRUE; return TRUE;
} }
@ -61,12 +61,11 @@ void CMapEditDoc::Serialize(CArchive& ar)
{ {
if (ar.IsStoring()) if (ar.IsStoring())
{ {
// TODO: add storing code here Core.Save(ar.GetFile());
} }
else else
{ {
// TODO: add loading code here Core.Load(ar.GetFile());
} }
} }
@ -100,6 +99,12 @@ void CMapEditDoc::Render(CMapEditView *View)
Core.Render(View); Core.Render(View);
} }
/*********************************************************************************/
void CMapEditDoc::UpdateAll(CMapEditView *View)
{
Core.UpdateAll(View);
}
/*********************************************************************************/ /*********************************************************************************/
void CMapEditDoc::OnStatusCursorXY(CCmdUI *pCmdUI) void CMapEditDoc::OnStatusCursorXY(CCmdUI *pCmdUI)
{ {

View file

@ -143,8 +143,8 @@ void CMapEditView::OnSetFocus(CWnd* pOldWnd)
CMapEditDoc *CurDoc=GetDocument(); CMapEditDoc *CurDoc=GetDocument();
CGLEnabledView::OnSetFocus(pOldWnd); CGLEnabledView::OnSetFocus(pOldWnd);
theApp.SetCurrent(CurDoc); theApp.SetCurrent(CurDoc);
// CurDoc->UpdateAll(this); CurDoc->UpdateAll(this);
CurDoc->UpdateAllViews(this); // CurDoc->UpdateAllViews(this);
} }
/*********************************************************************************/ /*********************************************************************************/

View file

@ -44,7 +44,7 @@ CTileBank::CTileBank()
SelStart=-1; SelStart=-1;
SelEnd=1; SelEnd=1;
#ifdef _DEBUG #ifdef _DEBUGx
AddTileSet("c:/temp/rockp/rockp.gin"); AddTileSet("c:/temp/rockp/rockp.gin");
int W=3; int W=3;
@ -72,6 +72,49 @@ CTileBank::~CTileBank()
{ {
} }
/*****************************************************************************/
void CTileBank::Load(CFile *File,float Version)
{
int ListSize;
File->Read(&ListSize,sizeof(int));
File->Read(&CurrentSet,sizeof(int));
File->Read(&ActiveBrush,sizeof(int));
Brush[0].Load(File,Version);
Brush[1].Load(File,Version);
for (int i=0;i<ListSize;i++)
{
char Filename[256+64];
File->Read(Filename,256+64);
AddTileSet(Filename);
}
}
/*****************************************************************************/
void CTileBank::Save(CFile *File)
{
int ListSize=TileSet.size();
File->Write(&ListSize,sizeof(int));
File->Write(&CurrentSet,sizeof(int));
File->Write(&ActiveBrush,sizeof(int));
Brush[0].Save(File);
Brush[1].Save(File);
for (int i=0;i<ListSize;i++)
{
CTileSet &ThisSet=TileSet[i];
char Filename[256+64];
sprintf(Filename,"%s%s.%s",ThisSet.GetPath(),ThisSet.GetName(),"Gin");
File->Write(Filename,256+64);
}
}
/*****************************************************************************/ /*****************************************************************************/
void CTileBank::AddTileSet(char *Filename) void CTileBank::AddTileSet(char *Filename)
{ {
@ -456,54 +499,6 @@ int TileID=0;
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
} }
/*
void CTileSet::RenderMisc(BOOL LTileFlag,BOOL RTileFlag,BOOL CursorFlag,BOOL GridFlag)
{
glDisable(GL_TEXTURE_2D);
if (LTileFlag || RTileFlag || CursorFlag)
{
glBegin(GL_QUADS);
glNormal3f( 1,1,1);
glColor3ub(255,255,0);
if (LTileFlag)
{
glColor3ub(255,0,0);
}
if (RTileFlag)
{
glColor3ub(0,0,255);
}
BuildGLQuad(TileBrowserX0,TileBrowserX1,TileBrowserY0,TileBrowserY1,0);
glEnd();
}
if (GridFlag)
{
glBegin(GL_LINES);
glNormal3f( 1,1,1);
glColor3ub(255,255,255);
glVertex3f( TileBrowserX0,TileBrowserY0,0);
glVertex3f( TileBrowserX1,TileBrowserY0,0);
glVertex3f( TileBrowserX0,TileBrowserY1,0);
glVertex3f( TileBrowserX1,TileBrowserY1,0);
glVertex3f( TileBrowserX0,TileBrowserY0,0);
glVertex3f( TileBrowserX0,TileBrowserY1,0);
glVertex3f( TileBrowserX1,TileBrowserY0,0);
glVertex3f( TileBrowserX1,TileBrowserY1,0);
glEnd();
}
glEnable(GL_TEXTURE_2D);
}
*/
/*****************************************************************************/ /*****************************************************************************/
int CTileSet::FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos) int CTileSet::FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos)
{ {

View file

@ -66,6 +66,10 @@ public:
void SetActiveBrushL() {ActiveBrush=LBrush;} void SetActiveBrushL() {ActiveBrush=LBrush;}
void SetActiveBrushR() {ActiveBrush=RBrush;} void SetActiveBrushR() {ActiveBrush=RBrush;}
void Load(CFile *File,float Version);
void Save(CFile *File);
private: private:
BOOL Select(int BrushID,BOOL DownFlag); BOOL Select(int BrushID,BOOL DownFlag);
void SetBrush(CMap &ThisBrush); void SetBrush(CMap &ThisBrush);