/** 
 * \file Terrain.h
 * \brief Header file containing CTerrain class. CTerrain class renders all scenography in the game level.
 * 
 * \author Petar Bajic, MPE (C) All Rights Reserved, Homepage: www.mystic-peanut.com
 * \date January, 16 2007.
 */

#include "d3dx9.h"
#include "ModelStatic.h"
#include "XFileEntity.h"
#include "Forest.h"

class CPGrass;

/**
 * \brief CTerrain class renders all scenography in the game level.
 *
 * CTerrain manages all static meshes on the game level.
 * There is no collision detection with the terrain and no multiple scenes.
 * \author Petar Bajic \date January, 16 2007.
 */
class CTerrain
{
public:
	CTerrain();
	~CTerrain();
	bool Init(HWND hWnd, LPDIRECT3DDEVICE9 device, int screenWidth, int screenHeight);
	void OnRender(LPDIRECT3DDEVICE9 pd3dDevice, bool details);
	void OnFrameMove(LPDIRECT3DDEVICE9 pd3dDevice, double fTime, float fElapsedTime, bool details);
	void OnLostDevice();
	void OnResetDevice(LPDIRECT3DDEVICE9 pd3dDevice);

	CModelStatic* m_Base;
	CModelStatic* m_Sky;
	CModelStatic* m_Clouds;
	CModelStatic* m_Fence;
	CModelStatic* m_Hill1;
	CModelStatic* m_Hill2;
	CModelStatic* m_Hill3;
	
	CModelStatic* m_Barrel;
	CModelStatic* m_Trough;
	CModelStatic* m_Shed;
	CModelStatic* m_Tree1;
	CModelStatic* m_Tree2;
	CModelStatic* m_Tree3;
	CModelStatic* m_House;
	CModelStatic* m_Barn;
	CModelStatic* m_Tractor;
	
	CPGrass* m_Grass;
	CModelStatic* m_Grass2;
	CModelStatic* m_Grass3;
	CForest* m_Forest;
	C3DForest* m_3DForest;

	CXFileEntity* m_Bird;
};