From 826713a65c40cb14ae835aa333b378a920b88958 Mon Sep 17 00:00:00 2001 From: Daveo Date: Thu, 29 Mar 2001 17:59:01 +0000 Subject: [PATCH] --- Utils/MapEdit/CmdMsg.h | 10 + Utils/MapEdit/Core.cpp | 26 +- Utils/MapEdit/Core.h | 2 + Utils/MapEdit/ExportHdr.h | 12 + Utils/MapEdit/GUILayerActor.cpp | 64 ++++- Utils/MapEdit/GUILayerActor.h | 25 +- Utils/MapEdit/GUINewMap.cpp | 4 +- Utils/MapEdit/LayerActor.cpp | 163 +++++++++--- Utils/MapEdit/LayerActor.h | 16 +- Utils/MapEdit/LayerCollision.cpp | 4 +- Utils/MapEdit/LayerItem.cpp | 178 ++++++++++--- Utils/MapEdit/LayerItem.h | 19 +- Utils/MapEdit/LayerPlatform.cpp | 173 +++++++++--- Utils/MapEdit/LayerPlatform.h | 19 +- Utils/MapEdit/LayerThing.cpp | 443 ++++++++++++++++++++++--------- Utils/MapEdit/LayerThing.h | 54 +++- Utils/MapEdit/MapEdit.clw | 121 +++++++-- Utils/MapEdit/MapEdit.cpp | 14 + Utils/MapEdit/MapEdit.dsp | 10 +- Utils/MapEdit/MapEdit.h | 4 + Utils/MapEdit/MapEdit.rc | 54 ++++ Utils/MapEdit/res/Iconz.BMP | Bin 2678 -> 2678 bytes Utils/MapEdit/resource.h | 28 +- 23 files changed, 1118 insertions(+), 325 deletions(-) diff --git a/Utils/MapEdit/CmdMsg.h b/Utils/MapEdit/CmdMsg.h index 544df2e9d..d5c8d78d9 100644 --- a/Utils/MapEdit/CmdMsg.h +++ b/Utils/MapEdit/CmdMsg.h @@ -27,12 +27,22 @@ enum CmdMsg CmdMsg_SubViewDelete, // 14 CmdMsg_SubViewUpdate, // 15 CmdMsg_SubViewSet, // 16 + // TileLayer/TileBank CmdMsg_MirrorX, // 17 CmdMsg_MirrorY, // 18 CmdMsg_SetColFlag, // 19 CmdMsg_ActiveBrushLeft, // 20 CmdMsg_ActiveBrushRight, // 21 + +// Thing + CmdMsg_ThingListDelete, // 23 + CmdMsg_ThingListSelect, // 24 + CmdMsg_ThingLevelSelect, // 25 + CmdMsg_ThingPosSelect, // 26 + CmdMsg_ThingPosUp, // 27 + CmdMsg_ThingPosDown, // 28 + CmdMsg_ThingPosDelete, // 29 }; #endif /*****************************************************************************/ diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 18d2b07c6..b7fb1dc2e 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -33,7 +33,7 @@ #include -GString IconzFileName="Iconz.bmp"; +//GString IconzFileName="Iconz.bmp"; /*****************************************************************************/ /*****************************************************************************/ @@ -53,7 +53,7 @@ GString Filename; IconBank=new CElemBank(16,16,false,false); GetExecPath(Filename); - Filename+=IconzFileName; + Filename+=theApp.GetConfigStr("FileLocation","Iconz"); IconBank->AddSet(Filename); } @@ -71,8 +71,8 @@ bool CCore::New() { CGUINewMap Dlg; int Width,Height; - Dlg.m_Width=TileLayerMinWidth; - Dlg.m_Height=TileLayerMinHeight; + Dlg.m_Width=TileLayerMinWidth+2; + Dlg.m_Height=TileLayerMinHeight+2; #ifndef _DEBUG if (Dlg.DoModal()!=IDOK) return FALSE; @@ -82,7 +82,7 @@ int Width,Height; // Create Tile Layers AddLayer(LAYER_TYPE_TILE,LAYER_SUBTYPE_ACTION, Width, Height); -// AddLayer(LAYER_TYPE_ACTOR,LAYER_SUBTYPE_NONE, Width, Height); + AddLayer(LAYER_TYPE_ACTOR,LAYER_SUBTYPE_NONE, Width, Height); for (int i=0; iRenderElem(0,T,0,false); + glTranslatef(0.5f,0,0); + IconBank->RenderElem(0,U,0,false); + glPopMatrix(); + +} + /*****************************************************************************/ /*** Control *****************************************************************/ /*****************************************************************************/ @@ -667,6 +681,7 @@ Vector3 &ThisCam=GetCam(); /*****************************************************************************/ void CCore::GetExecPath(GString &Path) { +#ifndef _DEBUG // Get application path char ExeFilename[2048]; GFName Exe; @@ -675,6 +690,7 @@ GFName Exe; Exe.File(0); Exe.Ext(0); Path=Exe.FullName(); +#endif } diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index 71684a130..0abbfe343 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -43,6 +43,7 @@ public: bool Question(char *Txt); void Render(bool ForceRender=FALSE); void RenderLayers(bool OneShot=false); + void RenderNumber(int No); void Export(char *Filename); // View Stuff @@ -116,6 +117,7 @@ public: void ResetView(); CElemBank *GetIconBank() {return(IconBank);} void GetExecPath(GString &Path); + private: CMapEditView *CurrentView; CPoint CurrentMousePos,LastMousePos; diff --git a/Utils/MapEdit/ExportHdr.h b/Utils/MapEdit/ExportHdr.h index 735e26d3e..e232df387 100644 --- a/Utils/MapEdit/ExportHdr.h +++ b/Utils/MapEdit/ExportHdr.h @@ -108,5 +108,17 @@ BOOL operator==(sExpMapElem const &v1) }; */ /*****************************************************************************/ +/*** Things ******************************************************************/ +/*****************************************************************************/ +struct sExpLayerActor +{ + int Speed; + int TurnRate; + int Health; + int AttackStrength; + bool CollisionFlag; + bool PlayerFlag; + int Spare[8]; +}; #endif diff --git a/Utils/MapEdit/GUILayerActor.cpp b/Utils/MapEdit/GUILayerActor.cpp index 30923048a..9f37c575e 100644 --- a/Utils/MapEdit/GUILayerActor.cpp +++ b/Utils/MapEdit/GUILayerActor.cpp @@ -5,6 +5,9 @@ #include "mapedit.h" #include "GUILayerActor.h" +#include "MapEditDoc.h" +#include "MainFrm.h" + #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE @@ -18,9 +21,10 @@ static char THIS_FILE[] = __FILE__; CGUILayerActor::CGUILayerActor(CWnd* pParent /*=NULL*/) : CDialog(CGUILayerActor::IDD, pParent) { + DisableCallback(true); //{{AFX_DATA_INIT(CGUILayerActor) - // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT + DisableCallback(false); } @@ -28,16 +32,70 @@ void CGUILayerActor::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGUILayerActor) - // NOTE: the ClassWizard will add DDX and DDV calls here + DDX_Control(pDX, IDC_ACTOR_COLLISION, m_Collision); + DDX_Control(pDX, IDC_ACTOR_PLAYER, m_Player); + DDX_Control(pDX, IDC_ACTOR_TURNRATE, m_TurnRate); + DDX_Control(pDX, IDC_ACTOR_SPEED, m_Speed); + DDX_Control(pDX, IDC_ACTOR_ATTACK, m_Attack); + DDX_Control(pDX, IDC_ACTOR_HEALTH, m_Health); + DDX_Control(pDX, IDC_LEVEL_ACTOR_LIST, m_LevelList); + DDX_Control(pDX, IDC_ACTOR_POS_LIST, m_PosList); + DDX_Control(pDX, IDC_ACTOR_LIST, m_List); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CGUILayerActor, CDialog) //{{AFX_MSG_MAP(CGUILayerActor) - // NOTE: the ClassWizard will add message map macros here + ON_BN_CLICKED(IDC_ACTOR_DELETE, OnActorDelete) + ON_BN_CLICKED(IDC_ACTOR_POS_UP, OnActorPosUp) + ON_BN_CLICKED(IDC_ACTOR_POS_DOWN, OnActorPosDown) + ON_BN_CLICKED(IDC_ACTOR_POS_DELETE, OnActorPosDelete) + ON_EN_CHANGE(IDC_ACTOR_HEALTH, OnChangeParam) + ON_CBN_SELCHANGE(IDC_ACTOR_LIST, OnSelchangeActorList) + ON_CBN_SELCHANGE(IDC_LEVEL_ACTOR_LIST, OnSelchangeLevelActorList) + ON_LBN_SELCHANGE(IDC_ACTOR_POS_LIST, OnSelchangeActorPosList) + ON_EN_CHANGE(IDC_ACTOR_ATTACK, OnChangeParam) + ON_BN_CLICKED(IDC_ACTOR_COLLISION, OnChangeParam) + ON_EN_CHANGE(IDC_ACTOR_SPEED, OnChangeParam) + ON_EN_CHANGE(IDC_ACTOR_TURNRATE, OnChangeParam) //}}AFX_MSG_MAP END_MESSAGE_MAP() +///////////////////////////////////////////////////////////////////////////// +void CGUILayerActor::SetVal(CEdit &Dlg,int Val) +{ +CString Str; + if (!Dlg) return; + DisableCallback(true); + Str.Format("%i",Val); + Dlg.SetWindowText(Str); + DisableCallback(false); +} + +///////////////////////////////////////////////////////////////////////////// +int CGUILayerActor::GetVal(CEdit &Dlg) +{ +CString Str; +int Val=0; + if (!Dlg) return(0); + Dlg.GetWindowText(Str); + if (Str.GetLength()) + Val=atoi(Str); + return(Val); +} + ///////////////////////////////////////////////////////////////////////////// // CGUILayerActor message handlers + +void CGUILayerActor::OnSelchangeActorList() {theApp.GetCurrent()->Command(CmdMsg_ThingListSelect,m_List.GetCurSel());} +void CGUILayerActor::OnActorDelete() {theApp.GetCurrent()->Command(CmdMsg_ThingListDelete,m_List.GetCurSel());} + +void CGUILayerActor::OnSelchangeLevelActorList() {theApp.GetCurrent()->Command(CmdMsg_ThingLevelSelect,m_LevelList.GetCurSel());} + +void CGUILayerActor::OnSelchangeActorPosList() {theApp.GetCurrent()->Command(CmdMsg_ThingPosSelect,m_PosList.GetCurSel());} +void CGUILayerActor::OnActorPosUp() {theApp.GetCurrent()->Command(CmdMsg_ThingPosUp,m_PosList.GetCurSel());} +void CGUILayerActor::OnActorPosDown() {theApp.GetCurrent()->Command(CmdMsg_ThingPosDown,m_PosList.GetCurSel());} +void CGUILayerActor::OnActorPosDelete() {theApp.GetCurrent()->Command(CmdMsg_ThingPosDelete,m_PosList.GetCurSel());} + +void CGUILayerActor::OnChangeParam() {if (!CallbackFlag) theApp.GetCurrent()->GUIChanged();} diff --git a/Utils/MapEdit/GUILayerActor.h b/Utils/MapEdit/GUILayerActor.h index 2dc2ec890..bdaecdd93 100644 --- a/Utils/MapEdit/GUILayerActor.h +++ b/Utils/MapEdit/GUILayerActor.h @@ -19,7 +19,15 @@ public: // Dialog Data //{{AFX_DATA(CGUILayerActor) enum { IDD = IDD_LAYER_ACTOR }; - // NOTE: the ClassWizard will add data members here + CButton m_Collision; + CButton m_Player; + CEdit m_TurnRate; + CEdit m_Speed; + CEdit m_Attack; + CEdit m_Health; + CComboBox m_LevelList; + CListBox m_PosList; + CComboBox m_List; //}}AFX_DATA @@ -31,11 +39,24 @@ public: //}}AFX_VIRTUAL // Implementation + +public: + void DisableCallback(bool f) {CallbackFlag=f;} + void SetVal(CEdit &Dlg,int Number); + int GetVal(CEdit &Dlg); protected: + bool CallbackFlag; // Generated message map functions //{{AFX_MSG(CGUILayerActor) - // NOTE: the ClassWizard will add member functions here + afx_msg void OnActorDelete(); + afx_msg void OnActorPosUp(); + afx_msg void OnActorPosDown(); + afx_msg void OnActorPosDelete(); + afx_msg void OnChangeParam(); + afx_msg void OnSelchangeActorList(); + afx_msg void OnSelchangeLevelActorList(); + afx_msg void OnSelchangeActorPosList(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; diff --git a/Utils/MapEdit/GUINewMap.cpp b/Utils/MapEdit/GUINewMap.cpp index bb237f52a..c14a7edfd 100644 --- a/Utils/MapEdit/GUINewMap.cpp +++ b/Utils/MapEdit/GUINewMap.cpp @@ -30,9 +30,9 @@ void CGUINewMap::DoDataExchange(CDataExchange* pDX) CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGUINewMap) DDX_Text(pDX, IDC_MAPSIZE_HEIGHT, m_Height); - DDV_MinMaxUInt(pDX, m_Height, 34, 1024); + DDV_MinMaxUInt(pDX, m_Height, 24, 1024); DDX_Text(pDX, IDC_MAPSIZE_WIDTH, m_Width); - DDV_MinMaxUInt(pDX, m_Width, 24, 1024); + DDV_MinMaxUInt(pDX, m_Width, 34, 1024); //}}AFX_DATA_MAP } diff --git a/Utils/MapEdit/LayerActor.cpp b/Utils/MapEdit/LayerActor.cpp index c99dc149c..d86bd0213 100644 --- a/Utils/MapEdit/LayerActor.cpp +++ b/Utils/MapEdit/LayerActor.cpp @@ -22,29 +22,16 @@ /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -CLayerActor::CLayerActor(sLayerDef &Def) :CLayerThing(Def) +CLayerActor::CLayerActor(sLayerDef &Def) { -// CLayerThing::CLayerThing(_SubType,_Width,_Height); - LoadThingScript("c:\\temp\\character.txt"); + InitLayer(Def); } /*****************************************************************************/ -//CLayerActor::CLayerActor(CFile *File,int Version) -//{ -// CLayerThing::CLayerThing(File,Version); -// -//} - -/*****************************************************************************/ -void CLayerActor::Load(CFile *File,int Version) +void CLayerActor::InitLayer(sLayerDef &Def) { -// CLayerThing::Load(File,Version); -} - -/*****************************************************************************/ -void CLayerActor::Save(CFile *File) -{ - CLayerThing::Save(File); + CLayerThing::InitLayer(Def); + LoadThingScript(theApp.GetConfigStr("LayerScript","ActorScript")); } /*****************************************************************************/ @@ -52,50 +39,148 @@ void CLayerActor::InitSubView(CCore *Core) { } -/*****************************************************************************/ -void CLayerActor::LoadThingScript(const char *Filename) -{ - CLayerThing::LoadThingScript(Filename); -// CLayerThing::ThingScript.LoadAndImport(Filename); - -int Count=ThingScript.GetGroupCount(); - for (int i=0; iAddSet(Gfx); - } -} - /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ void CLayerActor::GUIInit(CCore *Core) { -// Core->GUIAdd(GUIToolBar,IDD_TOOLBAR); + GUI.DisableCallback(true); + Core->GUIAdd(GUI,IDD_LAYER_ACTOR); + GUI.DisableCallback(false); } /*****************************************************************************/ void CLayerActor::GUIKill(CCore *Core) { -// Core->GUIRemove(GUIToolBar,IDD_TOOLBAR); + Core->GUIRemove(GUI,IDD_LAYER_ACTOR); } /*****************************************************************************/ void CLayerActor::GUIUpdate(CCore *Core) { +int i,ListSize; +CComboBox &List=GUI.m_List; + +// Setup Def Actor List + ListSize=DefList.size(); + List.ResetContent(); + for (i=0; iGetExecPath(Filename); - Filename+=ColFName; + Filename+=theApp.GetConfigStr("FileLocation","Collision"); TileBank->AddSet(Filename); } diff --git a/Utils/MapEdit/LayerItem.cpp b/Utils/MapEdit/LayerItem.cpp index ee199c50e..469febba6 100644 --- a/Utils/MapEdit/LayerItem.cpp +++ b/Utils/MapEdit/LayerItem.cpp @@ -1,6 +1,6 @@ -/******************/ +/**********************/ /*** Layer Item ***/ -/******************/ +/**********************/ #include "stdafx.h" #include @@ -22,28 +22,16 @@ /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -// New Layer -CLayerItem::CLayerItem(sLayerDef &Def) : CLayerThing (Def) +CLayerItem::CLayerItem(sLayerDef &Def) { - LoadThingScript("c:\\temp\\character.txt"); + InitLayer(Def); } /*****************************************************************************/ -//CLayerItem::CLayerItem(CFile *File,int Version) :CLayerThing (File,Version) -//{ -// -//} - -/*****************************************************************************/ -void CLayerItem::Load(CFile *File,int Version) +void CLayerItem::InitLayer(sLayerDef &Def) { - CLayerThing::Load(File,Version); -} - -/*****************************************************************************/ -void CLayerItem::Save(CFile *File) -{ - CLayerThing::Save(File); + CLayerThing::InitLayer(Def); + LoadThingScript(theApp.GetConfigStr("LayerScript","ItemScript")); } /*****************************************************************************/ @@ -51,51 +39,159 @@ void CLayerItem::InitSubView(CCore *Core) { } -/*****************************************************************************/ -void CLayerItem::LoadThingScript(const char *Filename) -{ - CLayerThing::LoadThingScript(Filename); -// CLayerThing::ThingScript.LoadAndImport(Filename); - -int Count=ThingScript.GetGroupCount(); - for (int i=0; iAddSet(Gfx); - } -} - /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ void CLayerItem::GUIInit(CCore *Core) { -// Core->GUIAdd(GUIToolBar,IDD_TOOLBAR); +// GUI.DisableCallback(true); +// Core->GUIAdd(GUI,IDD_LAYER_Item); +// GUI.DisableCallback(false); } /*****************************************************************************/ void CLayerItem::GUIKill(CCore *Core) { -// Core->GUIRemove(GUIToolBar,IDD_TOOLBAR); +// Core->GUIRemove(GUI,IDD_LAYER_Item); } /*****************************************************************************/ void CLayerItem::GUIUpdate(CCore *Core) { +/* +int i,ListSize; +CComboBox &List=GUI.m_List; + +// Setup Def Item List + ListSize=DefList.size(); + List.ResetContent(); + for (i=0; iAddSet(Gfx); - } -} - /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ void CLayerPlatform::GUIInit(CCore *Core) { -// Core->GUIAdd(GUIToolBar,IDD_TOOLBAR); +// GUI.DisableCallback(true); +// Core->GUIAdd(GUI,IDD_LAYER_Platform); +// GUI.DisableCallback(false); } /*****************************************************************************/ void CLayerPlatform::GUIKill(CCore *Core) { -// Core->GUIRemove(GUIToolBar,IDD_TOOLBAR); +// Core->GUIRemove(GUI,IDD_LAYER_Platform); } /*****************************************************************************/ void CLayerPlatform::GUIUpdate(CCore *Core) { +/* +int i,ListSize; +CComboBox &List=GUI.m_List; + +// Setup Def Platform List + ListSize=DefList.size(); + List.ResetContent(); + for (i=0; iRead(&Mode,sizeof(MouseMode)); + File->Read(&CurrentDefThing,sizeof(int)); + File->Read(&CurrentThing,sizeof(int)); + File->Read(&CurrentThingPoint,sizeof(int)); + + File->Read(&ListSize,sizeof(int)); + ThingList.resize(ListSize); + +// Load Data + for (i=0;iRead(&ThisThing.Data,sizeof(sLayerThingData)); + } + LoadThingNames(File,Version); +} + +/*****************************************************************************/ +void CLayerThing::LoadThing(CFile *File,int Version,sLayerThing &ThisThing) +{ +int i,ListSize; + File->Read(&ListSize,sizeof(int)); + ThisThing.XY.resize(ListSize); + for (i=0 ;iRead(&ThisThing.XY[i],sizeof(CPoint)); + } +} + +/*****************************************************************************/ +void CLayerThing::LoadThingNames(CFile *File,int Version) +{ +int i,ListSize=ThingList.size(); + + for (i=0;iRead(&c,1); + ThisName.Append(c); + } + // Update Gfx ID + int Idx=FindDefThing(ThisName); + ThisThing.ElemID=DefList[Idx].ElemID; + } } /*****************************************************************************/ void CLayerThing::Save(CFile *File) { +int i,ListSize=ThingList.size(); // Always Save current version File->Write(&Mode,sizeof(MouseMode)); + File->Write(&CurrentDefThing,sizeof(int)); + File->Write(&CurrentThing,sizeof(int)); + File->Write(&CurrentThingPoint,sizeof(int)); + + File->Write(&ListSize,sizeof(int)); + for (i=0;iWrite(&ThisThing.Data,sizeof(sLayerThingData)); + } + SaveThingNames(File); +} + +/*****************************************************************************/ +void CLayerThing::SaveThing(CFile *File,sLayerThing &ThisThing) +{ +int i,ListSize=ThisThing.XY.size(); + File->Write(&ListSize,sizeof(int)); + for (i=0 ;iWrite(&ThisThing.XY[i],sizeof(CPoint)); + } +} + +/*****************************************************************************/ +void CLayerThing::SaveThingNames(CFile *File) +{ +int i,ListSize=ThingList.size(); + + for (i=0; iWrite(Txt,strlen(Txt)+1); + } } /*****************************************************************************/ @@ -77,6 +159,40 @@ void CLayerThing::InitSubView(CCore *Core) void CLayerThing::LoadThingScript(const char *Filename) { ThingScript.LoadAndImport(Filename); + +int i,ListSize=ThingScript.GetGroupCount(); + DefList.resize(ListSize); + + for (i=0; iGetSetCount(); + if (Gfx) + { + ThingBank->AddSet(Gfx); + } + else + { + TRACE1("BAD %s\n",Name); + } + + } + } /*****************************************************************************/ @@ -86,8 +202,7 @@ void CLayerThing::Render(CCore *Core,Vector3 &CamPos,bool Is3d) { Vector3 ThisCam=Core->OffsetCam(CamPos,GetScaleFactor()); int i,ListSize=ThingList.size(); - -// Is3d&=Render3dFlag; + for (i=0; iGetZoomH(); float ScrOfsX=(ZoomW/2); float ScrOfsY=(ZoomH/2); Vector3 &Scale=Core->GetScaleVector(); -CElemBank *IconBank=Core->GetIconBank(); if (ThingBank->NeedLoad()) ThingBank->LoadAllSets(Core); @@ -126,11 +240,11 @@ int ListSize=ThisThing.XY.size(); else glColor4f(1,1,1,0.5); - IconBank->RenderElem(0,i,0,Render3d); + Core->RenderNumber(i); if (i==0) { glColor4f(1,1,1,1); // Set default Color - ThingBank->RenderElem(ThisThing.Type,0,0,Render3d); + ThingBank->RenderElem(ThisThing.ElemID,0,0,Render3d); } glPopMatrix(); } @@ -144,6 +258,7 @@ int ListSize=ThisThing.XY.size(); void CLayerThing::GUIInit(CCore *Core) { // Core->GUIAdd(GUIToolBar,IDD_TOOLBAR); + } /*****************************************************************************/ @@ -169,19 +284,21 @@ bool CLayerThing::LButtonControl(CCore *Core,UINT nFlags, CPoint &CursorPos,bool { bool Ret=false; + if (!DownFlag) return(false); switch(Mode) { case MouseModeNormal: - if (DownFlag) - { - if (CurrentThing==-1) - AddThing(CursorPos); - else - AddThingPoint(CursorPos); - - } + SelectThing(CursorPos); + GUIThingUpdate(); + break; + case MouseModeNew: + AddThing(CursorPos); + GUIThingDefClear(); + GUIThingUpdate(); break; case MouseModePoints: + AddThingPoint(CursorPos); + GUIThingPointUpdate(); break; default: break; @@ -193,21 +310,9 @@ bool Ret=false; /*****************************************************************************/ bool CLayerThing::RButtonControl(CCore *Core,UINT nFlags, CPoint &CursorPos,bool DownFlag) { -bool Ret=FALSE; - - switch(Mode) - { - case MouseModeNormal: - if (DownFlag) - { - SelectThing(CursorPos); - } - break; - case MouseModePoints: - break; - } - - return(Ret); + if (!DownFlag) return(false); + Cancel(); + return(true); } /*****************************************************************************/ @@ -219,13 +324,14 @@ bool Ret=false; { if (nFlags & MK_LBUTTON) // Drag { - UpdatePos(CursorPos,CurrentThing,CurrentPoint,true); + UpdatePos(CursorPos,CurrentThing,CurrentThingPoint,(nFlags & MK_CONTROL)!=0); + GUIThingPointUpdate(); Ret=true; } else if (nFlags & MK_RBUTTON) // Cancel { - CurrentThing=-1; + Cancel(); Ret=true; } } @@ -233,51 +339,98 @@ bool Ret=false; } /*****************************************************************************/ -bool CLayerThing::Command(int CmdMsg,CCore *Core,int Param0,int Param1) +void CLayerThing::Cancel() { -bool Ret=false; -/* - switch(CmdMsg) + switch(Mode) { - case CmdMsg_SetMode: -// Mode=(MouseMode)Param0; -// Core->GUIUpdate(); -// break; -// case CmdMsg_SubViewSet: -// Ret=ThingBank->Command(CmdMsg,Core,Param0,Param1); + case MouseModeNormal: + CurrentThing=-1; + case MouseModeNew: + case MouseModePoints: + Mode=MouseModeNormal; + CurrentThingPoint=0; + GUIThingDefClear(); + GUIThingUpdate(); break; default: break; } -*/ +} + +/*****************************************************************************/ +bool CLayerThing::Command(int CmdMsg,CCore *Core,int Param0,int Param1) +{ +bool Ret=false; + + switch(CmdMsg) + { + case CmdMsg_ThingListDelete: + DeleteThing(); + GUIThingUpdate(); + break; + case CmdMsg_ThingListSelect: + CurrentDefThing=Param0; + SetCursor(DefList[CurrentDefThing].Name); + Mode=MouseModeNew; + break; + case CmdMsg_ThingLevelSelect: + SelectThing(Param0); + GUIThingUpdate(); + break; + case CmdMsg_ThingPosSelect: + CurrentThingPoint=Param0; + GUIThingPointUpdate(); + break; + case CmdMsg_ThingPosUp: + MovePoint(-1); + break; + case CmdMsg_ThingPosDown: + MovePoint(+1); + break; + case CmdMsg_ThingPosDelete: + DeletePoint(); + break; + default: + break; + } + return(Ret); } +/*****************************************************************************/ +int CLayerThing::FindDefThing(const char *Name) +{ +int i,ListSize=DefList.size(); + + for (i=0; iOffsetCam(CamPos,GetScaleFactor()); CPoint &CursPos=Core->GetCursorPos(); -Vector3 Ofs; + + Cursor.XY[0]=CursPos; if (CursPos.x<0 || CursPos.y<0) return; + if (Mode!=MouseModeNew) return; + if (Cursor.ElemID==-1) return; - Ofs.x=-(CursPos.x-(int)ThisCam.x); - Ofs.y=-(CursPos.y-(int)ThisCam.y); - ThisCam.x-=(int)ThisCam.x; - ThisCam.y-=(int)ThisCam.y; - - Is3d&=GetRender3dFlag(); - if (Is3d) - { - glEnable(GL_DEPTH_TEST); -// Render(Core,ThisCam,,TRUE,0.5,&Ofs); - glDisable(GL_DEPTH_TEST); - } - else - { -// Render(Core,ThisCam,Brush,FALSE,0.5,&Ofs); - } + RenderThing(Core,ThisCam,Cursor,Is3d,true); } /*****************************************************************************/ @@ -313,26 +466,52 @@ int StartIdx=0; void CLayerThing::AddThing(CPoint &Pos) { if (Pos.x==-1 || Pos.y==-1) return; // Off Map? - CurrentThing=CheckThing(Pos); - CurrentPoint=0; + CurrentThing=SelectThing(Pos); if (CurrentThing!=-1) return; CurrentThing=ThingList.size(); ThingList.resize(CurrentThing+1); sLayerThing &ThisThing=ThingList[CurrentThing]; - - ThisThing.XY.push_back(Pos); - ThisThing.Type=ThingList.size()%22; - ThisThing.SubType=0; + ThisThing=Cursor; + SelectThing(CurrentThing); } /*****************************************************************************/ -void CLayerThing::SelectThing(CPoint &Pos) +int CLayerThing::SelectThing(CPoint &Pos) { - if (Pos.x==-1 || Pos.y==-1) return; // Off Map? - CurrentThing=CheckThing(Pos); - CurrentPoint=0; + if (Pos.x==-1 || Pos.y==-1) return(-1); // Off Map? + SelectThing(CheckThing(Pos)); + return(CurrentThing); +} + +/*****************************************************************************/ +int CLayerThing::SelectThing(int Idx) +{ + CurrentThing=Idx; + CurrentThingPoint=0; + if (CurrentThing!=-1) + { + sLayerThing &ThisThing=ThingList[CurrentThing]; + if (ThisThing.Data.WaypointFlag) + { + Mode=MouseModePoints; + } + else + { + Mode=MouseModeNormal; + } + } + return(CurrentThing); +} + +/*****************************************************************************/ +void CLayerThing::DeleteThing() +{ + if (!ThingList.size()) return; + + ThingList.erase(CurrentThing); + CurrentThing--; } @@ -369,21 +548,22 @@ int StartIdx=0; void CLayerThing::AddThingPoint(CPoint &Pos) { if (Pos.x==-1 || Pos.y==-1) return; // Off Map? - CurrentPoint=CheckThingPoint(Pos); - - if (CurrentPoint!=-1) return; + CurrentThingPoint=SelectThingPoint(Pos); + + if (CurrentThingPoint!=-1) return; sLayerThing &ThisThing=ThingList[CurrentThing]; - CurrentPoint=ThisThing.XY.size(); - ThisThing.XY.resize(CurrentPoint+1); - ThisThing.XY[CurrentPoint]=Pos; + CurrentThingPoint=ThisThing.XY.size(); + ThisThing.XY.resize(CurrentThingPoint+1); + ThisThing.XY[CurrentThingPoint]=Pos; } /*****************************************************************************/ -void CLayerThing::SelectThingPoint(CPoint &Pos) +int CLayerThing::SelectThingPoint(CPoint &Pos) { - if (Pos.x==-1 || Pos.y==-1) return; // Off Map? - CurrentPoint=CheckThing(Pos); + if (Pos.x==-1 || Pos.y==-1) return(-1); // Off Map? + CurrentThingPoint=CheckThingPoint(Pos); + return(CurrentThingPoint); } /*****************************************************************************/ @@ -398,7 +578,7 @@ int StartIdx=PosIdx,EndIdx=ThisThing.XY.size(); if (!Recurs) { StartIdx=PosIdx; - EndIdx=StartIdx++; + EndIdx=StartIdx+1; } for (int i=StartIdx; i=ThisThing.XY.size()) return; + +CPoint Tmp=ThisThing.XY[CurrentThingPoint]; + ThisThing.XY[CurrentThingPoint]=ThisThing.XY[NewPos]; + ThisThing.XY[NewPos]=Tmp; + CurrentThingPoint=NewPos; + GUIThingPointUpdate(); +} + +/*****************************************************************************/ +void CLayerThing::DeletePoint() +{ + if (!CurrentThingPoint) return; + if (CurrentThing==-1) return; + +sLayerThing &ThisThing=ThingList[CurrentThing]; + + ThisThing.XY.erase(CurrentThingPoint); + CurrentThingPoint--; + if (CurrentThingPoint<0) CurrentThingPoint=0; + GUIThingPointUpdate(); +} + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ void CLayerThing::Export(CCore *Core,CExport &Exp) { -/* -int Width=Map.GetWidth(); -int Height=Map.GetHeight(); +int i,ListSize=ThingList.size(); + Exp.ExportLayerHeader(LayerDef); - Exp.ExportLayerHeader(LAYER_TYPE_Elem,SubType,Width,Height); - - for (int Y=0; YGetElem(MapElem.Set,MapElem.Elem); - - OutElem.Set=MapElem.Set; - OutElem.Elem=MapElem.Elem; - OutElem.TriStart=0; - OutElem.TriCount=0; - OutElem.XOfs=ThisElem.GetTexXOfs(); - OutElem.YOfs=ThisElem.GetTexYOfs(); - OutElem.Elem=Exp.AddElem(OutElem); - OutElem.Flags=MapElem.Flags; - } - - Exp.Write(&OutElem,sizeof(sExpLayerThing)); - } + ExportThing(Exp,ThingList[i]); + } + ExportThingNames(Exp); +} + + +/*****************************************************************************/ +void CLayerThing::ExportThingNames(CExport &Exp) +{ +int i,ListSize=ThingList.size(); + + for (i=0; i XY; - int Type; - int SubType; + bool WaypointFlag; + + int Speed; + int TurnRate; + int Health; + int AttackStrength; + bool CollisionFlag; + bool PlayerFlag; int Spare[8]; -bool operator==(sLayerThing const &v1) +}; +struct sLayerThing { - if (XY[0]!=v1.XY[0]) return(false); - return(true); -} + GString Name; + CList XY; + int ElemID; + sLayerThingData Data; +bool operator==(const char *Name1) {return (Name==Name1);} }; /*****************************************************************************/ @@ -34,6 +42,7 @@ public: enum MouseMode { MouseModeNormal=0, + MouseModeNew, MouseModePoints, }; @@ -54,14 +63,21 @@ virtual void GUIKill(CCore *Core); virtual void GUIUpdate(CCore *Core); virtual void GUIChanged(CCore *Core); - int GetWidth() {return(Width);} - int GetHeight() {return(Height);} +virtual void GUIThingDefClear(){}; +virtual void GUIThingUpdate(){}; +virtual void GUIThingPointUpdate(){}; virtual void Load(CFile *File,int Version); +virtual void LoadThing(CFile *File,int Version,sLayerThing &ThisThing); +virtual void LoadThingNames(CFile *File,int Version); virtual void Save(CFile *File); +virtual void SaveThing(CFile *File,sLayerThing &ThisThing); +virtual void SaveThingNames(CFile *File); virtual void LoadThingScript(const char *Filename); virtual void Export(CCore *Core,CExport &Exp); +virtual void ExportThing(CExport &Exp,sLayerThing &ThisThing)=0; +virtual void ExportThingNames(CExport &Exp); // Functions virtual bool LButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag); @@ -70,22 +86,32 @@ virtual bool MouseMove(CCore *Core,UINT nFlags, CPoint &point); virtual bool Command(int CmdMsg,CCore *Core,int Param0=0,int Param1=0); protected: +virtual int FindDefThing(const char *Name); +virtual void SetCursor(const char *Name); + void RenderThing(CCore *Core,Vector3 &CamPos,sLayerThing &ThisThing,bool Render3d,bool Selected); int CheckThing(CPoint &Pos); void AddThing(CPoint &Pos); - void SelectThing(CPoint &Pos); + int SelectThing(CPoint &Pos); + int SelectThing(int Idx); + void DeleteThing(); int CheckThingPoint(CPoint &Pos); void AddThingPoint(CPoint &Pos); - void SelectThingPoint(CPoint &Pos); + int SelectThingPoint(CPoint &Pos); void UpdatePos(CPoint &Pos,int Thing,int PosNo,bool Recurs=false); + void MovePoint(int Dir); + void DeletePoint(); + void Cancel(); - int Width,Height; CIni ThingScript; CElemBank *ThingBank; + CList DefList; CList ThingList; - int CurrentThing,CurrentPoint; + int CurrentDefThing; + int CurrentThing,CurrentThingPoint; MouseMode Mode; + sLayerThing Cursor; }; /*****************************************************************************/ diff --git a/Utils/MapEdit/MapEdit.clw b/Utils/MapEdit/MapEdit.clw index fd4979031..3ce2d6ba1 100644 --- a/Utils/MapEdit/MapEdit.clw +++ b/Utils/MapEdit/MapEdit.clw @@ -2,13 +2,13 @@ [General Info] Version=1 -LastClass=CAboutDlg +LastClass=CGUINewMap LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "mapedit.h" LastPage=0 -ClassCount=18 +ClassCount=19 Class1=CChildFrame Class2=CGLEnabledView Class3=CGUIAddLayer @@ -28,21 +28,25 @@ Class16=CAboutDlg Class17=CMapEditDoc Class18=CMapEditView -ResourceCount=14 -Resource1=IDD_ADDLAYER +ResourceCount=17 +Resource1=IDR_TOOLBAR (English (U.S.)) Resource2=IDR_MAPEDITYPE (English (U.S.)) -Resource3=IDD_TOOLBAR -Resource4=IDD_NEWMAP -Resource5=IDD_LAYER_LIST -Resource6=IDD_TILEBANK -Resource7=IDD_RESIZE -Resource8=IDD_LAYER_SHADE -Resource9=IDD_LAYER_COLLISION -Resource10=IDR_TOOLBAR (English (U.S.)) -Resource11=IDR_MAINFRAME (English (U.S.)) -Resource12=IDD_ABOUTBOX (English (U.S.)) -Resource13=IDD_MULTIBAR (English (U.S.)) -Resource14=IDD_ELEMLIST +Resource3=IDD_NEWMAP +Resource4=IDD_TOOLBAR +Resource5=IDD_LAYER_COLLISION +Resource6=IDD_RESIZE +Resource7=IDD_ABOUTBOX (English (U.S.)) +Resource8=xxxx +Resource9=IDD_TILEBANK +Resource10=IDD_LAYER_SHADE +Resource11=IDD_ADDLAYER +Resource12=IDD_MULTIBAR (English (U.S.)) +Resource13=IDD_ELEMLIST +Resource14=IDD_LAYER_LIST +Resource15=IDD_LAYER_ACTOR2 +Resource16=IDR_MAINFRAME (English (U.S.)) +Class19=CGUILayerActor +Resource17=IDD_LAYER_ACTOR [CLS:CChildFrame] Type=0 @@ -79,6 +83,7 @@ Type=0 BaseClass=CDialog HeaderFile=GUILayerList.h ImplementationFile=GUILayerList.cpp +LastObject=IDC_LAYERLIST_LIST [CLS:CGUIMultiBar] Type=0 @@ -91,6 +96,9 @@ Type=0 BaseClass=CDialog HeaderFile=GUINewMap.h ImplementationFile=GUINewMap.cpp +Filter=D +VirtualFilter=dWC +LastObject=IDC_MAPSIZE_HEIGHT [CLS:CGUIResize] Type=0 @@ -166,19 +174,6 @@ Class=CGUIElemList ControlCount=1 Control1=IDD_ELEM_LIST,combobox,1344339971 -[DLG:IDD_LAYER_COLLISION] -Type=1 -Class=GUILayerCollision -ControlCount=8 -Control1=IDC_LAYERCOLLISION_NORMAL,button,1342242816 -Control2=IDC_LAYERCOLLISION_DAMAGE,button,1342242816 -Control3=IDC_LAYERCOLLISION_SLIPPERY,button,1342242816 -Control4=IDC_LAYERCOLLISION_ELECTRIC,button,1342242816 -Control5=IDC_LAYERCOLLISION_STICKY,button,1342242816 -Control6=IDC_LAYERCOLLISION_WATER,button,1342242816 -Control7=IDC_LAYERCOLLISION_SOLID,button,1342242816 -Control8=IDC_LAYERCOLLISION_DEATH,button,1342242816 - [DLG:IDD_LAYER_LIST] Type=1 Class=CGUILayerList @@ -363,3 +358,71 @@ ControlCount=2 Control1=IDD_LAYERTILE_BTN_PAINT,button,1342177344 Control2=IDD_LAYERTILE_BTN_SELECT,button,1342177344 +[DLG:IDD_LAYER_ACTOR2] +Type=1 +Class=GUILayerCollision +ControlCount=8 +Control1=IDC_LAYERCOLLISION_NORMAL,button,1342242816 +Control2=IDC_LAYERCOLLISION_DAMAGE,button,1342242816 +Control3=IDC_LAYERCOLLISION_SLIPPERY,button,1342242816 +Control4=IDC_LAYERCOLLISION_ELECTRIC,button,1342242816 +Control5=IDC_LAYERCOLLISION_STICKY,button,1342242816 +Control6=IDC_LAYERCOLLISION_WATER,button,1342242816 +Control7=IDC_LAYERCOLLISION_SOLID,button,1342242816 +Control8=IDC_LAYERCOLLISION_DEATH,button,1342242816 + +[DLG:xxxx] +Type=1 +Class=? +ControlCount=1 +Control1=IDC_COMBO1,combobox,1344340226 + +[DLG:IDD_LAYER_COLLISION] +Type=1 +Class=? +ControlCount=8 +Control1=IDC_LAYERCOLLISION_NORMAL,button,1342242816 +Control2=IDC_LAYERCOLLISION_DAMAGE,button,1342242816 +Control3=IDC_LAYERCOLLISION_SLIPPERY,button,1342242816 +Control4=IDC_LAYERCOLLISION_ELECTRIC,button,1342242816 +Control5=IDC_LAYERCOLLISION_STICKY,button,1342242816 +Control6=IDC_LAYERCOLLISION_WATER,button,1342242816 +Control7=IDC_LAYERCOLLISION_SOLID,button,1342242816 +Control8=IDC_LAYERCOLLISION_DEATH,button,1342242816 + +[DLG:IDD_LAYER_ACTOR] +Type=1 +Class=CGUILayerActor +ControlCount=22 +Control1=IDC_LEVEL_ACTOR_LIST,combobox,1344339971 +Control2=IDC_ACTOR_POS_LIST,listbox,1352728833 +Control3=IDC_ACTOR_POS_UP,button,1342242816 +Control4=IDC_ACTOR_POS_DOWN,button,1342242816 +Control5=IDC_ACTOR_POS_DELETE,button,1342242816 +Control6=IDC_ACTOR_SPEED_TEXT,static,1342308354 +Control7=IDC_ACTOR_SPEED,edit,1350633600 +Control8=IDC_ACTOR_SPEED_SPIN,msctls_updown32,1342177334 +Control9=IDC_ACTOR_TURNRATE_TEXT,static,1342308354 +Control10=IDC_ACTOR_TURNRATE,edit,1350633600 +Control11=IDC_ACTOR_TURNRATE_SPIN,msctls_updown32,1342177334 +Control12=IDC_ACTOR_HEALTH_TEXT,static,1342308354 +Control13=IDC_ACTOR_HEALTH,edit,1350633600 +Control14=IDC_ACTOR_HEALTH_SPIN,msctls_updown32,1342177334 +Control15=IDC_ACTOR_ATTACK_TEXT,static,1342308354 +Control16=IDC_ACTOR_ATTACK,edit,1350633600 +Control17=IDC_ACTOR_ATTACK_SPIN,msctls_updown32,1342177334 +Control18=IDC_ACTOR_PLAYER,button,1476461091 +Control19=IDC_ACTOR_COLLISION,button,1342243363 +Control20=IDC_LAYER_ACTOR_GROUP,button,1342177287 +Control21=IDC_ACTOR_LIST,combobox,1344339971 +Control22=IDC_ACTOR_DELETE,button,1342242816 + +[CLS:CGUILayerActor] +Type=0 +HeaderFile=GUILayerActor.h +ImplementationFile=GUILayerActor.cpp +BaseClass=CDialog +Filter=D +VirtualFilter=dWC +LastObject=CGUILayerActor + diff --git a/Utils/MapEdit/MapEdit.cpp b/Utils/MapEdit/MapEdit.cpp index 45436e4d8..950422b6c 100644 --- a/Utils/MapEdit/MapEdit.cpp +++ b/Utils/MapEdit/MapEdit.cpp @@ -19,6 +19,8 @@ static char THIS_FILE[] = __FILE__; #endif +const char* ConfigFilename="Mapedit.ini"; + ///////////////////////////////////////////////////////////////////////////// // CMapEditApp @@ -106,6 +108,8 @@ BOOL CMapEditApp::InitInstance() pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); + + MainIni.LoadAndImport(ConfigFilename); return TRUE; } @@ -129,6 +133,16 @@ void CMapEditApp::CloseDoc(CMapEditDoc *Cur) } } +char *CMapEditApp::GetConfigStr(char *Grp,char *Key) +{ + return(MainIni.GetStr(Grp,Key)); +} + +int CMapEditApp::GetConfigInt(char *Grp,char *Key) +{ + return(MainIni.GetInt(Grp,Key)); +} + ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About diff --git a/Utils/MapEdit/MapEdit.dsp b/Utils/MapEdit/MapEdit.dsp index fc1884969..2f975f658 100644 --- a/Utils/MapEdit/MapEdit.dsp +++ b/Utils/MapEdit/MapEdit.dsp @@ -84,7 +84,7 @@ LINK32=link.exe ProjDir=. TargetDir=.\Debug SOURCE="$(InputPath)" -PostBuild_Cmds=if not exist $(TargetDir)\collision.bmp copy $(ProjDir)\res\collision.bmp $(TargetDir)\collision.bmp if not exist $(TargetDir)\iconz.bmp copy $(ProjDir)\res\iconz.bmp $(TargetDir)\iconz.bmp +PostBuild_Cmds=if not exist $(TargetDir)\collision.bmp copy $(ProjDir)\res\collision.bmp $(TargetDir)\collision.bmp if not exist $(TargetDir)\iconz.bmp copy $(ProjDir)\res\iconz.bmp $(TargetDir)\iconz.bmp copy $(ProjDir)\res\iconz.bmp $(TargetDir)\iconz.bmp # End Special Build Tool !ENDIF @@ -391,6 +391,14 @@ SOURCE=.\GUIElemList.h # End Source File # Begin Source File +SOURCE=.\GUILayerActor.cpp +# End Source File +# Begin Source File + +SOURCE=.\GUILayerActor.h +# End Source File +# Begin Source File + SOURCE=.\GUILayerCollision.cpp # End Source File # Begin Source File diff --git a/Utils/MapEdit/MapEdit.h b/Utils/MapEdit/MapEdit.h index 1290e5907..9dc1fcec3 100644 --- a/Utils/MapEdit/MapEdit.h +++ b/Utils/MapEdit/MapEdit.h @@ -14,6 +14,7 @@ #include "resource.h" // main symbols #include "CmdMsg.h" +#include "IniClass.h" ///////////////////////////////////////////////////////////////////////////// // CMapEditApp: @@ -32,6 +33,8 @@ public: { return(CurrentDoc); } + char *GetConfigStr(char *Grp,char *Key); + int GetConfigInt(char *Grp,char *Key); // Overrides // ClassWizard generated virtual function overrides @@ -50,6 +53,7 @@ public: private: CMapEditDoc *CurrentDoc; + CIni MainIni; }; diff --git a/Utils/MapEdit/MapEdit.rc b/Utils/MapEdit/MapEdit.rc index 963b49ae3..6e6677d1d 100644 --- a/Utils/MapEdit/MapEdit.rc +++ b/Utils/MapEdit/MapEdit.rc @@ -584,6 +584,52 @@ BEGIN WS_TABSTOP END +IDD_LAYER_ACTOR DIALOG DISCARDABLE 0, 0, 156, 256 +STYLE WS_CHILD +FONT 8, "MS Sans Serif" +BEGIN + COMBOBOX IDC_LEVEL_ACTOR_LIST,5,25,145,185,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_ACTOR_POS_LIST,5,55,145,55,LBS_NOINTEGRALHEIGHT | + WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Pos Up",IDC_ACTOR_POS_UP,10,110,45,15 + PUSHBUTTON "Pos Down",IDC_ACTOR_POS_DOWN,55,110,45,15 + PUSHBUTTON "Pos Delete",IDC_ACTOR_POS_DELETE,100,110,45,15 + RTEXT "Speed",IDC_ACTOR_SPEED_TEXT,10,130,32,8 + EDITTEXT IDC_ACTOR_SPEED,45,130,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_ACTOR_SPEED_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,80,130,11,10 + RTEXT "TurnRate",IDC_ACTOR_TURNRATE_TEXT,10,145,31,8 + EDITTEXT IDC_ACTOR_TURNRATE,45,145,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_ACTOR_TURNRATE_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,80,145,11,10 + RTEXT "Health",IDC_ACTOR_HEALTH_TEXT,10,164,32,8 + EDITTEXT IDC_ACTOR_HEALTH,45,164,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_ACTOR_HEALTH_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,80,164,11,10 + RTEXT "Attack",IDC_ACTOR_ATTACK_TEXT,10,180,31,8 + EDITTEXT IDC_ACTOR_ATTACK,45,180,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_ACTOR_ATTACK_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,80,180,11,10 + CONTROL "Player",IDC_ACTOR_PLAYER,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_RIGHT | WS_DISABLED | WS_TABSTOP,95,130, + 50,10 + CONTROL "Collision",IDC_ACTOR_COLLISION,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_RIGHT | WS_TABSTOP,95,145,50,10 + GROUPBOX "",IDC_LAYER_ACTOR_GROUP,0,20,155,175 + COMBOBOX IDC_ACTOR_LIST,5,5,145,185,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + PUSHBUTTON "Delete Actor",IDC_ACTOR_DELETE,5,40,75,15 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -664,6 +710,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 19 END + + IDD_LAYER_ACTOR, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 149 + TOPMARGIN, 7 + BOTTOMMARGIN, 249 + END END #endif // APSTUDIO_INVOKED diff --git a/Utils/MapEdit/res/Iconz.BMP b/Utils/MapEdit/res/Iconz.BMP index f865bf19e9fb99197d16277c0b4378d9633e369a..4999b32714a7574b45eb0e20ab87890cda5917c3 100644 GIT binary patch literal 2678 zcmeHHK@I{T48+8fC*cK_lUKjs-Pf4xYxdx0d{-^d!7Kzf+(@KJJKL6)Wg56YmXnFH zh`oxwL@%NTa}+D0`S5uTMuZJBzYVX?8>dL0wNoYolYz;=pEBS@!iza9TC4v@3E=~M zU!1IU>AVyXKG6HVIJvYw*E#UHjeqmocwJxS2k!?y6*G^e-{7@8zi;%DzH$D*%xAGr p)lc`$>vdkFa{|`+G>75)fv+8YF_%3Q{(s*$*SK$}D{=7mYN)DA6cMZOi@!}@67_T*w(^w0 z^ufl>MzXPzjcF6a%XC+iNxn`i-=#Cq8R!iBDFeEANwUToE7B&aw)yS< zfPNKe6II*%f_$$-ciIu(^TT?6tsnSIK=K%E^1!%b_+Hi#JrCzV{5*W#r^qkgOJsb^ ndf7Den?S}Re!bt!dG_^%{dw^^=5g*`rHT8-x`=)q7CCtUab)dH diff --git a/Utils/MapEdit/resource.h b/Utils/MapEdit/resource.h index b62260860..c5b2140df 100644 --- a/Utils/MapEdit/resource.h +++ b/Utils/MapEdit/resource.h @@ -18,6 +18,7 @@ #define IDD_LAYER_SHADE 175 #define IDD_LAYER_COLLISION 177 #define IDD_ELEMLIST 178 +#define IDD_LAYER_ACTOR 179 #define IDC_TOOLBAR_COMBO 1018 #define IDC_LAYERLIST_LIST 1019 #define IDD_TILEBANK_UPDATE 1029 @@ -45,19 +46,42 @@ #define IDC_LAYERCOLLISION_NORMAL 1078 #define IDD_ELEM_LIST 1080 #define IDC_LAYERSHADE_EDITR2 1081 +#define IDC_LEVEL_ACTOR_LIST 1081 #define IDC_LAYERSHADE_EDITG2 1082 #define IDC_LAYERCOLLISION_DAMAGE 1082 +#define IDC_ACTOR_POS_LIST 1082 #define IDC_LAYERSHADE_EDITB2 1083 #define IDC_LAYERCOLLISION_SLIPPERY 1083 +#define IDC_ACTOR_POS_UP 1083 #define IDC_LAYERCOLLISION_ELECTRIC 1084 +#define IDC_ACTOR_POS_DOWN 1084 #define IDC_LAYERCOLLISION_STICKY 1085 +#define IDC_ACTOR_POS_DELETE 1085 #define IDC_LAYERSHADE_TEXT7 1086 #define IDC_LAYERCOLLISION_WATER 1086 +#define IDC_ACTOR_SPEED_TEXT 1086 #define IDC_LAYERSHADE_EDITR3 1087 #define IDC_LAYERCOLLISION_SOLID 1087 +#define IDC_ACTOR_SPEED 1087 #define IDC_LAYERSHADE_EDITG3 1088 #define IDC_LAYERCOLLISION_DEATH 1088 #define IDC_LAYERSHADE_EDITB3 1089 +#define IDC_ACTOR_LIST 1089 +#define IDC_ACTOR_NEW 1090 +#define IDC_ACTOR_DELETE 1091 +#define IDC_ACTOR_SPEED_SPIN 1092 +#define IDC_ACTOR_PLAYER 1094 +#define IDC_LAYER_ACTOR_GROUP 1095 +#define IDC_ACTOR_TURNRATE_TEXT 1097 +#define IDC_ACTOR_TURNRATE 1098 +#define IDC_ACTOR_TURNRATE_SPIN 1099 +#define IDC_ACTOR_HEALTH_TEXT 1112 +#define IDC_ACTOR_HEALTH 1113 +#define IDC_ACTOR_HEALTH_SPIN 1114 +#define IDC_ACTOR_ATTACK_TEXT 1115 +#define IDC_ACTOR_ATTACK 1116 +#define IDC_ACTOR_ATTACK_SPIN 1117 +#define IDC_ACTOR_COLLISION 1118 #define ID_TOOLBAR_TILEPALETTE 32774 #define ID_TOOLBAR_PARAMBAR 32783 #define ID_TOGGLE_SUBVIEW 32785 @@ -80,9 +104,9 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 178 +#define _APS_NEXT_RESOURCE_VALUE 180 #define _APS_NEXT_COMMAND_VALUE 32800 -#define _APS_NEXT_CONTROL_VALUE 1081 +#define _APS_NEXT_CONTROL_VALUE 1097 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif