#if !defined(AFX_NFOPROPERTIESDLG_H__7D0F2A09_E333_46EC_98EA_63240423ECB0__INCLUDED_)
#define AFX_NFOPROPERTIESDLG_H__7D0F2A09_E333_46EC_98EA_63240423ECB0__INCLUDED_

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

typedef struct _TEAM_INFO
{
	int team_count;
	int team_num[8];
	int max_ton[8];
	int min_ton[8];
	int max_total_ton[8];
	int max_team_count[8];
	char skin[8];
	int alignment[8];
	_TEAM_INFO* pNext;
} TEAM_INFO;


typedef struct _BOT_INFO
{
	int rule_count;
	int bot_count[14];
	int team_num[14];
	int max_ton[14];
	int min_ton[14];
	int max_level[14];
	int min_level[14];
	_BOT_INFO* pNext;
} BOT_INFO;

typedef struct _SCRIPT_INFO
{
	char script[256];
	_SCRIPT_INFO* pNext;
} SCRIPT_INFO;

/////////////////////////////////////////////////////////////////////////////
// CNFOPropertiesDlg dialog

class CNFOPropertiesDlg : public CDialog
{
// Construction
public:
	CNFOPropertiesDlg(CWnd* pParent = NULL);   // standard constructor
	~CNFOPropertiesDlg();

// Dialog Data
	//{{AFX_DATA(CNFOPropertiesDlg)
	enum { IDD = IDD_NFOPROPERTY };
	CStatic	m_FileName;
	CButton	m_Restore;
	CButton	m_RemoveBot;
	CButton	m_EditBot;
	CListCtrl	m_BotList;
	CButton	m_AddBot;
	CButton	m_RemoveTeam;
	CButton	m_RemoveRule;
	CButton	m_EditTeam;
	CButton	m_EditRule;
	CButton	m_AddTeam;
	CButton	m_AddRule;
	CListCtrl	m_TeamList;
	CListCtrl	m_PropertyList;
	CEdit	m_LongName;
	CEdit	m_Link;
	CEdit	m_Info;
	CEdit	m_Author;
	//}}AFX_DATA


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

public:
	TEAM_INFO* m_pTeamInfo;
	BOT_INFO* m_pBotInfo;
	BOOL m_bTypeAvailable[GameTypeCount];
	SCRIPT_INFO* m_pScriptInfo[GameTypeCount];
	BOOL m_bSinglePlayer;
	INT m_iMaxTeam[GameTypeCount];
	INT m_iMaxAlignment[GameTypeCount];
	BOOL m_bEditRule;

	BOOL LoadNFO();
	BOOL SaveNFO();
	void RefreshBotList(BOT_INFO* pBotInfo, int nSelected);

	TEAM_INFO* FindTeamInfo(int index);
	BOOL AppendTeamInfo(TEAM_INFO* info);
	BOOL RemoveTeamInfo(int index);
	void RemoveAllTeamInfo();
	BOT_INFO* FindBotInfo(int index);
	BOOL AppendBotInfo(BOT_INFO* info);
	BOOL RemoveBotInfo(int index);
	void RemoveAllBotInfo();
	BOOL RemoveRuleFromBotInfo(BOT_INFO* info, int index);
	void RemoveAllScriptInfo();

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CNFOPropertiesDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnItemchangedNFOPropertyList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnNFOEditRule();
	afx_msg void OnNFOAddRule();
	virtual void OnOK();
	afx_msg void OnNFOAddTeam();
	afx_msg void OnNFOEditTeam();
	afx_msg void OnNFORemoveRule();
	afx_msg void OnNFORemoveTeam();
	afx_msg void OnItemchangedNFOTeamList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnNFOAddBot();
	afx_msg void OnItemchangedNFOBotList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnNFOEditBot();
	afx_msg void OnNFORemoveBot();
	afx_msg void OnRestore();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

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

#endif // !defined(AFX_NFOPROPERTIESDLG_H__7D0F2A09_E333_46EC_98EA_63240423ECB0__INCLUDED_)
