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
|