Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
286
GameTools/WORLDCREATOR/PageDuengunContainer.cpp
Normal file
286
GameTools/WORLDCREATOR/PageDuengunContainer.cpp
Normal file
@@ -0,0 +1,286 @@
|
||||
// PageDuengunContainer.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "worldcreator.h"
|
||||
#include "PageDuengunContainer.h"
|
||||
#include "SceneManager.h"
|
||||
#include "worldcreatorView.h"
|
||||
#include "mainfrm.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPageDuengunContainer property page
|
||||
|
||||
IMPLEMENT_DYNCREATE(CPageDuengunContainer, CPropertyPage)
|
||||
|
||||
CPageDuengunContainer::CPageDuengunContainer() : CPropertyPage(CPageDuengunContainer::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CPageDuengunContainer)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
|
||||
m_pEditName = NULL;
|
||||
m_pDuengunTriggerDlg = NULL;
|
||||
|
||||
}
|
||||
|
||||
CPageDuengunContainer::~CPageDuengunContainer()
|
||||
{
|
||||
delete m_pEditName;
|
||||
m_pEditName = NULL;
|
||||
|
||||
}
|
||||
|
||||
void CPageDuengunContainer::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CPropertyPage::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CPageDuengunContainer)
|
||||
DDX_Control(pDX, IDC_TREE1, m_ctrlDuengunTree);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CPageDuengunContainer, CPropertyPage)
|
||||
//{{AFX_MSG_MAP(CPageDuengunContainer)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_TREE1, OnRclickTree1)
|
||||
ON_COMMAND(ID_MENUITEM_DUNGUENINSERT, OnMenu_DunguenInsert)
|
||||
ON_COMMAND(ID_MENUITEM_DUENGUNDELETE, OnMenu_DuengunDelete)
|
||||
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
|
||||
ON_NOTIFY(NM_DBLCLK, IDC_TREE1, OnDblclkTree1)
|
||||
ON_MESSAGE(WM_CHILD_CLOSE, OnChildClose)
|
||||
ON_NOTIFY(TVN_BEGINDRAG, IDC_TREE1, OnBegindragTree1)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPageDuengunContainer message handlers
|
||||
|
||||
void CPageDuengunContainer::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
CPoint point;
|
||||
GetCursorPos(&point);
|
||||
CMenu menu;
|
||||
menu.LoadMenu(IDR_MENU_DUENGUN);
|
||||
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
|
||||
*pResult = 0;
|
||||
|
||||
}
|
||||
|
||||
void CPageDuengunContainer::OnMenu_DunguenInsert()
|
||||
{
|
||||
// TODO: Add your command handler code here
|
||||
|
||||
m_pEditName = new CDlgEditName;
|
||||
m_pEditName->DoModal();
|
||||
// Bsp <20≯<EFBFBD><CCB8><EFBFBD> <20>Էµ<D4B7><C2B5><EFBFBD> <20>ʾҴٸ<D2B4>..
|
||||
if( m_pEditName->m_EditName.GetLength() < 2)
|
||||
return;
|
||||
|
||||
float fScale = m_pEditName->m_fScale;
|
||||
|
||||
TV_INSERTSTRUCT tvInsert;
|
||||
tvInsert.hParent = m_Root;
|
||||
tvInsert.hInsertAfter = TVI_LAST;
|
||||
tvInsert.item.mask = TVIF_TEXT;
|
||||
tvInsert.item.state = 0;
|
||||
tvInsert.item.stateMask = 0;
|
||||
tvInsert.item.cchTextMax = 50;
|
||||
tvInsert.item.iSelectedImage = 1;
|
||||
tvInsert.item.cChildren = 0;
|
||||
tvInsert.item.pszText = m_pEditName->m_EditName.LockBuffer();
|
||||
tvInsert.item.iImage = 1;
|
||||
|
||||
char *pChr = strrchr(tvInsert.item.pszText,'.');
|
||||
pChr++;
|
||||
pChr++;
|
||||
pChr++;
|
||||
//pChr == 'e' || pChr == 'p'
|
||||
|
||||
if((*pChr) == 'p' || (*pChr) == 'P')
|
||||
CSceneManager::m_RBspSceneManager.InsertBspScene(tvInsert.item.pszText,fScale);
|
||||
else
|
||||
{
|
||||
CSceneManager::m_RBspSceneManager.InsertBseScene(tvInsert.item.pszText,fScale);
|
||||
RBspScene *pScene = CSceneManager::m_RBspSceneManager.SearchBspScene(tvInsert.item.pszText);
|
||||
pScene->m_bVisible = true;
|
||||
|
||||
vector3 vecPos = vector3(pScene->m_vecZeroPos.x,
|
||||
pScene->m_vecZeroPos.y,
|
||||
pScene->m_vecZeroPos.z);
|
||||
|
||||
matrix *ViewPos=CSceneManager::GetCamera()->GetMatPosition();
|
||||
ViewPos->_41=vecPos.x;
|
||||
ViewPos->_42=vecPos.y;
|
||||
ViewPos->_43=vecPos.z;
|
||||
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->m_SceneManager->UpdateScene(0.0f);
|
||||
}
|
||||
m_ctrlDuengunTree.Expand(m_ctrlDuengunTree.InsertItem(&tvInsert),TVE_EXPAND);
|
||||
m_ctrlDuengunTree.Expand(m_Root,TVE_EXPAND);
|
||||
|
||||
|
||||
delete m_pEditName;
|
||||
m_pEditName = NULL;
|
||||
|
||||
}
|
||||
|
||||
void CPageDuengunContainer::OnMenu_DuengunDelete()
|
||||
{
|
||||
TVITEM tvitem;
|
||||
char szStr[50];
|
||||
memset(szStr,0,sizeof(char) * 50);
|
||||
tvitem.hItem = m_ctrlDuengunTree.GetSelectedItem();
|
||||
tvitem.mask = TVIF_TEXT;
|
||||
tvitem.pszText = szStr;
|
||||
tvitem.cchTextMax = 50;
|
||||
|
||||
m_ctrlDuengunTree.GetItem(&tvitem );
|
||||
if(strcmp(tvitem.pszText,"Root"))
|
||||
{
|
||||
CSceneManager::m_RBspSceneManager.DeleteBspScene(tvitem.pszText);
|
||||
m_ctrlDuengunTree.DeleteItem(m_ctrlDuengunTree.GetSelectedItem());
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->Invalidate(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox("Root Node<64><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");
|
||||
|
||||
}
|
||||
// TODO: Add your command handler code here
|
||||
}
|
||||
/*
|
||||
BOOL CPageDuengunContainer::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
|
||||
{
|
||||
// TODO: Add your specialized code here and/or call the base class
|
||||
|
||||
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
|
||||
}
|
||||
*/
|
||||
BOOL CPageDuengunContainer::OnInitDialog()
|
||||
{
|
||||
CPropertyPage::OnInitDialog();
|
||||
|
||||
m_imgIcon.Create(IDB_TREEICON,16,2,RGB(0,128,128));
|
||||
m_ctrlDuengunTree.SetImageList(&m_imgIcon,TVSIL_NORMAL);
|
||||
TV_INSERTSTRUCT tvInsert;
|
||||
tvInsert.hParent = NULL;
|
||||
tvInsert.hInsertAfter = TVI_LAST;
|
||||
tvInsert.item.mask = TVIF_TEXT;
|
||||
tvInsert.item.state = 0;
|
||||
tvInsert.item.stateMask = 0;
|
||||
tvInsert.item.cchTextMax = 50;
|
||||
tvInsert.item.iSelectedImage = 1;
|
||||
tvInsert.item.cChildren = 0;
|
||||
tvInsert.item.pszText = "Root";
|
||||
tvInsert.item.iImage = 0;
|
||||
m_Root = m_ctrlDuengunTree.InsertItem(&tvInsert);
|
||||
m_ctrlDuengunTree.Expand(m_Root,TVE_EXPAND);
|
||||
|
||||
// TODO: Add extra initialization here
|
||||
m_pDuengunTriggerDlg = new CDlgDuengunTrigger;
|
||||
m_pDuengunTriggerDlg->Create(this);
|
||||
m_pDuengunTriggerDlg->ShowWindow(SW_HIDE);
|
||||
m_pDuengunTriggerDlg->SetWindowPos( NULL, 0, 500, 0, 0, SWP_NOSIZE | SWP_NOZORDER );
|
||||
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CPageDuengunContainer::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
||||
// TODO: Add your control notification handler code here
|
||||
HTREEITEM hItem = pNMTreeView->itemNew.hItem;
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CPageDuengunContainer::OnDblclkTree1(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
BeginDuengunTrigger();
|
||||
*pResult = 0;
|
||||
}
|
||||
void CPageDuengunContainer::BeginDuengunTrigger()
|
||||
{
|
||||
TVITEM tvitem;
|
||||
char szStr[50];
|
||||
memset(szStr,0,sizeof(char) * 50);
|
||||
tvitem.hItem = m_ctrlDuengunTree.GetSelectedItem();
|
||||
tvitem.mask = TVIF_TEXT;
|
||||
tvitem.pszText = szStr;
|
||||
tvitem.cchTextMax = 50;
|
||||
|
||||
m_ctrlDuengunTree.GetItem(&tvitem );
|
||||
if(strcmp(tvitem.pszText,"Root")) {
|
||||
CSceneManager::m_RBspSceneManager.SetPickIndex(tvitem.pszText);
|
||||
|
||||
m_pDuengunTriggerDlg->SetBspFile(tvitem.pszText);
|
||||
m_pDuengunTriggerDlg->ShowWindow(SW_SHOW);
|
||||
m_ctrlDuengunTree.EnableWindow(FALSE);
|
||||
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->Invalidate(TRUE);
|
||||
|
||||
}
|
||||
else // Root Node Select
|
||||
{
|
||||
MessageBox("Root Node <20>Դϴ<D4B4>.(<28><><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.)");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
LRESULT CPageDuengunContainer::OnChildClose(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
/*if( (CDlgEditGCMDS*)wParam == m_pDlgEditGCMDS )
|
||||
{
|
||||
EndGCMDSEdit();
|
||||
}
|
||||
*/
|
||||
m_pDuengunTriggerDlg->ShowWindow(SW_HIDE);
|
||||
m_ctrlDuengunTree.EnableWindow(TRUE);
|
||||
CSceneManager::m_RBspSceneManager.SetPickIndex("");
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->Invalidate(TRUE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CPageDuengunContainer::OnBegindragTree1(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
|
||||
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
||||
// TODO: Add your control notification handler code here
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->m_bSelectBsp = true;
|
||||
av->ChangeMouseInterface(95);
|
||||
|
||||
TVITEM tvitem;
|
||||
char szStr[50];
|
||||
memset(szStr,0,sizeof(char) * 50);
|
||||
tvitem.hItem = m_ctrlDuengunTree.GetSelectedItem();
|
||||
tvitem.mask = TVIF_TEXT;
|
||||
tvitem.pszText = szStr;
|
||||
tvitem.cchTextMax = 50;
|
||||
|
||||
m_ctrlDuengunTree.GetItem(&tvitem );
|
||||
// Select <20><> bsp <20≯<EFBFBD>
|
||||
av->m_strSelectBspScene.Format("%s",tvitem.pszText);
|
||||
////
|
||||
*pResult = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user