You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
4.1 KiB
181 lines
4.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef OBJECTPROPERTIES_H |
|
#define OBJECTPROPERTIES_H |
|
#pragma once |
|
|
|
#include "MapClass.h" |
|
#include "EditGameClass.h" |
|
#include "ObjectPage.h" |
|
#include "OP_Groups.h" |
|
#include "AnchorMgr.h" |
|
|
|
|
|
class COP_Entity; |
|
class COP_Flags; |
|
class COP_Output; |
|
class COP_Input; |
|
class COP_Model; |
|
|
|
enum LayoutType_t; |
|
|
|
|
|
// |
|
// Wrap map classes in CObject so we can use runtime identification |
|
// to pass edit data to the object pages. |
|
// |
|
class editCMapClass : public CObject, public CMapClass |
|
{ |
|
DECLARE_DYNAMIC(editCMapClass) |
|
|
|
public: |
|
// kludge: |
|
MAPCLASSTYPE GetType() { return NULL; } |
|
BOOL IsMapClass(MAPCLASSTYPE Type) { return FALSE; } |
|
}; |
|
|
|
|
|
class editCEditGameClass : public CObject, public CEditGameClass |
|
{ |
|
DECLARE_DYNAMIC(editCEditGameClass) |
|
}; |
|
|
|
|
|
class CObjectProperties : public CPropertySheet |
|
{ |
|
DECLARE_DYNAMIC(CObjectProperties) |
|
|
|
public: |
|
|
|
CObjectProperties(void); |
|
virtual ~CObjectProperties(void); |
|
|
|
CObjectProperties(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0); |
|
CObjectProperties(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0); |
|
|
|
inline void UpdateGrouplist(void); |
|
|
|
PVOID GetEditObject(CRuntimeClass *pType); |
|
PVOID GetEditObjectFromMapObject(CMapClass *pobj, CRuntimeClass *pType); |
|
void CopyDataToEditObjects(CMapClass *pobj); |
|
|
|
void SetPageToOutput(CEntityConnection *pConnection); |
|
void SetPageToInput(CEntityConnection *pConnection); |
|
|
|
BOOL SetupPages(void); |
|
void CreatePages(void); |
|
void SaveData(void); |
|
|
|
void LoadDataForPages(int iPage = -1); |
|
|
|
void SetObjectList(const CMapObjectList *pObjectList); |
|
void MarkDataDirty(); |
|
|
|
|
|
void SetOutputButtonState(int nState); |
|
void SetInputButtonState(int nState); |
|
|
|
// Overrides |
|
// ClassWizard generated virtual function overrides |
|
//{{AFX_VIRTUAL(CObjectProperties) |
|
virtual BOOL OnInitDialog(); |
|
//}}AFX_VIRTUAL |
|
|
|
protected: |
|
|
|
void AddObjectExpandGroups(CMapClass *pObject); |
|
void ReloadData(); |
|
|
|
LayoutType_t GetLayout(void); |
|
void GetTabsForLayout(LayoutType_t eLayoutType, bool &bEntity, bool &bGroups, bool &bFlags, bool &bModel); |
|
|
|
void CreateButtons(void); |
|
|
|
void UpdateOutputButton(void); |
|
void UpdateInputButton(void); |
|
|
|
void SaveActivePage(void); |
|
void RestoreActivePage(void); |
|
|
|
void UpdateAnchors( CWnd *pPage ); |
|
|
|
CAnchorMgr m_AnchorMgr; |
|
|
|
// |
|
// Pages. |
|
// |
|
COP_Entity *m_pEntity; |
|
COP_Groups *m_pGroups; |
|
COP_Flags *m_pFlags; |
|
COP_Output *m_pOutput; |
|
COP_Input *m_pInput; |
|
COP_Model *m_pModel; |
|
|
|
// |
|
// instance button |
|
// |
|
CButton *m_pInstanceButton; |
|
|
|
// |
|
// Input/output connection buttons |
|
// |
|
CButton *m_pInputButton; |
|
CButton *m_pOutputButton; |
|
|
|
HICON m_hIconOutputGood; |
|
HICON m_hIconOutputBad; |
|
HICON m_hIconInputGood; |
|
HICON m_hIconInputBad; |
|
|
|
CPropertyPage *m_pDummy; // |
|
bool m_bDummy; // |
|
|
|
CMapObjectList m_DstObjects; // list of objects we work on |
|
const CMapObjectList *m_pOrgObjects; // list of input object we will work on |
|
CObjectPage **m_ppPages; // Pointers to the pages that are currently in use |
|
int m_nPages; // Number of pages currently in use |
|
CObjectPage *m_pLastActivePage; // Used for restoring the last active page when changing selection. |
|
|
|
bool m_bDataDirty; // true if selected object somehow changed etc |
|
bool m_bCanEdit; // true if the object can be edited |
|
|
|
|
|
//{{AFX_MSG(CObjectProperties) |
|
afx_msg void OnOK(void); |
|
afx_msg void OnApply(void); |
|
afx_msg void OnCancel(void); |
|
afx_msg void OnInputs(void); |
|
afx_msg void OnOutputs(void); |
|
afx_msg void OnEditInstance(void); |
|
afx_msg void OnClose(); |
|
afx_msg void OnPaint(); |
|
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); |
|
afx_msg void OnSize( UINT nType, int cx, int cy ); |
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); |
|
//}}AFX_MSG |
|
|
|
DECLARE_MESSAGE_MAP() |
|
|
|
friend CObjectPage; |
|
|
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
inline void CObjectProperties::UpdateGrouplist(void) |
|
{ |
|
if (m_pGroups != NULL) |
|
{ |
|
m_pGroups->UpdateGroupList(); |
|
} |
|
} |
|
|
|
|
|
#endif // OBJECTPROPERTIES_H
|
|
|