📄 cmapeditor.h
字号:
//地图编辑器
//Created 2003/6/29 by Kylinx
//完成于2003/6/30 by Kylinx
#ifndef LOA_MAP_EDITOR_H_
#define LOA_MAP_EDITOR_H_
#include<windows.h>
#define UM_SETCLASS WM_USER+0x101 //自己定义的消息
#include"..\\dxlib\\ddutil.h"
#include"..\\CMap.h"
class CMap;
class CLog;
#define LOA_MAP_LAYER_GROUND 0 //地表层
#define LOA_MAP_LAYER_OBJ_1 1 //物体层1
#define LOA_MAP_LAYER_OBJ_2 2 //物体层2
class CMapEditor
{
HWND m_hWnd; //窗口句柄
HMENU m_hMenuMain; //主菜单句柄
HINSTANCE m_hInstance; //实例
BOOL m_bActive; //是否激活
BOOL m_bWindowed; //是否是窗口模式
CDisplay *m_pDisplay; //显示
CSurface *m_aSurface[11]; //11个表面
DWORD m_adwSurfaceWidth[11]; //表面宽
DWORD m_adwSurfaceHeight[11]; //表面高
DWORD m_adwSurfaceColorKey[11]; //关键色
DWORD m_axSelectStart[11]; //当前选择区的起始坐标
DWORD m_aySelectStart[11];
DWORD m_dwTileAniCount; //AniTile的数量
DWORD m_xdwCurrentSelectTile; //当前选择的图块
DWORD m_ydwCurrentSelectTile;
DWORD m_xdwCurrentEditTile; //当前编辑的图块
DWORD m_ydwCurrentEditTile;
int m_MapID;
private:
CSurface *m_pSurfBlock; //障碍表面
CSurface *m_pSurfGround; //地表表面
DWORD m_xEditStart; //当前编辑区的起始坐标
DWORD m_yEditStart;
private:
static DWORD s_dwTileLayer1;
static DWORD s_dwTileLayer2;
static DWORD s_dwNewMapHeight; //新地图大小
static DWORD s_dwNewMapWidth;
static DWORD s_dwxCurrentEdit;
static DWORD s_dwyCurrentEdit;
static DWORD s_dwChangeMapID;
static DWORD s_dwScriptID;
static DWORD s_dwTileFlag;
static char s_szMapName[24];
static char s_szTileData[128];
static int s_nID;
static char s_szCurrentPath[256];
private:
BOOL m_bShowObj1; //是否显示物体层1
BOOL m_bShowObj2; //是否显示物体层2
BOOL m_bShowGround; //是否显示地表层
BOOL m_bShowBlockSign; //是否显示障碍标志
BOOL m_bShowGrid; //是否显示网格
DWORD m_dwCurrentEditLayer; //当前编辑的层
DWORD m_dwCurrentSelectSurface; //当前选择的表面
BOOL m_bIsEdit; //是否正在编辑
private:
STTileAni *m_aTileAni; //AniTile
CLog *m_pLog; //日志
CMap *m_pMap; //地图
char m_szInitDir[256]; //当前目录
private:
static LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK DlgGetMapSize(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK DlgSetTileLayer(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK DlgSetChangeMap(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK DlgSetMapScript(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK DlgEditMapInfo(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK DlgEditMapID(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
private:
BOOL CreateDisplayMode(BOOL bWindowed); //创建显示模式(窗口或者全屏幕)
char* OpenFileDialog(char*lpstrFile,char*lpstrFilter,BOOL bSave);//打开文件的对话框
void MsgBox(char*str,...); //消息框
void ShowGround();
void ShowEditSurface(); //显示编辑表面
void ShowSelectTileSurface(); //显示选择tile的表面
void ShowGrid();
void UpdateScreen(); //更新屏幕
private:
BOOL OnHScrollBarMessageSelectTile(WPARAM wParam);
BOOL OnHScrollBarMessageEdit(WPARAM wParam);
BOOL OnVScrollBarMessageSelectTile(WPARAM wParam);
BOOL OnVScrollBarMessageEdit(WPARAM wParam);
BOOL OnVScrollBarMessage(WPARAM wParam); //垂直滚动条的处理
BOOL OnHScrollBarMessage(WPARAM wParam); //水平滚动条的处理
void ResetScrollBarRange();
private:
BOOL OnMouseMoveSelectTile();
BOOL OnMouseMoveEdit();
BOOL OnMouseMove();
BOOL OnMouseLButtonDownSelectTile();
BOOL OnMouseLButtonDownEdit();
BOOL OnMouseLButtonDown();
BOOL OnMouseRButtonDown();
private:
void SetCheckedMenu();
//MenuMessage
BOOL OnShowObj1() {m_bShowObj1=!m_bShowObj1;SetCheckedMenu();return true;}
BOOL OnShowObj2() {m_bShowObj2=!m_bShowObj2;SetCheckedMenu();return true;}
BOOL OnShowGround() {m_bShowGround=!m_bShowGround;SetCheckedMenu();return true;}
BOOL OnShowBlockSign() {m_bShowBlockSign=!m_bShowBlockSign;SetCheckedMenu();return true;}
BOOL OnShowGrid() {m_bShowGrid=!m_bShowGrid;SetCheckedMenu();return true;}
BOOL OnSelectTile1() {m_dwCurrentSelectSurface=1;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile2() {m_dwCurrentSelectSurface=2;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile3() {m_dwCurrentSelectSurface=3;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile4() {m_dwCurrentSelectSurface=4;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile5() {m_dwCurrentSelectSurface=5;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile6() {m_dwCurrentSelectSurface=6;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile7() {m_dwCurrentSelectSurface=7;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile8() {m_dwCurrentSelectSurface=8;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile9() {m_dwCurrentSelectSurface=9;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnSelectTile10() {m_dwCurrentSelectSurface=10;ResetScrollBarRange();m_bIsEdit=false;SetCheckedMenu();return true;}
BOOL OnEditGround() {m_bIsEdit=true;ResetScrollBarRange();m_dwCurrentEditLayer=LOA_MAP_LAYER_GROUND;SetCheckedMenu();return true;}
BOOL OnEditObj1() {m_bIsEdit=true;ResetScrollBarRange();m_dwCurrentEditLayer=LOA_MAP_LAYER_OBJ_1;SetCheckedMenu();return true;}
BOOL OnEditObj2() {m_bIsEdit=true;ResetScrollBarRange();m_dwCurrentEditLayer=LOA_MAP_LAYER_OBJ_2;SetCheckedMenu();return true;}
BOOL OnDel();
BOOL OnEditMapInfo();
BOOL OnEditID();
BOOL OnSetBlock();
BOOL OnSetLayer();
BOOL OnSetRandomBattle();
BOOL OnSetChangeMap();
BOOL OnSetMapScript();
BOOL OnShowAbout()
{
MsgBox("Legend of Atlantis 游戏地图编辑器v1.0\n"
"吴振华(kylinx)编写于2003/6/29,完成于2003/6/30\n"
"版权所有! 欢迎光临Http://kylinx.yeah.net得到本游戏的最新信息!\n"
"如果发现任何bug或者您有更好的建议,请告诉我!不胜感激\n"
"联系方式:E-mail:game-diy@163.com OICQ:30784290");
return true;
}
BOOL OnNew();
BOOL OnLoad();
BOOL OnSave();
BOOL OnExit();
//EndMenuMessage
void SetSurfaceValue(); //初始化表面数据
BOOL InitSurface(const char*szAniFile); //初始化表面
void ShowAniTileToAniSurface(); //显示ani到表面10
public:
CMapEditor();
virtual ~CMapEditor();
public:
int MainLoop(); //循环
BOOL IsWindowed(){return m_pDisplay->IsWindowed();}
HWND GetHWnd(){return m_hWnd;}
CLog*GetLog(){return m_pLog;}
BOOL InitDxlib(HINSTANCE hInstance); //初始化
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -