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.
187 lines
4.6 KiB
C++
187 lines
4.6 KiB
C++
// ObjWindow.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "MW4GameEd.h"
|
|
#include "ObjWindow.h"
|
|
#include "InstanceWindow.h"
|
|
#include "EditEntityDlg.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CObjWindow dialog
|
|
|
|
|
|
CObjWindow::CObjWindow(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CObjWindow::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CObjWindow)
|
|
//}}AFX_DATA_INIT
|
|
curSort = SORT_TYPE;
|
|
mechTab = NULL;
|
|
buildingTab = NULL;
|
|
vehicleTab = NULL;
|
|
miscTab = NULL;
|
|
}
|
|
|
|
CObjWindow::~CObjWindow()
|
|
{
|
|
if (mechTab)
|
|
{
|
|
if (mechTab->pszText)
|
|
delete [] mechTab->pszText;
|
|
Unregister_Pointer(mechTab);
|
|
delete mechTab;
|
|
}
|
|
if (buildingTab)
|
|
{
|
|
if (buildingTab->pszText)
|
|
delete [] buildingTab->pszText;
|
|
Unregister_Pointer(buildingTab);
|
|
delete mechTab;
|
|
}
|
|
if (vehicleTab)
|
|
{
|
|
if (vehicleTab->pszText)
|
|
delete [] vehicleTab->pszText;
|
|
Unregister_Pointer(vehicleTab);
|
|
delete mechTab;
|
|
}
|
|
if (miscTab)
|
|
{
|
|
if (miscTab->pszText)
|
|
delete [] miscTab->pszText;
|
|
Unregister_Pointer(miscTab);
|
|
delete mechTab;
|
|
}
|
|
}
|
|
|
|
void CObjWindow::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CObjWindow)
|
|
DDX_Control(pDX, IDC_OBJECTTAB, m_TabCtrl);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CObjWindow, CDialog)
|
|
//{{AFX_MSG_MAP(CObjWindow)
|
|
ON_BN_CLICKED(IDC_INSTANCEALINGMENTBTN, OnInstancealingmentbtn)
|
|
ON_BN_CLICKED(IDC_INSTANCETYPEBTN, OnInstancetypebtn)
|
|
ON_NOTIFY(TCN_SELCHANGE, IDC_OBJECTTAB, OnSelchangeObjecttab)
|
|
ON_WM_CREATE()
|
|
ON_WM_LBUTTONDBLCLK()
|
|
ON_WM_LBUTTONUP()
|
|
ON_WM_RBUTTONDOWN()
|
|
ON_WM_RBUTTONDBLCLK()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CObjWindow message handlers
|
|
|
|
void CObjWindow::OnInstancealingmentbtn()
|
|
{
|
|
curSort = SORT_ALIGNMENT;
|
|
((CInstanceWindow*)GetParent())->FillTabBox();
|
|
}
|
|
|
|
void CObjWindow::OnInstancetypebtn()
|
|
{
|
|
curSort = SORT_TYPE;
|
|
((CInstanceWindow*)GetParent())->FillTabBox();
|
|
}
|
|
|
|
void CObjWindow::OnSelchangeObjecttab(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NMHDR lParam;
|
|
|
|
lParam.hwndFrom = m_hWnd;
|
|
lParam.idFrom = IDC_OBJECTTAB;
|
|
lParam.code = m_TabCtrl.GetCurSel();
|
|
|
|
GetParent()->SendMessage(WM_NOTIFY,WPARAM(IDC_OBJECTTAB),LPARAM(&lParam));
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
int CObjWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CDialog::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
mechTab = new TCITEM;
|
|
Register_Pointer(mechTab);
|
|
|
|
mechTab->mask = TCIF_TEXT;
|
|
mechTab->cchTextMax = strlen("Mechs"); // Localize
|
|
mechTab->pszText = new char[mechTab->cchTextMax + 1];
|
|
strcpy(mechTab->pszText,"Mechs"); // Localize
|
|
|
|
buildingTab = new TCITEM;
|
|
Register_Pointer(buildingTab);
|
|
|
|
buildingTab->mask = TCIF_TEXT;
|
|
buildingTab->cchTextMax = strlen("Buildings"); // Localize
|
|
buildingTab->pszText = new char[buildingTab->cchTextMax + 1];
|
|
strcpy(buildingTab->pszText,"Buildings"); // Localize
|
|
|
|
vehicleTab = new TCITEM;
|
|
Register_Pointer(vehicleTab);
|
|
|
|
vehicleTab->mask = TCIF_TEXT;
|
|
vehicleTab->cchTextMax = strlen("Vehicles"); // Localize
|
|
vehicleTab->pszText = new char[vehicleTab->cchTextMax + 1];
|
|
strcpy(vehicleTab->pszText,"Vehicles"); // Localize
|
|
|
|
miscTab = new TCITEM;
|
|
Register_Pointer(miscTab);
|
|
|
|
miscTab->mask = TCIF_TEXT;
|
|
miscTab->cchTextMax = strlen("Misc"); // Localize
|
|
miscTab->pszText = new char[miscTab->cchTextMax + 1];
|
|
strcpy(miscTab->pszText,"Misc"); // Localize
|
|
|
|
return 0;
|
|
}
|
|
|
|
void CObjWindow::OnLButtonDblClk(UINT nFlags, CPoint point)
|
|
{
|
|
GetParent()->SendMessage(WM_LBUTTONDBLCLK,WPARAM(nFlags),MAKELPARAM(point.x,point.y));
|
|
CDialog::OnLButtonDblClk(nFlags, point);
|
|
}
|
|
|
|
void CObjWindow::OnRButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
GetParent()->SendMessage(WM_RBUTTONDOWN,WPARAM(nFlags),MAKELPARAM(point.x,point.y));
|
|
CDialog::OnRButtonDown(nFlags, point);
|
|
}
|
|
|
|
void CObjWindow::OnLButtonUp(UINT nFlags, CPoint point)
|
|
{
|
|
GetParent()->SendMessage(WM_LBUTTONUP,WPARAM(nFlags),MAKELPARAM(point.x,point.y));
|
|
CDialog::OnLButtonUp(nFlags, point);
|
|
}
|
|
|
|
void CObjWindow::OnOK()
|
|
{
|
|
// someone in MFC thought it would be a good idea to have this function get called everytime
|
|
// the ENTER key is pressed.
|
|
|
|
return;
|
|
}
|
|
|
|
void CObjWindow::OnCancel()
|
|
{
|
|
// someone in MFC thought it would be a good idea to have this function get called everytime
|
|
// the ESCAPE key is pressed.
|
|
|
|
return;
|
|
}
|
|
|
|
void CObjWindow::OnRButtonDblClk(UINT nFlags, CPoint point)
|
|
{
|
|
GetParent()->SendMessage(WM_RBUTTONDBLCLK,WPARAM(nFlags),MAKELPARAM(point.x,point.y));
|
|
CDialog::OnRButtonDblClk(nFlags, point);
|
|
}
|