Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

125 lines
2.5 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef OBJECTBAR_H
#define OBJECTBAR_H
#ifdef _WIN32
#pragma once
#endif
#include "AutoSelCombo.h"
#include "HammerBar.h"
#include "FilteredComboBox.h"
class CMapView;
class BoundBox;
class CMapClass;
class Vector;
class CPrefab;
#define MAX_PREV_SEL 12
class CObjectBar : public CHammerBar, public CFilteredComboBox::ICallbacks
{
public:
CObjectBar();
BOOL Create(CWnd *pParentWnd);
static LPCTSTR GetDefaultEntityClass(void);
virtual BOOL PreTranslateMessage(MSG* pMsg);
void UpdateListForTool(int iTool);
void SetupForBlockTool();
void DoHideControls();
CMapClass *CreateInBox(BoundBox *pBox, CMapView *pView = NULL);
BOOL GetPrefabBounds(BoundBox *pBox);
// If this is on, then it'll randomize the yaw when entities are placed.
bool UseRandomYawOnEntityPlacement();
void DoDataExchange(CDataExchange *pDX);
bool IsEntityToolCreatingPrefab( void );
bool IsEntityToolCreatingEntity( void );
CMapClass *BuildPrefabObjectAtPoint( Vector const &HitPos );
// CFilteredComboBox::ICallbacks implementation.
virtual void OnTextChanged( const char *pText );
private:
enum
{
listPrimitives,
listPrefabs,
listEntities
} ListType;
//{{AFX_DATA(CMapViewBar)
enum { IDD = IDD_OBJECTBAR };
//}}AFX_DATA
CFilteredComboBox m_CreateList; // this should really be m_ItemList
CComboBox m_CategoryList;
CEdit m_Faces;
CSpinButtonCtrl m_FacesSpin;
CPrefab* FindPrefabByName( const char *pName );
void LoadBlockCategories( void );
void LoadEntityCategories( void );
void LoadPrefabCategories( void );
void LoadBlockItems( void );
void LoadEntityItems( void );
void LoadPrefabItems( void );
int UpdatePreviousSelection( int iTool );
int GetPrevSelIndex(DWORD dwGameID, int *piNewIndex = NULL);
BOOL EnableFaceControl(CWnd *pWnd, BOOL bModifyWnd);
int iEntitySel;
int iBlockSel;
// previous selections:
DWORD m_dwPrevGameID;
struct tagprevsel
{
DWORD dwGameID;
struct tagblock
{
CString strItem;
CString strCategory;
} block;
struct tagentity
{
CString strItem;
CString strCategory;
} entity;
} m_PrevSel[MAX_PREV_SEL];
int m_iLastTool;
protected:
afx_msg void UpdateControl(CCmdUI*);
afx_msg void UpdateFaceControl(CCmdUI*);
afx_msg void OnCategorylistSelchange();
afx_msg void OnChangeCategory();
DECLARE_MESSAGE_MAP()
};
#endif // OBJECTBAR_H