source-engine/hammer/op_output.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

232 lines
6.5 KiB
C++

//========= 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