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

📄 cmapeditor.cpp

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	switch(message)
	{
	case WM_INITDIALOG:
		{
			::SetDlgItemInt(hWnd,IDC_GET_ID,s_nID,false);
            return 1;
		}
        break;
	case WM_COMMAND:
		{
			switch(wParam)
			{
			case IDOK:
				{	
					s_nID=::GetDlgItemInt(hWnd,IDC_GET_ID,NULL,false);
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			case IDCANCEL:
				{
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			}
		}
		break;
	default:
		return 0;
	}
	return 1;
}
LRESULT CALLBACK CMapEditor::DlgEditMapInfo(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
	case WM_INITDIALOG:
		{
			::SetDlgItemText(hWnd,IDC_MAP_INFO,s_szMapName);
            return 1;
		}
        break;
	case WM_COMMAND:
		{
			switch(wParam)
			{
			case IDOK:
				{	
					::GetDlgItemText(hWnd,IDC_MAP_INFO,s_szMapName,22);
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			case IDCANCEL:
				{
					strcpy(s_szMapName,"");
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			}
		}
		break;
	default:
		return 0;
	}
	return 1;
}
//-----------------------------------------------------------------------------------
//设置层次的对话框
//-----------------------------------------------------------------------------------
LRESULT CALLBACK CMapEditor::DlgSetTileLayer(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
	case WM_INITDIALOG:
		{

			::SetDlgItemInt(hWnd,IDC_EDIT_INPUT1,s_dwTileLayer1,true);
			::SetDlgItemInt(hWnd,IDC_EDIT_INPUT2,s_dwTileLayer2,true);
			::SetDlgItemText(hWnd,IDC_EDIT1,"请输入物体层1的层次:(0-15)");
			::SetDlgItemText(hWnd,IDC_EDIT2,"请输入物体层2的层次:(0-15)");	
            return 1;
		}
        break;
	case WM_COMMAND:
		{
			switch(wParam)
			{
			case IDOK:
				{	
					s_dwTileLayer1=::GetDlgItemInt(hWnd,IDC_EDIT_INPUT1,NULL,false);
					s_dwTileLayer2=::GetDlgItemInt(hWnd,IDC_EDIT_INPUT2,NULL,false);
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			case IDCANCEL:
				{
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			}
		}
		break;
	default:
		return 0;
	}
	return 1;
}
//-----------------------------------------------------------------------------------
//新地图的对话框
//-----------------------------------------------------------------------------------
LRESULT CALLBACK CMapEditor::DlgGetMapSize(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
	case WM_INITDIALOG:
		{
			::SetDlgItemInt(hWnd,IDC_EDIT_INPUT1,40,true);
			::SetDlgItemInt(hWnd,IDC_EDIT_INPUT2,30,true);
			::SetDlgItemText(hWnd,IDC_EDIT1,"请输入地图宽:");
			::SetDlgItemText(hWnd,IDC_EDIT2,"请输入地图高:");	
            return 1;
		}
        break;
	case WM_COMMAND:
		{
			switch(wParam)
			{
			case IDOK:
				{	
					s_dwNewMapWidth=::GetDlgItemInt(hWnd,IDC_EDIT_INPUT1,NULL,false);
					s_dwNewMapHeight=::GetDlgItemInt(hWnd,IDC_EDIT_INPUT2,NULL,false);
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			case IDCANCEL:
				{
					EndDialog(hWnd,1);
					return 1;
				}
				break;
			}
		}
		break;
	default:
		return 0;
	}
	return 0;
}

////////////////////////////////////////////////////////////////////////////////////////////
//窗口过程
////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK CMapEditor::WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	static CMapEditor*pEditor=NULL;
	switch(message)
    {
	case UM_SETCLASS:
		pEditor=(CMapEditor*)wParam;
		break;
    case WM_ACTIVATEAPP:
		if(pEditor)
			pEditor->m_bActive=wParam;
        break;
	case WM_MOUSEMOVE:
		return pEditor->OnMouseMove();
	case WM_LBUTTONDOWN:
		return pEditor->OnMouseLButtonDown();
	case WM_RBUTTONDOWN:
		return pEditor->OnMouseRButtonDown();
	case WM_VSCROLL:
		return pEditor->OnVScrollBarMessage(wParam);
	case WM_HSCROLL:
		return pEditor->OnHScrollBarMessage(wParam);
	case WM_KEYDOWN:
		{
			switch(wParam)
			{
			case VK_ESCAPE:
				SendMessage(hWnd,WM_COMMAND,IDM_EXIT,0);
				break;
			case VK_SPACE:
				if(pEditor->m_bIsEdit)
				{
					pEditor->ResetScrollBarRange();
					pEditor->m_bIsEdit=false;
					pEditor->SetCheckedMenu();
					return true;
				}
				if(pEditor->m_dwCurrentEditLayer==LOA_MAP_LAYER_GROUND)
					SendMessage(hWnd,WM_COMMAND,IDM_EDIT_GROUND,0);
				else if(pEditor->m_dwCurrentEditLayer==LOA_MAP_LAYER_OBJ_1)
					SendMessage(hWnd,WM_COMMAND,IDM_EDIT_OBJ_1,0);
				else if(pEditor->m_dwCurrentEditLayer==LOA_MAP_LAYER_OBJ_2)
					SendMessage(hWnd,WM_COMMAND,IDM_EDIT_OBJ_2,0);
				break;
			}
		}
		break;
	case WM_CHAR:
		{
			switch(LOWORD(wParam))
			{
			case '1':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_1,0);
				break;
			case '2':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_2,0);
				break;
			case '3':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_3,0);
				break;
			case '4':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_4,0);
				break;
			case '5':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_5,0);
				break;
			case '6':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_6,0);
				break;
			case '7':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_7,0);
				break;
			case '8':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_8,0);
				break;
			case '9':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_9,0);
				break;
			case '0':
				SendMessage(hWnd,WM_COMMAND,IDM_TILE_10,0);
				break;
			}
		}
		break;
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case IDM_NEW:
				return pEditor->OnNew();
			case IDM_SAVE:
				return pEditor->OnSave();
			case IDM_LOAD:
				return pEditor->OnLoad();
			case IDM_EXIT:
				return pEditor->OnExit();
			case IDM_SHOW_OBJ_1:
				return pEditor->OnShowObj1();
			case IDM_SHOW_OBJ_2:
				return pEditor->OnShowObj2();
			case IDM_SHOW_GROUND:
				return pEditor->OnShowGround();
			case IDM_SHOW_BLOCK_SIGN:
				return pEditor->OnShowBlockSign();
			case IDM_SHOW_GRID:
				return pEditor->OnShowGrid();
			case IDM_EDIT_GROUND:
				return pEditor->OnEditGround();
			case IDM_EDIT_OBJ_1:
				return pEditor->OnEditObj1();
			case IDM_EDIT_OBJ_2:
				return pEditor->OnEditObj2();
			case IDM_DEL:
				return pEditor->OnDel();
			case IDM_TILE_1:
				return pEditor->OnSelectTile1();
			case IDM_TILE_2:
				return pEditor->OnSelectTile2();
			case IDM_TILE_3:
				return pEditor->OnSelectTile3();
			case IDM_TILE_4:
				return pEditor->OnSelectTile4();
			case IDM_TILE_5:
				return pEditor->OnSelectTile5();
			case IDM_TILE_6:
				return pEditor->OnSelectTile6();
			case IDM_TILE_7:
				return pEditor->OnSelectTile7();
			case IDM_TILE_8:
				return pEditor->OnSelectTile8();
			case IDM_TILE_9:
				return pEditor->OnSelectTile9();
			case IDM_TILE_10:
				return pEditor->OnSelectTile10();
			case IDM_ABOUT:
				return pEditor->OnShowAbout();
			case IDM_SET_BLOCK:
				return pEditor->OnSetBlock();
			case IDM_SET_LAYER:
				return pEditor->OnSetLayer();
			case IDM_SET_CHANGE_MAP:
				return pEditor->OnSetChangeMap();
			case IDM_SET_SCRIPT:
				return pEditor->OnSetMapScript();
			case IDM_EDIT_ABOUT:
				return pEditor->OnEditMapInfo();
			case IDM_SET_ID:
				return pEditor->OnEditID();
			case IDM_SET_RANDOM_BATTLE:
				return pEditor->OnSetRandomBattle();
			}
		}
		break;
	case WM_MOVE:
	case WM_SIZE:
		if(pEditor)
			pEditor->m_pDisplay->UpdateBounds();
		break;
	case WM_CLOSE:
		if(MessageBox(hWnd,"确实要退出吗?","LOA",MB_YESNO)==IDYES)
			DestroyWindow(hWnd);
		break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 1;
}
BOOL CMapEditor::OnSetRandomBattle()
{
	if(this->m_pMap->m_head.bRandomBattle==1)
		this->m_pMap->m_head.bRandomBattle=false;
	else
		this->m_pMap->m_head.bRandomBattle=true;
	return true;
}
//-----------------------------------------------------------------------------------
//调整菜单选中与否
//-----------------------------------------------------------------------------------
void CMapEditor::SetCheckedMenu()
{

	::EnableMenuItem(m_hMenuMain,IDM_SET_BLOCK,MF_GRAYED);
	::EnableMenuItem(m_hMenuMain,IDM_SET_LAYER,MF_GRAYED);
	::EnableMenuItem(m_hMenuMain,IDM_SET_CHANGE_MAP,MF_GRAYED);
	::EnableMenuItem(m_hMenuMain,IDM_SET_SCRIPT,MF_GRAYED);

	::CheckMenuItem(m_hMenuMain,IDM_TILE_1,MF_UNCHECKED);

	::CheckMenuItem(m_hMenuMain,IDM_TILE_2,MF_UNCHECKED);
	
	::CheckMenuItem(m_hMenuMain,IDM_TILE_3,MF_UNCHECKED);
		
	::CheckMenuItem(m_hMenuMain,IDM_TILE_4,MF_UNCHECKED);
	
	::CheckMenuItem(m_hMenuMain,IDM_TILE_5,MF_UNCHECKED);
	
	::CheckMenuItem(m_hMenuMain,IDM_TILE_6,MF_UNCHECKED);
	
	::CheckMenuItem(m_hMenuMain,IDM_TILE_7,MF_UNCHECKED);
	
	::CheckMenuItem(m_hMenuMain,IDM_TILE_8,MF_UNCHECKED);

	::CheckMenuItem(m_hMenuMain,IDM_TILE_9,MF_UNCHECKED);

	::CheckMenuItem(m_hMenuMain,IDM_TILE_10,MF_UNCHECKED);


	::CheckMenuItem(m_hMenuMain,IDM_EDIT_GROUND,MF_UNCHECKED);

	::CheckMenuItem(m_hMenuMain,IDM_EDIT_OBJ_1,MF_UNCHECKED);

	::CheckMenuItem(m_hMenuMain,IDM_EDIT_OBJ_2,MF_UNCHECKED);

	if(m_bIsEdit)
	{
		if(m_dwCurrentEditLayer==LOA_MAP_LAYER_GROUND)
			::CheckMenuItem(m_hMenuMain,IDM_EDIT_GROUND,MF_CHECKED);
		if(m_dwCurrentEditLayer==LOA_MAP_LAYER_OBJ_1)
			::CheckMenuItem(m_hMenuMain,IDM_EDIT_OBJ_1,MF_CHECKED);
		if(m_dwCurrentEditLayer==LOA_MAP_LAYER_OBJ_2)
			::CheckMenuItem(m_hMenuMain,IDM_EDIT_OBJ_2,MF_CHECKED);

	}
	else
	{
		switch(m_dwCurrentSelectSurface)
		{
		case 1:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_1,MF_CHECKED);
			break;
		case 2:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_2,MF_CHECKED);
			break;
		case 3:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_3,MF_CHECKED);
			break;
		case 4:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_4,MF_CHECKED);
			break;
		case 5:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_5,MF_CHECKED);
			break;
		case 6:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_6,MF_CHECKED);
			break;
		case 7:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_7,MF_CHECKED);
			break;
		case 8:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_8,MF_CHECKED);
			break;
		case 9:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_9,MF_CHECKED);
			break;
		case 10:
			::CheckMenuItem(m_hMenuMain,IDM_TILE_10,MF_CHECKED);
			break;
		}
	}

	if(m_bShowBlockSign)
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_BLOCK_SIGN,MF_CHECKED);
	else
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_BLOCK_SIGN,MF_UNCHECKED);

	if(m_bShowGrid)
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_GRID,MF_CHECKED);
	else
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_GRID,MF_UNCHECKED);

	if(m_bShowObj1)
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_OBJ_1,MF_CHECKED);
	else
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_OBJ_1,MF_UNCHECKED);

	if(m_bShowObj2)
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_OBJ_2,MF_CHECKED);
	else
		::CheckMenuItem(m_hMenuMain,IDM_SHOW_OBJ_2,MF_UNCHECKED);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -