Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
245 lines
6.6 KiB
C++
245 lines
6.6 KiB
C++
// NodeDataValueFileView.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ContentTrack.h"
|
|
#include "NodeDataValueFileView.h"
|
|
#include "NodeDataValueFileDoc.h"
|
|
#include "EditKeyType.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNodeDataValueFileView
|
|
|
|
IMPLEMENT_DYNCREATE(CNodeDataValueFileView, CTreeView)
|
|
|
|
CNodeDataValueFileView::CNodeDataValueFileView()
|
|
{
|
|
m_hBoldItem = NULL;
|
|
}
|
|
|
|
CNodeDataValueFileView::~CNodeDataValueFileView()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CNodeDataValueFileView, CTreeView)
|
|
//{{AFX_MSG_MAP(CNodeDataValueFileView)
|
|
ON_COMMAND(ID_EXPANDALL, OnExpandall)
|
|
ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, OnItemexpanding)
|
|
ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
|
|
ON_NOTIFY_REFLECT(TVN_ITEMEXPANDED, OnItemexpanded)
|
|
ON_WM_CONTEXTMENU()
|
|
ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
|
|
ON_COMMAND(ID_VIEW_EDITKEY, OnViewEditkey)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNodeDataValueFileView drawing
|
|
|
|
void CNodeDataValueFileView::OnDraw(CDC* pDC)
|
|
{
|
|
CDocument* pDoc = GetDocument();
|
|
// TODO: add draw code here
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNodeDataValueFileView diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CNodeDataValueFileView::AssertValid() const
|
|
{
|
|
CTreeView::AssertValid();
|
|
}
|
|
|
|
void CNodeDataValueFileView::Dump(CDumpContext& dc) const
|
|
{
|
|
CTreeView::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNodeDataValueFileView message handlers
|
|
|
|
void CNodeDataValueFileView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
|
|
{
|
|
CTreeCtrl *pCtrl = &this->GetTreeCtrl();
|
|
|
|
if (lHint)
|
|
{
|
|
pCtrl->SetItemState(m_hBoldItem,0,TVIS_BOLD);
|
|
CNodeObject *pNode = (CNodeObject *)lHint;
|
|
HANDLE handle = pNode->ViewNode(pCtrl,NULL,2);
|
|
HTREEITEM hItem = (HTREEITEM)handle;
|
|
pCtrl->SetItemState(hItem,TVIS_BOLD,TVIS_BOLD);
|
|
m_hBoldItem = hItem;
|
|
pCtrl->EnsureVisible(hItem);
|
|
}
|
|
else
|
|
{
|
|
CNodeDataValueFileDoc *pDoc = (CNodeDataValueFileDoc *)GetDocument();
|
|
HTREEITEM hItem = (HTREEITEM)pDoc->GetNodeProject()->ViewNode(pCtrl,NULL,2);
|
|
// Expand the root item
|
|
pCtrl->Expand(hItem,TVE_EXPAND);
|
|
}
|
|
}
|
|
|
|
BOOL CNodeDataValueFileView::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
cs.style |= TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | TVS_FULLROWSELECT | TVS_HASBUTTONS; // TVS_LINESATROOT |;
|
|
return CTreeView::PreCreateWindow(cs);
|
|
}
|
|
|
|
void CNodeDataValueFileView::OnExpandall()
|
|
{
|
|
ExpandAll(GetTreeCtrl().GetSelectedItem());
|
|
}
|
|
|
|
int CNodeDataValueFileView::ExpandAll(HTREEITEM hParent)
|
|
{
|
|
CTreeCtrl *pCtrl = &this->GetTreeCtrl();
|
|
if (pCtrl->ItemHasChildren(hParent))
|
|
{
|
|
HTREEITEM hChildItem = pCtrl->GetChildItem(hParent);
|
|
while (hChildItem != NULL)
|
|
{
|
|
ExpandAll(hChildItem);
|
|
hChildItem = pCtrl->GetNextItem(hChildItem, TVGN_NEXT);
|
|
}
|
|
}
|
|
pCtrl->Expand(hParent,TVE_EXPAND);
|
|
return 0;
|
|
}
|
|
|
|
void CNodeDataValueFileView::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
/* NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
|
CTreeCtrl *pCtrl = &GetTreeCtrl();
|
|
HTREEITEM hItem = pNMTreeView->itemNew.hItem;
|
|
CNodeObject *pNode = (CNodeObject *)pCtrl->GetItemData(hItem);
|
|
CNodeObject *pParent = pNode->GetParentNode();
|
|
pNode->ViewNode(pCtrl,pParent?pCtrl->GetParentItem(hItem):NULL,3);
|
|
*pResult = 0;*/
|
|
}
|
|
|
|
void CNodeDataValueFileView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
|
CTreeCtrl *pCtrl = &GetTreeCtrl();
|
|
HTREEITEM hItem = pNMTreeView->itemNew.hItem;
|
|
CNodeObject *pNode = (CNodeObject *)pCtrl->GetItemData(hItem);
|
|
CNodeDataValueFileDoc *pDoc = (CNodeDataValueFileDoc *)GetDocument();
|
|
pDoc->m_pActiveChild = pNode;
|
|
pDoc->UpdateAllViews(this);
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CNodeDataValueFileView::OnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
|
CTreeCtrl *pCtrl = &GetTreeCtrl();
|
|
HTREEITEM hItem = pNMTreeView->itemNew.hItem;
|
|
CNodeObject *pNode = (CNodeObject *)pCtrl->GetItemData(hItem);
|
|
CNodeObject *pParent = pNode->GetParentNode();
|
|
pNode->ViewNode(pCtrl,pParent?pCtrl->GetParentItem(hItem):NULL,3);
|
|
*pResult = 0;
|
|
}
|
|
/*
|
|
void CNodeDataValueFileView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
|
|
|
CMenu menu;
|
|
//VERIFY(menu.CreateMenu());
|
|
VERIFY(menu.LoadMenu(IDR_CONTENTYPE));
|
|
CMenu *pPopup = menu.GetSubMenu(3);
|
|
VERIFY(pPopup);
|
|
POINT pt = pNMTreeView->ptDrag;
|
|
static int x=1;
|
|
//if (x)
|
|
// ClientToScreen(&pt);
|
|
//else
|
|
ScreenToClient(&pt);
|
|
// ClientToDoc(pt);
|
|
RECT rc;
|
|
//this->GetTreeCtrl().GetItemRect(pNMTreeView->itemNew.hItem,&rc,true);
|
|
|
|
*pResult = 0;
|
|
}
|
|
*/
|
|
void CNodeDataValueFileView::OnContextMenu(CWnd* pWnd, CPoint point)
|
|
{
|
|
ScreenToClient(&point);
|
|
HTREEITEM hItem = GetTreeCtrl().HitTest(point);
|
|
// CNodeObject *pNode = (CNodeObject *)GetTreeCtrl().GetItemData(hItem);
|
|
|
|
CMenu menu;
|
|
VERIFY(menu.LoadMenu(IDR_CONTENTYPE));
|
|
CMenu *pPopup = menu.GetSubMenu(3);
|
|
VERIFY(pPopup);
|
|
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd());
|
|
|
|
}
|
|
|
|
void CNodeDataValueFileView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
|
|
|
CMenu menu;
|
|
//VERIFY(menu.CreateMenu());
|
|
VERIFY(menu.LoadMenu(IDR_CONTENTYPE));
|
|
CMenu *pPopup = menu.GetSubMenu(3);
|
|
VERIFY(pPopup);
|
|
|
|
CTreeCtrl *pCtrl = &GetTreeCtrl();
|
|
|
|
HTREEITEM hItem = pCtrl->GetSelectedItem();
|
|
|
|
pCtrl->EnsureVisible(hItem);
|
|
RECT rc;
|
|
pCtrl->GetItemRect(hItem,&rc,true);
|
|
ClientToScreen(&rc);
|
|
|
|
|
|
//pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,rc.right,rc.top,AfxGetMainWnd());
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
extern CStringMap g_StringMap;
|
|
|
|
void CNodeDataValueFileView::OnViewEditkey()
|
|
{
|
|
CTreeCtrl *pCtrl = &GetTreeCtrl();
|
|
|
|
HTREEITEM hItem = pCtrl->GetSelectedItem();
|
|
|
|
if (hItem)
|
|
{
|
|
CNodeObject *pNode = (CNodeObject *)pCtrl->GetItemData(hItem);
|
|
if (pNode->GetClassID() == CLASS_CNODEDATAENTRY)
|
|
{
|
|
CNodeDataEntry *pEntry = (CNodeDataEntry *)pNode;
|
|
CEditKeyType dlg;
|
|
CString str;
|
|
pNode->GetName(str);
|
|
dlg.m_editName = str;
|
|
dlg.m_iCurSel = pEntry->GetKeyValue();
|
|
POSITION lpos = pEntry->GetKeyPos();
|
|
if (IDOK == dlg.DoModal())
|
|
{
|
|
g_StringMap.SetValue(lpos,dlg.m_iCurSel);
|
|
CContentTrackApp *pApp = (CContentTrackApp *)AfxGetApp();
|
|
pApp->UpdateKeys();
|
|
pApp->WritePropFile();
|
|
}
|
|
}
|
|
}
|
|
}
|