diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 41223e256..d234730b3 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -10,11 +10,16 @@ #include #include "GLEnabledView.h" +#include "MapEdit.h" #include "MapEditDoc.h" #include "MapEditView.h" #include "Core.h" #include "Layer.h" +#include "LayerBack.h" +#include "LayerMid.h" +#include "LayerAction.h" +#include "LayerFore.h" /*****************************************************************************/ @@ -23,23 +28,26 @@ CCore::CCore() { MouseMode=MOUSE_MODE_NONE; - + Layers[LAYER_TYPE_BACK]= new CLayerBack; + Layers[LAYER_TYPE_MID]= new CLayerMid; + Layers[LAYER_TYPE_ACTION]= new CLayerAction; + Layers[LAYER_TYPE_FORE]= new CLayerFore; } /*****************************************************************************/ CCore::~CCore() { + for (int i=0; iSetCapture(); -// ParentWindow->SetCapture(); - -// TestLayer.Init(); -// UpdateView(); + + ActiveLayer=0; + MapPos.x=MapPos.y=MapPos.z=0; + } @@ -48,106 +56,73 @@ void CCore::Init(CMapEditView *Wnd) /*****************************************************************************/ void CCore::Render() { - TRACE0("HERE"); - Layers[ActiveLayer].Render(); - -// if (RenderMode & RENDER_MODE_GFX) TestLayer.Render(); -// if (RenderMode & RENDER_MODE_POS) TestLayer.UpdateCursor(this); -// RenderMode=0; + + for (int i=0;iRender(MapPos); + } } /*****************************************************************************/ void CCore::UpdateView(float XOfs,float YOfs,float ZOfs) { -// RenderMode|= RENDER_MODE_POS; -// RenderMode|= RENDER_MODE_GFX; -// ViewPos=ViewPos+Vec(XOfs,YOfs,ZOfs); -// if (ViewPos.z>-1) ViewPos.z=-1; + MapPos=MapPos+Vec(XOfs,YOfs,ZOfs); + if (MapPos.z>-1) MapPos.z=-1; -// ParentWindow->Redraw(); + ParentWindow->Invalidate(); } /*****************************************************************************/ /*** Control *****************************************************************/ -/*****************************************************************************/ -void CCore::SetMouseMode(MOUSE_MODE CurrentMode,MOUSE_MODE NewMode) -{ - if (MouseMode==CurrentMode) - { -// ReleaseCapture(); - MouseMode=NewMode; -// if (MouseMode!=MOUSE_MODE_NONE) ParentWindow->SetCapture(); // Set new capture - } -} - /*****************************************************************************/ void CCore::LButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag) { -// TestLayer.LButtonControl(nFlags,point,DownFlag); - SetMouseMode(MOUSE_MODE_NONE,MOUSE_MODE_LMB); - TRACE0("LMB\n"); +// if (!(nFlags & (MK_MBUTTON | MK_RBUTTON))) Layers[ActiveLayer].MouseMsg(nFlags,point); } /*****************************************************************************/ void CCore::MButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag) { - if (DownFlag) - SetMouseMode(MOUSE_MODE_NONE,MOUSE_MODE_MMB); - else - SetMouseMode(MOUSE_MODE_MMB,MOUSE_MODE_NONE); - TRACE0("MMB\n"); -/* - if (DownFlag) - { - LastMousePos=point; - ParentWindow->SetCapture(); - } - else - { - ReleaseCapture(); - } -*/ +// if (!(nFlags & (MK_LBUTTON | MK_RBUTTON))) Layers[ActiveLayer].MouseMsg(nFlags,point); } /*****************************************************************************/ void CCore::RButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag) { -// TestLayer.RButtonControl(nFlags,point,DownFlag); - SetMouseMode(MOUSE_MODE_NONE,MOUSE_MODE_RMB); - TRACE0("RMB\n"); +// if (!(nFlags & (MK_LBUTTON | MK_MBUTTON))) Layers[ActiveLayer].MouseMsg(nFlags,point); } /*****************************************************************************/ void CCore::MouseWheel(UINT nFlags, short zDelta, CPoint &pt) { - if (zDelta<0) - { - UpdateView(0,0,+1.0f); - } - if (zDelta>0) - { - UpdateView(0,0,-1.0f); - } + if (zDelta>0) + UpdateView(0,0,1.0f); + else + UpdateView(0,0,-1.0f); } /*****************************************************************************/ -void CCore::MouseMove(UINT nFlags, CPoint &point,BOOL CaptureFlag) +void CCore::MouseMove(UINT nFlags, CPoint &point) { float XOfs=0; float YOfs=0; - CurrentMousePos=point; +// check if active doc + if (theApp.GetCurrent()!=ParentWindow->GetDocument()) return; - if (CaptureFlag) +// Layers[ActiveLayer].MouseMsg(nFlags,point); +/* +// Handle Movement + CurrentMousePos=point; { float XS,YS; RECT ThisRect; ParentWindow->GetWindowRect(&ThisRect); - - XS=ViewPos.z/((ThisRect.right-ThisRect.left)); - YS=ViewPos.z/((ThisRect.bottom-ThisRect.top)); + + XS=MapPos.z/((ThisRect.right-ThisRect.left)); + YS=MapPos.z/((ThisRect.bottom-ThisRect.top)); XOfs=LastMousePos.x-CurrentMousePos.x; YOfs=LastMousePos.y-CurrentMousePos.y; @@ -155,35 +130,24 @@ float YOfs=0; XOfs*=XS; YOfs*=YS; + +// TRACE2("Move %i %i,",ThisRect.left,ThisRect.top); +// TRACE2("Move %i %i \n",ThisRect.right,ThisRect.bottom); } UpdateView(-XOfs,-YOfs,0); // if (nFlags & MK_LBUTTON) LButtonControl(nFlags,point,TRUE); // if (nFlags & MK_RBUTTON) RButtonControl(nFlags,point,TRUE); - TRACE3("Move %i %i %i \n",point.x,point.y,CaptureFlag); + + TRACE2("Move %i %i \n",point.x,point.y); +*/ + MapPos.x+=0.01f; + UpdateView(0.01f,0,0); +//Render(); } /*****************************************************************************/ /*** Layer Code **************************************************************/ -/*****************************************************************************/ -void CCore::LayerAdd(char *Name) -{ -CLayer NewLayer; - - if (!Name) - { - char DynName[32]; - sprintf(DynName,"Layer%2d",Layers.size()+1); - Name=DynName; - } - - NewLayer.SetName(Name); -// strcpy(NewLayer.Name,Name); - TRACE1("New Layer [%s]\n",Name); - Layers.push_back(NewLayer); - -} - /*****************************************************************************/ void CCore::LayerSetActive(int i) { @@ -196,50 +160,11 @@ int CCore::LayerGetActive() } /*****************************************************************************/ -int CCore::LayerGetCount() -{ - return(Layers.size()); -} - -/*****************************************************************************/ -CLayer &CCore::LayerGet(int i) +CLayer *CCore::LayerGet(int i) { return(Layers[i]); } - -/*****************************************************************************/ -void CCore::LayerDelete(int Layer) -{ - Layers.erase(Layers.begin() + Layer); - TRACE0("Delete Layer\n"); -} - -/*****************************************************************************/ -void CCore::LayerMoveUp(int Layer) -{ -CLayer Tmp; - - Tmp=Layers[Layer]; - Layers[Layer]=Layers[Layer-1]; - Layers[Layer-1]=Tmp; - - TRACE0("Layer Up \n"); -} - -/*****************************************************************************/ -void CCore::LayerMoveDown(int Layer) -{ -CLayer Tmp; - - Tmp=Layers[Layer]; - Layers[Layer]=Layers[Layer+1]; - Layers[Layer+1]=Tmp; - - TRACE0("Layer Down\n"); - -} - /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index 13d7d8d7d..a46e6c7c2 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -8,17 +8,20 @@ #include #include "gl3d.h" #include "Layer.h" +#include "LayerBack.h" /*****************************************************************************/ enum MOUSE_MODE { MOUSE_MODE_NONE=0, - MOUSE_MODE_LMB, - MOUSE_MODE_MMB, - MOUSE_MODE_RMB, + MOUSE_MODE_LMB_EDIT, + MOUSE_MODE_MMB_EDIT, + MOUSE_MODE_RMB_EDIT, + }; + /*****************************************************************************/ class CMapEditView; class CCore @@ -31,7 +34,7 @@ public: void MButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag); void RButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag); void MouseWheel(UINT nFlags, short zDelta, CPoint &pt); - void MouseMove(UINT nFlags, CPoint &point, BOOL CaptureFlag); + void MouseMove(UINT nFlags, CPoint &point); // Blah void Init(CMapEditView *Wnd); @@ -40,25 +43,18 @@ public: void SetMouseMode(MOUSE_MODE CurrentMode,MOUSE_MODE NewMode); // Layers - void LayerAdd(char *Name=0); void LayerSetActive(int Layer); int LayerGetActive(); - int LayerGetCount(); - CLayer &LayerGet(int i); - void LayerDelete(int Layer); - void LayerMoveUp(int Layer); - void LayerMoveDown(int Layer); - + CLayer *LayerGet(int i); private: CMapEditView *ParentWindow; MOUSE_MODE MouseMode; CPoint CurrentMousePos,LastMousePos; - Vec ViewPos; + Vec MapPos; - - std::vector Layers; + CLayer *Layers[LAYER_TYPE_MAX]; int ActiveLayer; diff --git a/Utils/MapEdit/Layer.cpp b/Utils/MapEdit/Layer.cpp index 77361457b..644bd6e78 100644 --- a/Utils/MapEdit/Layer.cpp +++ b/Utils/MapEdit/Layer.cpp @@ -22,46 +22,33 @@ /*****************************************************************************/ CLayer::CLayer() { - } + /*****************************************************************************/ CLayer::~CLayer() { } /*****************************************************************************/ -void CLayer::Init() +void CLayer::Render(Vec &MapPos) { + TRACE1("%s\n",GetName()); -} +float ZOfs=GetLayerZPos(); +float XYDiv=GetLayerZPosDiv(); -/*****************************************************************************/ -void CLayer::SetName(char *Str) -{ - strcpy(Name,Str); -} - -/*****************************************************************************/ -/*****************************************************************************/ -/*****************************************************************************/ -void CLayer::Render() -{ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); + glTranslatef(MapPos.x/XYDiv,MapPos.y/XYDiv,MapPos.z-ZOfs); glBegin(GL_QUADS); - glColor3f(1,0,1); - BuildGLBox(-1,LayerWidth+1,-1,0,LayerZ,LayerZ+1); // Bottom - BuildGLBox(-1,LayerWidth+1,LayerHeight+1,LayerHeight,LayerZ,LayerZ+1); // Top - BuildGLBox(-1,0,LayerHeight,0,LayerZ,LayerZ+1); // Left - BuildGLBox(LayerWidth,LayerWidth+1,LayerHeight,0,LayerZ,LayerZ+1); // Right + SetTestColor(); + BuildGLBox(-1,LayerWidth+1,-1,0,0,0+1); // Bottom + BuildGLBox(-1,LayerWidth+1,LayerHeight+1,LayerHeight,0,0+1); // Top + BuildGLBox(-1,0,LayerHeight,0,0,0+1); // Left + BuildGLBox(LayerWidth,LayerWidth+1,LayerHeight,0,0,0+1); // Right glEnd(); } - - /*****************************************************************************/ /*****************************************************************************/ -/*****************************************************************************/ - - diff --git a/Utils/MapEdit/Layer.h b/Utils/MapEdit/Layer.h index f2da45ba7..b32834cdb 100644 --- a/Utils/MapEdit/Layer.h +++ b/Utils/MapEdit/Layer.h @@ -8,6 +8,17 @@ #include #include "gl3d.h" +enum LAYER_TYPE +{ + LAYER_TYPE_BACK=0, + LAYER_TYPE_MID, + LAYER_TYPE_ACTION, + LAYER_TYPE_FORE, + + LAYER_TYPE_MAX +}; + + /*****************************************************************************/ class CLayer @@ -15,28 +26,22 @@ class CLayer public: CLayer(); ~CLayer(); -// Blah - void Init(); - void Render(); - void SetName(char *Str); - char *GetName() {return(Name);} - + +// Virtual +virtual void Init()=0; +virtual char *GetName()=0; +virtual void Render(Vec &MapPos); + +virtual float GetLayerZPosDiv()=0; +virtual float GetLayerZPos()=0; +virtual void SetTestColor()=0; + // Control -// void LButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag); -// void MButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag); -// void RButtonControl(UINT nFlags, CPoint &point,BOOL DownFlag); -// void MouseWheel(UINT nFlags, short zDelta, CPoint &pt); -// void MouseMove(UINT nFlags, CPoint &point, BOOL CaptureFlag); - - -private: - char Name[32]; - - float LayerWidth,LayerHeight,LayerDepth; - float LayerX,LayerY,LayerZ; +protected: + float LayerWidth,LayerHeight; }; /*****************************************************************************/ diff --git a/Utils/MapEdit/MapEdit.clw b/Utils/MapEdit/MapEdit.clw index 01a0b1c68..a19e20190 100644 --- a/Utils/MapEdit/MapEdit.clw +++ b/Utils/MapEdit/MapEdit.clw @@ -29,7 +29,7 @@ Type=0 BaseClass=CMDIChildWnd HeaderFile=ChildFrm.h ImplementationFile=ChildFrm.cpp -LastObject=CChildFrame +LastObject=IDC_LAYERBAR_LIST [CLS:CGLEnabledView] Type=0 @@ -171,10 +171,6 @@ Control4=IDOK,button,1342373889 [DLG:IDD_LAYERBAR (English (U.S.))] Type=1 Class=? -ControlCount=5 -Control1=IDC_LAYERBAR_NEW,button,1342242816 -Control2=IDC_LAYERBAR_DELETE,button,1342242816 -Control3=IDC_LAYERBAR_UP,button,1342242816 -Control4=IDC_LAYERBAR_DOWN,button,1342242816 -Control5=IDC_LAYERBAR_LIST,listbox,1352728833 +ControlCount=1 +Control1=IDC_LAYERBAR_LIST,listbox,1352728833 diff --git a/Utils/MapEdit/MapEdit.dsp b/Utils/MapEdit/MapEdit.dsp index a396e0674..c1de3f5bb 100644 --- a/Utils/MapEdit/MapEdit.dsp +++ b/Utils/MapEdit/MapEdit.dsp @@ -89,14 +89,9 @@ LINK32=link.exe # Begin Group "MapEditor" # PROP Default_Filter "" -# Begin Source File +# Begin Group "Layers" -SOURCE=.\Core.cpp -# End Source File -# Begin Source File - -SOURCE=.\Core.h -# End Source File +# PROP Default_Filter "" # Begin Source File SOURCE=.\Layer.cpp @@ -107,6 +102,47 @@ SOURCE=.\Layer.h # End Source File # Begin Source File +SOURCE=.\LayerAction.cpp +# End Source File +# Begin Source File + +SOURCE=.\LayerAction.h +# End Source File +# Begin Source File + +SOURCE=.\LayerBack.cpp +# End Source File +# Begin Source File + +SOURCE=.\LayerBack.h +# End Source File +# Begin Source File + +SOURCE=.\LayerFore.cpp +# End Source File +# Begin Source File + +SOURCE=.\LayerFore.h +# End Source File +# Begin Source File + +SOURCE=.\LayerMid.cpp +# End Source File +# Begin Source File + +SOURCE=.\LayerMid.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\Core.cpp +# End Source File +# Begin Source File + +SOURCE=.\Core.h +# End Source File +# Begin Source File + SOURCE=.\utils.cpp # End Source File # Begin Source File diff --git a/Utils/MapEdit/MapEdit.rc b/Utils/MapEdit/MapEdit.rc index 8f8eacb29..50045a68b 100644 --- a/Utils/MapEdit/MapEdit.rc +++ b/Utils/MapEdit/MapEdit.rc @@ -181,11 +181,7 @@ STYLE DS_MODALFRAME | WS_CHILD EXSTYLE WS_EX_TOOLWINDOW FONT 8, "MS Sans Serif" BEGIN - PUSHBUTTON "New",IDC_LAYERBAR_NEW,5,5,20,15 - PUSHBUTTON "Del",IDC_LAYERBAR_DELETE,25,5,20,15 - PUSHBUTTON "Up",IDC_LAYERBAR_UP,45,5,20,15 - PUSHBUTTON "Down",IDC_LAYERBAR_DOWN,65,5,20,15 - LISTBOX IDC_LAYERBAR_LIST,5,25,80,65,LBS_NOINTEGRALHEIGHT | + LISTBOX IDC_LAYERBAR_LIST,5,5,80,85,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP END diff --git a/Utils/MapEdit/MapEditView.cpp b/Utils/MapEdit/MapEditView.cpp index 46714f038..5ac996840 100644 --- a/Utils/MapEdit/MapEditView.cpp +++ b/Utils/MapEdit/MapEditView.cpp @@ -34,12 +34,7 @@ BEGIN_MESSAGE_MAP(CMapEditView, CGLEnabledView) ON_WM_MOUSEWHEEL() ON_WM_RBUTTONDOWN() ON_WM_RBUTTONUP() - ON_BN_CLICKED(IDC_LAYERBAR_NEW, OnLayerbarNew) - ON_BN_CLICKED(IDC_LAYERBAR_DELETE, OnLayerbarDelete) - ON_BN_CLICKED(IDC_LAYERBAR_UP, OnLayerbarUp) - ON_BN_CLICKED(IDC_LAYERBAR_DOWN, OnLayerbarDown) ON_WM_MOUSEMOVE() - ON_WM_CAPTURECHANGED() //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -129,64 +124,19 @@ void CMapEditView::UpdateAll() UpdateLayerBar(); } -/*********************************************************************************/ -/*** Layer Commands **************************************************************/ -/*********************************************************************************/ -void CMapEditView::OnLayerbarNew() -{ - Core.LayerAdd(); - UpdateLayerBar(); -} - -/*********************************************************************************/ -void CMapEditView::OnLayerbarDelete() -{ -int Sel=GetLayerCurSel(); - - if (Sel==-1) return; - Core.LayerDelete(Sel); - UpdateLayerBar(); -} - -/*********************************************************************************/ -void CMapEditView::OnLayerbarUp() -{ -int Sel=GetLayerCurSel(); - - if (Sel==-1) return; - if (Sel>0) - { - Core.LayerMoveUp(Sel); - UpdateLayerBar(); - } - -} - -/*********************************************************************************/ -void CMapEditView::OnLayerbarDown() -{ -int Sel=GetLayerCurSel(); - if (Sel==-1) return; - if (SelGetDlgItem(IDC_LAYERBAR_LIST); int CurSel=Dlg->GetCurSel(); Dlg->ResetContent(); - for (int i=0;iAddString(ThisLayer.GetName()); + CLayer *ThisLayer=Core.LayerGet(i); + Dlg->AddString(ThisLayer->GetName()); } Dlg->SetCurSel(CurSel); @@ -218,12 +168,6 @@ void CMapEditView::OnMButtonUp(UINT nFlags, CPoint point) {Core.MButtonContro BOOL CMapEditView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) {Core.MouseWheel(nFlags,zDelta,pt) ;return(0);} void CMapEditView::OnRButtonDown(UINT nFlags, CPoint point) {Core.RButtonControl(nFlags,point,TRUE);} void CMapEditView::OnRButtonUp(UINT nFlags, CPoint point) {Core.RButtonControl(nFlags,point,FALSE);} -void CMapEditView::OnMouseMove(UINT nFlags, CPoint point) {Core.MouseMove(nFlags, point,GetCapture()==this);} +void CMapEditView::OnMouseMove(UINT nFlags, CPoint point) {Core.MouseMove(nFlags, point);} -void CMapEditView::OnCaptureChanged(CWnd *pWnd) -{ - // TODO: Add your message handler code here -TRACE0("!!!!"); - CGLEnabledView::OnCaptureChanged(pWnd); -} diff --git a/Utils/MapEdit/MapEditView.h b/Utils/MapEdit/MapEditView.h index b5501aaa3..46622c60e 100644 --- a/Utils/MapEdit/MapEditView.h +++ b/Utils/MapEdit/MapEditView.h @@ -57,12 +57,7 @@ protected: afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); - afx_msg void OnLayerbarNew(); - afx_msg void OnLayerbarDelete(); - afx_msg void OnLayerbarUp(); - afx_msg void OnLayerbarDown(); afx_msg void OnMouseMove(UINT nFlags, CPoint point); - afx_msg void OnCaptureChanged(CWnd *pWnd); //}}AFX_MSG DECLARE_MESSAGE_MAP() };