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.
231 lines
6.5 KiB
231 lines
6.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef OP_OUTPUT_H |
|
#define OP_OUTPUT_H |
|
#pragma once |
|
|
|
#include "ObjectPage.h" |
|
#include "Resource.h" |
|
#include "TargetNameCombo.h" |
|
#include "MapEntity.h" |
|
#include "ToolPickEntity.h" |
|
#include "AutoSelCombo.h" |
|
#include "AnchorMgr.h" |
|
|
|
|
|
#define OUTPUT_LIST_NUM_COLUMNS 6 |
|
|
|
|
|
class COP_Output; |
|
|
|
|
|
enum SortDirection_t; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: A little glue object that connects the entity picker tool to our dialog. |
|
//----------------------------------------------------------------------------- |
|
class COP_OutputPickEntityTarget : public IPickEntityTarget |
|
{ |
|
public: |
|
|
|
void AttachEntityDlg(COP_Output *pDlg) { m_pDlg = pDlg; } |
|
void OnNotifyPickEntity(CToolPickEntity *pTool); |
|
void AttachDlgItem( int nItem ) { m_nDlgItem = nItem; } |
|
|
|
private: |
|
int m_nDlgItem; |
|
COP_Output *m_pDlg; |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: A list of connections and entites that send them. |
|
//----------------------------------------------------------------------------- |
|
class COutputConnection |
|
{ |
|
public: |
|
CEntityConnectionList* m_pConnList; |
|
CMapEntityList* m_pEntityList; |
|
bool m_bIsValid; |
|
bool m_bOwnedByAll; // Connection used by all selected entities |
|
}; |
|
|
|
|
|
class COP_Output : public CObjectPage, public CFilteredComboBox::ICallbacks |
|
{ |
|
public: |
|
static CImageList *m_pImageList; |
|
static CEntityConnectionList* m_pConnectionBuffer; // Stores connections for copy/pasting |
|
static void EmptyCopyBuffer(void); |
|
|
|
public: |
|
|
|
DECLARE_DYNCREATE(COP_Output) |
|
|
|
// Construction |
|
COP_Output(void); |
|
~COP_Output(void); |
|
|
|
virtual void UpdateData( int Mode, PVOID pData, bool bCanEdit ); |
|
void SetSelectedConnection(CEntityConnection *pConnection); |
|
bool ShouldShowHiddenTargets(); |
|
|
|
protected: |
|
|
|
virtual void OnTextChanged( const char *pText ); |
|
|
|
void AddEntityConnections(CMapEntity *pEntity, bool bFirst); |
|
void AddConnection(CEntityConnection *pConnection); |
|
void RemoveAllEntityConnections(void); |
|
void UpdateConnectionList(void); |
|
void ResizeColumns(void); |
|
|
|
void SetSelectedItem(int nItem); |
|
void SetSelectedConnections(CEntityConnectionList &List); |
|
|
|
// Validation functions |
|
bool ValidateConnections(COutputConnection *pOutputConn, bool bVisibilityCheck); |
|
void UpdateValidityButton(void); |
|
|
|
// Edit controls |
|
void UpdateEditControls(void); |
|
void EnableEditControls(bool bValue = true); |
|
void UpdateItemValidity(int nItem); |
|
void EnableTarget(bool bEnable); |
|
void EnableParam(bool bEnable); |
|
bool bSkipEditControlRefresh; |
|
|
|
// Functions for updating edited connections |
|
void UpdateEditedInputs(void); |
|
void UpdateEditedOutputs(void); |
|
void UpdateEditedTargets(void); |
|
void UpdateEditedDelays(void); |
|
void UpdateEditedFireOnce(void); |
|
void UpdateEditedParams(void); |
|
|
|
// Fuctions for reacting to combo box changes |
|
void OutputChanged(void); |
|
void InputChanged(void); |
|
|
|
void SortListByColumn(int nColumn, SortDirection_t eDirection); |
|
void SetSortColumn(int nColumn, SortDirection_t eDirection); |
|
void UpdateColumnHeaderText(int nColumn, bool bIsSortColumn, SortDirection_t eDirection); |
|
|
|
CMapEntityList m_EntityList; // Filtered m_pObjectList that only includes map entities |
|
const CMapEntityList* m_pMapEntityList; // List of all entities in the map. |
|
CEntityConnectionList m_EditList; // List of selected connections being edited |
|
|
|
void UpdateEntityList(); // Generates m_EntityList from m_pObjectList |
|
|
|
protected: |
|
|
|
CAnchorMgr m_AnchorMgr; |
|
|
|
CEditGameClass *m_pEditGameClass; |
|
CMapEntity *m_pEntity; |
|
bool m_bNoParamEdit; |
|
|
|
// |
|
// Cached data for sorting the list view. |
|
// |
|
int m_nSortColumn; // Current column used for sorting. |
|
SortDirection_t m_eSortDirection[OUTPUT_LIST_NUM_COLUMNS]; // Last sort direction per column. |
|
|
|
bool m_bPickingEntities; |
|
|
|
// ######################################## |
|
// Message editing |
|
// ######################################## |
|
void SetConnection(CEntityConnectionList *pConnectionList); |
|
|
|
void SetMapEntityList(const CMapEntityList *pMapEntityList); |
|
|
|
void AddEntityOutputs(CMapEntity *pEntity); |
|
|
|
void FillInputList(void); |
|
void FillOutputList(void); |
|
void FillTargetList(void); |
|
|
|
void FilterInputList(void); |
|
void FilterOutputList(void); |
|
void FilterTargetList(void); |
|
void FilterEntityOutputs(CMapEntity *pEntity); |
|
|
|
void StopPicking(void); |
|
|
|
CClassInput* GetInput(char *szInput, int nSize); |
|
CClassOutput* GetOutput(char *szOutput, int nSize); |
|
CMapEntityList* GetTarget(char *szTarget, int nSize); |
|
|
|
void UpdateCombosForSelectedInput(CClassInput *pInput); |
|
void UpdateCombosForSelectedOutput(CClassOutput *pOutput); |
|
|
|
// ######################################### |
|
|
|
//{{AFX_DATA(COP_Output) |
|
enum { IDD = IDD_OBJPAGE_OUTPUT }; |
|
CListCtrl m_ListCtrl; |
|
CAutoSelComboBox m_ComboOutput; |
|
CTargetNameComboBox m_ComboTarget; |
|
CAutoSelComboBox m_ComboInput; |
|
CButton m_CheckBoxFireOnce; |
|
CButton m_ctlShowHiddenTargetsAsBroken; |
|
CButton m_AddControl; |
|
CButton m_PasteControl; |
|
CButton m_DeleteControl; |
|
|
|
CString m_strOutput; |
|
CString m_strTarget; |
|
CString m_strInput; |
|
CString m_strParam; |
|
float m_fDelay; |
|
BOOL m_bFireOnce; |
|
//}}AFX_DATA |
|
|
|
// ClassWizard generate virtual function overrides |
|
//{{AFX_VIRTUAL(COP_Output) |
|
virtual void DoDataExchange(CDataExchange* pDX); |
|
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT *pResult); |
|
virtual BOOL OnInitDialog(void); |
|
virtual void OnDestroy(void); |
|
//}}AFX_VIRTUAL |
|
|
|
// Generated message map functions |
|
//{{AFX_MSG(COP_Output) |
|
afx_msg void OnAdd(void); |
|
afx_msg void OnCopy(void); |
|
afx_msg void OnPaste(void); |
|
afx_msg void OnSize( UINT nType, int cx, int cy ); |
|
afx_msg void OnDelete(void); |
|
afx_msg void OnMark(void); |
|
afx_msg void OnPickEntity(void); |
|
afx_msg void OnPickEntityParam(void); |
|
afx_msg void OnSelChangeInput(void); |
|
afx_msg void OnEditUpdateInput(void); |
|
afx_msg void OnSelChangeOutput(void); |
|
afx_msg void OnEditUpdateOutput(void); |
|
afx_msg void OnSelChangeParam(void); |
|
afx_msg void OnEditUpdateParam(void); |
|
afx_msg void OnEditDelay(void); |
|
afx_msg void OnFireOnce(void); |
|
afx_msg void OnShowHiddenTargetsAsBroken(); |
|
//}}AFX_MSG |
|
|
|
DECLARE_MESSAGE_MAP() |
|
|
|
private: |
|
bool m_bEntityParamTarget; |
|
COP_OutputPickEntityTarget m_PickEntityTarget; |
|
CString m_strLastParam; |
|
bool m_bIgnoreTextChanged; |
|
|
|
friend class COP_OutputPickEntityTarget; |
|
public: |
|
}; |
|
|
|
#endif // OP_OUTPUT_H
|
|
|