#pragma once

#include <list>
#include "SpriteStamp.h"
#include "SpriteRenderer.h"
#include "LayerSpriteCompare.h"

using namespace std;

typedef list<SpriteStamp*> SpriteStampList;
typedef list<SpriteStamp*>::iterator SpriteStampListIterator;

class Layer{
public:
	Layer(SpriteRenderer* spriteRenderer);
	~Layer(void);

	// render sprite stamps in layer
	void render();
	// add sprite stamp to layer
	void addSpriteStamp(SpriteStamp* spriteStamp);
	// remove sprite stamp from layer
	void removeSpriteStamp(SpriteStamp* spriteStamp);
	// sort sprite stamps
	void sortSpriteStamps();

private:
	SpriteStampList sprites;        // collection of sprite stamps
    SpriteRenderer* spriteRenderer; // pointer to sprite renderer
};

