Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

251 lines
10 KiB
C++

#if !defined(AFX_DLGOBJECTBASE_H__AF411833_39CE_4B0D_A270_FE0CD3E73C32__INCLUDED_)
#define AFX_DLGOBJECTBASE_H__AF411833_39CE_4B0D_A270_FE0CD3E73C32__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DlgObjectBase.h : header file
//
#include "dlgobjectproperties.h" // to get the common defines
#include "Childofdialogmessagepusher.h" // to get a child static that sends all it's children's messages to it's parent
//!!!!!WARNING!!!!!
// If you change any of the below typedefs you will have to be carefull to maintain the Allocate_... functions
// which support them. They need to know how to point internally to the various portions of the data when allocated
// since none of them use fixed size arrays internally.
//
typedef enum {
ePlus = 0,
eMinus,
eMultiply,
eDivide
} CDOPMATHTYPE;
/////////////////////////////////////////////////////////////////////////////
// CDlgObjectBalance dialog
class CDlgObjectBalance : public CDialog
{
public:
public:
// Construction
public:
CDlgObjectBalance(CWnd* pParent = NULL); // standard constructor
~CDlgObjectBalance();
// Dialog Data
//{{AFX_DATA(CDlgObjectBalance)
enum { IDD = IDD_OBJECTBALANCE };
CChildOfDialogMessagePusher m_staticPropertiesGroup;
CScrollBar m_sbScrollBarVert;
CScrollBar m_sbScrollBarHorz;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDlgObjectBalance)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
void CreateSubControlsForProperties();
void ClearObjectDataSet();
BOOL SaveObjectData();
BOOL LoadObjectData(LPCSTR szDirectoryToSearchFor /*Directory passed in must end in a backslash*/, DIRECTORYSEARCHTYPE eSearchType);
BOOL LoadDataFilesFromSubdirectory(CString strSubdirectory);
BOOL LoadObjectDataFromFile(CString strFullWeaponFilename, BOOL fReadOnly );
void OnOK();
void OnCancel();
BOOL DisableAllControls();
BOOL MoveCurSelDataToOrFromControls(BOOL fToControls);
public:
//
// These functions have to be called before DoModal is called since they set important information
//
//
// Sets the root directory to search under. Only goes one level deep currently
//
BOOL SetObjectFilesDirectory(LPCSTR lpszDirectoryPath);
//
// Sets the root file name type to search for like "*.data"
//
BOOL SetFileNameToSearchSubdirectoriesFor(LPCSTR lpszFileSearchString);
//
// Allows additional control over what files are accepted. ie... you can filter out "basic.data"
//
BOOL SetFileFilterCallBack(FileFilterCallback fnFilterFunction)
{
m_fnFilterFunction = fnFilterFunction;
return TRUE;
};
void SetHorizontalControlSize(int nSize) {m_nHorzControlSize = nSize;};
void SetAllowPresentToChange(BOOL fAllowPresentToChange) {m_fAllowPresentToChange = fAllowPresentToChange;};
//
// Specify the properties of the files that you want editted here.
//
//
// !!!WARNING: We only store the pointer, we don't copy the data so be sure to
// verify that the data is in scope the whole time the dialog is up.
//
BOOL SetPropertyListToEdit(CDOPPROPERTIES_TO_EDIT_ARRAY * ppteaPropertyToEdit)
{m_paPropertiesToEdit = ppteaPropertyToEdit; return TRUE;};
// Specifies whether the list box should show the whole name of the object including
// directory path. Cuts off everything up until the last "\"
BOOL ShowFullObjectNames(BOOL fShowFullObjectName)
{m_fShowFullObjectName = fShowFullObjectName; return TRUE;};
// Specifies whether the static for each property should show the whole name including
// the page name or just the entry name
BOOL ShowFullPropertyName(BOOL fShowFullPropertyName)
{m_fShowFullPropertyName = fShowFullPropertyName; return TRUE;};
BOOL ShowPageOnly() {m_fShowPageOnly = TRUE; m_fShowFullPropertyName = FALSE; return TRUE;};
BOOL ShowEntryOnly() {m_fShowPageOnly = FALSE; m_fShowFullPropertyName = FALSE; return TRUE;};
// Specify whether you want to search just the root directory, the
// first subdirectory or all subdirectories
BOOL SetSearchWhichSubdirectories(DIRECTORYSEARCHTYPE eSearchType)
{m_eSearchType = eSearchType; return TRUE;};
//
// These structure have to be setup correctly when allocated and should never be created on the stack
//
//
CDOPPROPERTIES_TO_EDIT_ARRAY * Allocate_CDOPPROPERTIES_TO_EDIT_ARRAY(int nPropertyCount, CDOPPROPERTIES_TO_EDIT_ARRAY * * ppCDOPPROPERTIES_TO_EDIT_ARRAY = NULL);
CDOPPROPERTIES_OBJECT_PROPERTIES * Allocate_CDOPPROPERTIES_OBJECT_PROPERTIES(int nPropertyCount, CDOPPROPERTIES_OBJECT_PROPERTIES * * ppCDOPPROPERTIES_OBJECT_PROPERTIES = NULL);
CDOPPROPERTIES_OBJECT_LIST * Allocate_CDOPPROPERTIES_OBJECT_LIST(int nObjectCount, int nPropertyCount, CDOPPROPERTIES_OBJECT_LIST ** ppCDOPPROPERTIES_OBJECT_LIST = NULL);
//
// Memcpy and memcmp can not be used on these structures since they contain pointers to memory
//
BOOL Copy_CDOPPROPERTIES_TO_EDIT_ARRAY(CDOPPROPERTIES_TO_EDIT_ARRAY * pCDOPPROPERTIES_TO_EDIT_ARRAY_DEST, CDOPPROPERTIES_TO_EDIT_ARRAY * pCDOPPROPERTIES_TO_EDIT_ARRAY_SRC);
BOOL Copy_CDOPPROPERTIES_OBJECT_PROPERTIES(CDOPPROPERTIES_OBJECT_PROPERTIES * pCDOPPROPERTIES_OBJECT_PROPERTIES_DEST, CDOPPROPERTIES_OBJECT_PROPERTIES * pCDOPPROPERTIES_OBJECT_PROPERTIES_SRC);
BOOL Copy_CDOPPROPERTIES_OBJECT_LIST(CDOPPROPERTIES_OBJECT_LIST * pCDOPPROPERTIES_OBJECT_LIST_DEST, CDOPPROPERTIES_OBJECT_LIST * pCDOPPROPERTIES_OBJECT_LIST_SRC);
BOOL IsEqual_CDOPPROPERTIES_TO_EDIT_ARRAY(CDOPPROPERTIES_TO_EDIT_ARRAY * pCDOPPROPERTIES_TO_EDIT_ARRAY1, CDOPPROPERTIES_TO_EDIT_ARRAY * pCDOPPROPERTIES_TO_EDIT_ARRAY2);
BOOL IsEqual_CDOPPROPERTIES_OBJECT_PROPERTIES(CDOPPROPERTIES_OBJECT_PROPERTIES * pCDOPPROPERTIES_OBJECT_PROPERTIES1, CDOPPROPERTIES_OBJECT_PROPERTIES * pCDOPPROPERTIES_OBJECT_PROPERTIES2);
BOOL IsEqual_CDOPPROPERTIES_OBJECT_LIST(CDOPPROPERTIES_OBJECT_LIST * pCDOPPROPERTIES_OBJECT_LIST1, CDOPPROPERTIES_OBJECT_LIST * pCDOPPROPERTIES_OBJECT_LIST2);
//
// This function allows you to create the properties array easily by calling this function with the format:
// CreatePropertiesToEditArray(2,
// efloat, "GameData\Heat",
// eint, "GameData\Ammo");
//
CDOPPROPERTIES_TO_EDIT_ARRAY * CreatePropertiesToEditArray(int nCount, ...);
BOOL UpdateControlData(BOOL fToControls);
LPCSTR GetEntryNameToPropertyName(LPCSTR szPropertyName);
LPCSTR GetPageNameToPropertyName(LPCSTR szPropertyName) ;
LPCSTR GetShortObjectName(LPCSTR szObjectName);
void AlterAllProperties(CDOPMATHTYPE eMathType);
void AlterProperty(int nProperty, void * pValueToAlterWith, CDOPMATHTYPE eMath);
// Override to do parameter checking
inline virtual BOOL OnNotify_Public(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {return OnNotify(wParam, lParam, pResult);};
inline virtual BOOL OnCommand_Public(WPARAM wParam, LPARAM lParam) {return OnCommand(wParam, lParam);};
virtual int DoModal();
protected:
BOOL GetBOOLFromControl(UINT uiID, BOOL * pfDest);
BOOL GetfloatFromControl(UINT uiID, float * pfltDest);
BOOL GetLPSTRFromControl(UINT uiID, LPSTR pszDest);
BOOL GetintFromControl(UINT uiID, int * pnDest);
BOOL GetVector3DFromControl(UINT uiID, float * pfltx, float * pflty, float * pfltz);
BOOL GetBOOLFromButton(UINT uiID, BOOL * pfDest);
BOOL SetBOOLToButton(UINT uiID, BOOL fSrc);
BOOL SetBOOLToControl(UINT uiID, BOOL fSrc);
BOOL SetfloatToControl(UINT uiID, float fltSrc);
BOOL SetLPSTRToControl(UINT uiID, LPSTR pszSrc);
BOOL SetintToControl(UINT uiID, int nSrc);
BOOL SetVector3DToControl(UINT uiID, float fltx, float flty, float fltz);
void DoTheMath(int * pValue, int * pModifier, CDOPMATHTYPE eMath);
void DoTheMath(float * pValue, float * pModifier, CDOPMATHTYPE eMath);
void ClearModifierCells();
BOOL IsCreatedControl(int uID);
BOOL IsCreatedPresentButton(int uID);
BOOL IsCreatedApplyButton(int uID);
void SetAllApplyButtons(int nState);
virtual BOOL OnNotifyCreatedControl(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
virtual BOOL OnCommandCreatedControl(WPARAM wParam, LPARAM lParam);
BOOL IsRectTotallyWithinHorizontally(LPRECT pRectToTest, LPRECT pOuterRect); // used for scrolling
BOOL IsHorizontallyScrollable(CWnd * pChildWindow);
int GetStateForApplyAllButton(); // this returns 0 for all off, 1 for all on, and 2 for a mix
// Data
// Object list, these are the "files" that we are editting.
CDOPPROPERTIES_OBJECT_LIST * m_pObjectList;
// This is the properties list that the caller is requesting. It is just a pointer to
// the callers memory.
CDOPPROPERTIES_TO_EDIT_ARRAY * m_paPropertiesToEdit;
// Root directory to search in
CString m_strObjectFilesRootDirectory;
// Wild card specification for what files we are looking for ie... "*.data"
CString m_strFileNameToSearchSubdirectoriesFor;
// This function if specified gets called for ever file we think should be added
// it will
FileFilterCallback m_fnFilterFunction;
BOOL m_fShowFullObjectName;
BOOL m_fShowFullPropertyName;
DIRECTORYSEARCHTYPE m_eSearchType;
UINT m_nLastControlID;
BOOL m_fDirty;
BOOL m_fAllowPresentToChange;
int m_nMaxVisibleVert;
int m_nCurScrollPosVert;
int m_nScrollIncrementVert;
int m_nMaxVisibleHorz;
int m_nCurScrollPosHorz;
int m_nScrollIncrementHorz;
BOOL m_fShowPageOnly; // show only page, or show only entry when not showing full length
int m_nHorzControlSize;
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDlgObjectBalance)
virtual BOOL OnInitDialog();
afx_msg void OnValuePlus();
afx_msg void OnValueMultiply();
afx_msg void OnValueMinus();
afx_msg void OnValueDivide();
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnFillAllValues();
afx_msg void OnCheckallApplyButtons();
//}}AFX_MSG
afx_msg BOOL OnEraseBkgnd( CDC* pDC );
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DLGOBJECTBASE_H__AF411833_39CE_4B0D_A270_FE0CD3E73C32__INCLUDED_)