Files
firestorm/Gameleap/code/mw4/Code/MW4GameEd2/ObjManFrame.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

223 lines
6.0 KiB
C++

// ObjManFrame.cpp : implementation file
//
#include "stdafx.h"
#include "mw4gameed2.h"
#include "ObjManFrame.h"
#include "ObjTreeView.h"
#include "ObjListView.h"
#include "ObjectManager.h"
#include "Refresher.h"
#include <GameOS\ToolOS.hpp>
/////////////////////////////////////////////////////////////////////////////
// CObjManFrame
//IMPLEMENT_DYNCREATE(CObjManFrame, CFrameWnd)
CObjManFrame::CObjManFrame(ObjectManager *objman,CWnd *parent)
{
ObjMan=objman;
TreePane=NULL;
ListPane=NULL;
m_ImageList.Create(16,16,ILC_COLOR8 + ILC_MASK,ICONCOUNT,0);
// NOTE: the ordering here must exactly match the enum values in
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_BLANK));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_MECH));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_VEHICLE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_AIRPLANE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_BUILDING));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_NONCOM));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_CULTURAL));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_NAVPOINT));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_CAMERASHIP));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_DROPZONE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_LATTICE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_PATH));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_NODE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_MISSION));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_GROUP));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_BOUNDS));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_WATER));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_POINTLIGHT));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_AMBIENTLIGHT));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_SPOTLIGHT));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_INFINITELIGHT));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_LOOKUPLIGHT));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FXGEN));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FLAG));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_TEAM));
BOOL res=LoadFrame(IDR_OBJMAN,WS_OVERLAPPED|WS_THICKFRAME|WS_CAPTION|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_SYSMENU,parent);
Verify(res);
}
CObjManFrame::~CObjManFrame()
{
}
BEGIN_MESSAGE_MAP(CObjManFrame, CFrameWnd)
//{{AFX_MSG_MAP(CObjManFrame)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_COMMAND(ID_EDIT_DELETE, OnEditDelete)
ON_COMMAND(ID_EDIT_GROUP, OnEditGroup)
ON_COMMAND(ID_EDIT_UNGOUP, OnEditUngoup)
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CObjManFrame message handlers
int CObjManFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
m_splitter.CreateStatic(this,1,2);
m_splitter.CreateView(0,0,RUNTIME_CLASS(CObjTreeView),CSize(200,1024),NULL);
m_splitter.CreateView(0,1,RUNTIME_CLASS(CObjListView),CSize(200,1024),NULL);
TreePane=(CObjTreeView *)m_splitter.GetPane(0,0);
ListPane=(CObjListView *)m_splitter.GetPane(0,1);
TreePane->ObjMan=ListPane->ObjMan=ObjMan;
TreePane->MyList=ListPane;
ListPane->MyTree=TreePane;
TreePane->SetImageList(&m_ImageList);
ListPane->SetImageList(&m_ImageList);
RecalcLayout();
return 0;
}
void CObjManFrame::Refresh(bool expandlist)
{
if(TreePane)
{
TreePane->Refresh((GUIObjectList *)ObjMan,expandlist);
if(!expandlist) RefreshList();
}
}
void CObjManFrame::OnClose()
{
ShowWindow(SW_HIDE);
// CFrameWnd::OnClose();
}
void CObjManFrame::SaveToReg()
{
int tdat;
CRect rct;
CString wintitle;
GetWindowText(wintitle);
GetWindowRect(&rct);
gos_SaveDataToRegistry((char *)(LPCSTR)(wintitle+"Rect"),&rct,sizeof(rct));
tdat=IsWindowVisible(); gos_SaveDataToRegistry((char *)(LPCSTR)(wintitle+"Visible"),&tdat,sizeof(tdat));
}
void CObjManFrame::LoadFromReg()
{
int tdat;
unsigned long size;
CRect rct;
CString wintitle;
GetWindowText(wintitle);
size=sizeof(rct);
gos_LoadDataFromRegistry((char *)(LPCSTR)(wintitle+"Rect"),&rct,&size);
if(size) SetWindowPos(NULL,rct.left,rct.top,rct.Width(),rct.Height(),SWP_NOZORDER);
size=sizeof(tdat);
gos_LoadDataFromRegistry((char *)(LPCSTR)(wintitle+"Visible"),&tdat,&size);
if(size && tdat==0)
ShowWindow(SW_HIDE);
else
ShowWindow(SW_SHOW);
}
void CObjManFrame::UpdateSelState()
{
if(ListPane) ListPane->UpdateSelState();
}
void CObjManFrame::RefreshList()
{
if(TreePane && ListPane) ListPane->Refresh(TreePane->GetSelList());
}
void CObjManFrame::OnEditCopy()
{
if(!ObjMan->CopySelection())
MessageBox("Copy Operation Failed","Copy Fail",MB_OK);
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditCut()
{
if(!ObjMan->CutSelection())
MessageBox("Cut Operation Failed","Cut Fail",MB_OK);
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditDelete()
{
ObjMan->DeleteSelection();
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditGroup()
{
ObjMan->GroupSelected();
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditPaste()
{
ObjMan->PasteClipBoard();
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditRedo()
{
ObjMan->Redo();
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditUndo()
{
ObjMan->Undo();
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnEditUngoup()
{
ObjMan->UnGroupSelected();
Refresher::Instance->WorldRefresh();
}
void CObjManFrame::OnUpdateEditRedo(CCmdUI* pCmdUI)
{
pCmdUI->Enable(ObjMan->CanRedo());
}
void CObjManFrame::OnUpdateEditUndo(CCmdUI* pCmdUI)
{
pCmdUI->Enable(ObjMan->CanUndo());
}