#include "OverlayManager.h"

OverlayManager::OverlayManager(){

}

void OverlayManager::init(SpriteRenderer* newSpriteRenderer) {
    spriteRenderer = newSpriteRenderer;

	groundLayer = new Layer( spriteRenderer );
    roofLayer = new Layer( spriteRenderer );
    skyLayer = new Layer( spriteRenderer );
    fontLayer = new Layer( spriteRenderer );
    fadeLayer = new Layer( spriteRenderer );
}

OverlayManager::~OverlayManager(void){
    if ( groundLayer ) {
        delete groundLayer;
        groundLayer = 0;
    }
    if ( roofLayer ) {
        delete roofLayer;
        roofLayer = 0;
    }
    if ( skyLayer ) {
        delete skyLayer;
        skyLayer = 0;
    }
    if ( fontLayer ) {
        delete fontLayer;
        fontLayer = 0;
    }
    if ( fadeLayer ) {
        delete fadeLayer;
        fadeLayer = 0;
    }
}

void OverlayManager::render(){
    Layer* aLayer;
	for(int i = GROUND; i <= FADE; i++){
        aLayer = getLayer( ( layerType ) i );
		aLayer->render();
	}
}

void OverlayManager::addToLayer(SpriteStamp* spriteStamp, layerType layer){
    getLayer( layer )->addSpriteStamp( spriteStamp );
}

Layer* OverlayManager::getLayer( layerType layer ) {
    Layer* aLayer;

    switch( layer ) {
        case GROUND:
            aLayer = groundLayer;
            break;
        case ROOF:
            aLayer = roofLayer;
            break;
        case SKY:
            aLayer = skyLayer;
            break;
        case FONT:
            aLayer = fontLayer;
            break;
        case FADE:
            aLayer = fadeLayer;
            break;
    }

    return aLayer;
}

SpriteRenderer* OverlayManager::getSpriteRenderer(){
    return spriteRenderer;
}
