#pragma once

//-----------------------------------------------------
// Include Files
//-----------------------------------------------------
#include "Matrix2D.h"
#include "LevelProp.h"
#include "Item.h"
#include "Archer.h"
class ResourceLoader;
class Painter;
class InputState;
class Image;
class CollisionMesh;

//-----------------------------------------------------
// Level Class									
//-----------------------------------------------------
class Level : public LevelProp
{
public:
	Level(ResourceLoader* resourceLoaderPtr,const String& imageName,const char* meshName, const char* raycastMeshName);				// Constructor
	virtual ~Level();		// Destructor

	//-------------------------------------------------
	// Eigen methoden								
	//-------------------------------------------------
	void Paint(Painter *painterPtr, Matrix2D matTransform);
	void Tick(InputState *inputStatePtr);
	void CheckCollision(Character *characterPtr) const;
	void CheckArrowCollision(Arrow *arrowPtr) const;
	void CheckCollision(LevelProp *levelPropPtr, InputState *inputStatePtr) const;

private: 
	//-------------------------------------------------
	// Datamembers								
	//-------------------------------------------------
	static const int MAX_NR_OF_PITS =2;
	CollisionMesh *m_PitCollisionMeshPtrArr[MAX_NR_OF_PITS];
	CollisionMesh *m_RayCastCollisionMeshPtr;
	// -------------------------
	// Disabling default copy constructor and default 
	// assignment operator.
	// -------------------------
	Level(const Level& yRef);									
	Level& operator=(const Level& yRef);	
};

 
