#if !defined(AFX_EDITENTITYDLG_H__C262B693_F353_11D2_B195_00C04F682855__INCLUDED_)
#define AFX_EDITENTITYDLG_H__C262B693_F353_11D2_B195_00C04F682855__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// EditEntityDlg.h : header file
//

#define EDIT_GAME_MODEL				0
#define EDIT_DAMAGE_OBJECTARMOR		1
#define EDIT_DAMAGE_OBJECTINTERNAL	2
#define EDIT_SUBSYSTEM				3

class UndoGameModelChanges :
	public Stuff::Plug
{
public:

	UndoGameModelChanges() :
		Plug(Plug::DefaultData)
	{}

	CString		attribute_name;
	CString		attribute_value;
};

class UndoDamageObjectChanges :
	public Stuff::Plug
{
public:

	UndoDamageObjectChanges() :
		Plug(Plug::DefaultData)
	{}

	CString			name;
	Stuff::Scalar	value;
};

/////////////////////////////////////////////////////////////////////////////
// EditEntityDlg dialog

class EditEntityDlg : public CDialog
{
// Construction
public:

	CString m_Title;

	EditEntityDlg(CWnd* pParent = NULL, Adept::Entity *entity = NULL,int type = EDIT_GAME_MODEL, void* data = NULL);   // standard constructor
	~EditEntityDlg();

	int
		timer;
	bool
		needsSave;
	bool
		newGameModel;
	bool
		warned;
	int
		dlgType;
	void*
		exData;

// Dialog Data
	//{{AFX_DATA(EditEntityDlg)
	enum { IDD = IDD_EDITENTITYDLG };
	CEdit	m_gameModelEdit;
	CEdit	m_floatingEdit;
	CListBox	m_entityValueList;
	CButton	m_CancelBtn;
	CListBox	m_entityPropertiesList;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(EditEntityDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

	Adept::Entity
		*selectedEntity;

	ChainOf<UndoGameModelChanges*>		modelUndoChain;
	ChainOf<UndoDamageObjectChanges*>	damageUndoChain;
// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(EditEntityDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnDblclkEntityProperties();
	afx_msg void OnSelchangeEntityProperties();
	afx_msg void OnSelchangeEntityValues();
	afx_msg void OnTimer(UINT nIDEvent);
	virtual void OnOK();
	virtual void OnCancel();
	afx_msg void OnGamemodelsavebtn();
	afx_msg void OnChangeEntityeditbox();
	afx_msg void OnKillfocusEntityeditbox();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnMyok();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

	void InitGameModel();
	void InitDamageObjectArmor();
	void InitDamageObjectInternal();
	void InitSubsystem();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_EDITENTITYDLG_H__C262B693_F353_11D2_B195_00C04F682855__INCLUDED_)
