// MissionReport.h: interface for the CMissionReport class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MISSIONREPORT_H__6BB11838_FBA2_4633_9824_255A025665EF__INCLUDED_)
#define AFX_MISSIONREPORT_H__6BB11838_FBA2_4633_9824_255A025665EF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


namespace Adept
{
class Entity;
};

class CMissionReport;

class CZoneReport  
{
friend class CMissionReport;
protected:
	enum  BasicTypes { 
		MR_TURRET=0,
		MR_CULTURAL, 
		MR_MECH, 
		MR_VEHICLE, 
		MR_BUILDING, 
		MR_NAVPOINT,
		MR_DROPZONE,
		MR_AI, 
		MR_NONCOM,  
		MR_PATH,
		MR_CAMERASHIP,
		MR_EFFECT,
		MR_UNKNOWN,
		MR_OBJECTIVE,
		MR_SEARCHLIGHT,
		MR_TYPECOUNT
	} ; 

	class ReportModel
	{
	public:
	CString Name;
	BasicTypes Type;
	int Count;
	};

	class TileViolator
	{
	public:
	CString Name;
	};

	
	int BasicTypeCount[MR_TYPECOUNT];

	static char *BasicTypeName[];
	
	ReportModel *Models;
	TileViolator *Violators;
	int UniqueModelCount;
	int ViolatorCount;
	int EntityCount;

	BasicTypes GetType(Adept::Entity *entity);
	float StartX,StartZ;
	char RChar,CChar;
	virtual bool InZone(Adept::Entity *entity);	
public:
	void CountTypes(float x,float z);
	CZoneReport() {	Models=NULL; Violators=NULL; }
	int GetEntityCount() {return EntityCount;} 
	int GetModelCount() {return UniqueModelCount;}
	int GetViolatorCount() {return ViolatorCount;}
	void GetReport(CString &str);
	virtual ~CZoneReport();

};

class CMissionReport:public  CZoneReport 
{
protected:
	CZoneReport *ZoneRep;
	int ZoneCount;
	CString MissionName;
	void CountTypes();
	int *TileEntityCount;
	BYTE TileRows,TileCols;
public:
	CString GetMissionName() {return MissionName;}
	CMissionReport();
	bool InZone(Adept::Entity *entity) {return true;}	
	void GetReport(CString &str);
	virtual ~CMissionReport();

};


#endif // !defined(AFX_MISSIONREPORT_H__6BB11838_FBA2_4633_9824_255A025665EF__INCLUDED_)
