#pragma once

#include "TileStamp.h"
#include "SpriteRenderer.h"
#include <list>
#include <map>
#include <fstream>
#include "StampCompare.h"

using namespace std;

typedef list<Stamp*> StampList;
typedef list<Stamp*>::iterator StampListIterator;

class GroundManager
{
public:
	GroundManager(void);
	~GroundManager(void);
	void init( SpriteRenderer* spriteRenderer, ScreenManager* screenManager );
	HRESULT loadGround( char* groundFile );
	void unloadGround();
	HRESULT renderGround();
	HRESULT addMoveableSprite( SpriteStamp* mainSprite );
    HRESULT removeMoveableSprite( SpriteStamp* mainSprite );
private:
	Stamp* getNextAvailableStamp();
	StampList moveableStamps;
	StampList nonMoveableStamps;
	SpriteRenderer* spriteRenderer;
	StampCompare stampCompare;
	StampListIterator nonMoveableIter;
	StampListIterator moveableIter;
};

