⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmapeditor.h

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 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 + -