📄 dialogscenelayer.cpp
字号:
// DialogSceneLayer.cpp : implementation file
//
#include "stdafx.h"
#include "Architect.h"
#include "DialogSceneLayer.h"
#include "ArchitectDlg.h"
#include "3DGameMap.h"
#include "2DMapPuzzleObj.h"
#include "SceneLayer.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDialogSceneLayer dialog
CDialogSceneLayer::CDialogSceneLayer(CWnd* pParent /*=NULL*/)
: CDialog(CDialogSceneLayer::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialogSceneLayer)
m_strXRate = _T("");
m_strYRate = _T("");
//}}AFX_DATA_INIT
m_pData = NULL;
}
void CDialogSceneLayer::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogSceneLayer)
DDX_Text(pDX, IDC_EDIT_XRATE, m_strXRate);
DDX_Text(pDX, IDC_EDIT_YRATE, m_strYRate);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialogSceneLayer, CDialog)
//{{AFX_MSG_MAP(CDialogSceneLayer)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_SETRATE, OnButtonSetrate)
ON_BN_CLICKED(IDC_BUTTON_LOADPUZZLE, OnButtonLoadpuzzle)
ON_WM_SHOWWINDOW()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogSceneLayer message handlers
BOOL CDialogSceneLayer::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
this->SetTimer(WM_TIMER, 30, NULL);
this->m_strXRate = "10";
this->m_strYRate = "10";
this->UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDialogSceneLayer::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
extern CArchitectDlg* g_pDialog;
int nIndex = g_pDialog->m_ctrlList.GetCurSel();
CMapLayer* pLayer = g_objGameMap.GetLayerByIndex(nIndex);
BOOL bFlash = false;
if(m_pData != pLayer)
{
m_pData = pLayer;
bFlash = true;
}
if(bFlash)
{
if(pLayer && pLayer->GetType() == CMapLayer::LAYER_SCENE)
{
this->ShowWindow(SW_SHOW);
}
else
{
this->ShowWindow(SW_HIDE);
}
}
CDialog::OnTimer(nIDEvent);
}
void CDialogSceneLayer::OnButtonSetrate()
{
// TODO: Add your control notification handler code here
this->UpdateData(true);
int nX = atoi(this->m_strXRate);
int nY = atoi(this->m_strYRate);
extern CArchitectDlg* g_pDialog;
int nIndex = g_pDialog->m_ctrlList.GetCurSel();
CMapLayer* pLayer = g_objGameMap.GetLayerByIndex(nIndex);
if(pLayer && pLayer->GetType() == CMapLayer::LAYER_SCENE)
{
pLayer->SetMoveRateX(nX);
pLayer->SetMoveRateY(nY);
}
}
void CDialogSceneLayer::OnAddPuzzle()
{
extern CArchitectDlg* g_pDialog;
static TCHAR strFileName[MAX_PATH] = TEXT("");
static TCHAR strPath[MAX_PATH] = TEXT("");
char szCurDir[_MAX_PATH];
char szFileName[_MAX_PATH];
GetCurrentDirectory(_MAX_PATH,szCurDir);
// Setup the OPENFILENAME structure
OPENFILENAME ofn = { sizeof(OPENFILENAME), this->GetSafeHwnd(), NULL,
TEXT("拼图文件\0*.pul\0所有文件\0*.*\0\0"), NULL,
0, 1, strFileName, MAX_PATH, NULL, 0, strPath,
TEXT("打开拼图文件"),
OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR,
0, 0,
TEXT(".pul"), 0, NULL, NULL };
// Display the OpenFileName dialog. Then, try to load the specified file
try
{
if( TRUE != GetOpenFileName( &ofn ) )
{
return;
}
}
catch(...)
{
}
int nLen = strlen(szCurDir);
for(int k = 0; k < _MAX_PATH-nLen-1; k++)
{
szFileName[k] = strFileName[nLen+k+1];
}
int nIndex = g_pDialog->m_ctrlList.GetCurSel();
CMapLayer* pLayer = g_objGameMap.GetLayerByIndex(nIndex);
if(pLayer && pLayer->GetType() == CMapLayer::LAYER_SCENE)
{
C2DMapPuzzleObj* pObj = new C2DMapPuzzleObj;
if(!pObj)
return;
pObj->LoadFile(szFileName);
CSceneLayer* pSceneLayer = (CSceneLayer*)pLayer;
pSceneLayer->AddObj(pObj);
}
}
void CDialogSceneLayer::OnButtonLoadpuzzle()
{
// TODO: Add your control notification handler code here
this->OnAddPuzzle();
}
void CDialogSceneLayer::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
extern CArchitectDlg* g_pDialog;
int nIndex = g_pDialog->m_ctrlList.GetCurSel();
CMapLayer* pLayer = g_objGameMap.GetLayerByIndex(nIndex);
if(pLayer)
{
char szTemp[256];
sprintf(szTemp, "%d", pLayer->GetMoveRateX);
sprintf(szTemp, "%d", pLayer->GetMoveRateY);
this->m_strXRate = szTemp;
this->m_strYRate = szTemp;
this->UpdateData(false);
}
}
void CDialogSceneLayer::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
extern CArchitectDlg* g_pDialog;
int nIndex = g_pDialog->m_ctrlList.GetCurSel();
CMapLayer* pLayer = g_objGameMap.GetLayerByIndex(nIndex);
if(pLayer)
{
char szTemp[256];
sprintf(szTemp, "%d", pLayer->GetMoveRateX());
sprintf(szTemp, "%d", pLayer->GetMoveRateY());
this->m_strXRate = szTemp;
this->m_strYRate = szTemp;
this->UpdateData(false);
}
// Do not call CDialog::OnPaint() for painting messages
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -