#include "Karte.h"
#include <Punkt.h>
#include <Rahmen.h>
#include "..\Kamera\Kamera.h"

// Inhalt der Karte Klasse aus Karte.h
// Konstruktor
Karte::Karte()
{
	karteId = 0;
	map = new Bild();
	rahmen = new LRahmen();
	rahmen->setFarbe( 0xFFFFFFFF );
	rahmen->setRamenBreite( 2 );
	ref = 1;
}

// Destruktor
Karte::~Karte()
{
	map->release();
	rahmen->release();
}

// nicht constant
void Karte::setSize( int br, int h� )
{
	map->neuBild( br, h�, 0xFF000000 );
	rahmen->setSize( br, h� );
}

void Karte::setId( int id )
{
	karteId = id;
}

void Karte::render( Kamera *zKam, Bild &zRObj )
{
	rahmen->setPosition( zKam->getRX( 0 ), zKam->getRY( 0 ) );
	zRObj.drawBild( rahmen->getX(), rahmen->getY(), map->getBreite(), map->getHeight(), *map );
	rahmen->render( zRObj );
}

// constant
int Karte::getId() const
{
	return karteId;
}

int Karte::getBreite() const
{
	return map->getBreite();
}

int Karte::getHeight() const
{
	return map->getHeight();
}

Bild *Karte::zMap() const
{
	return ( map->getBreite() != 0 && map->getHeight() != 0 ) ? map : 0;
}

// Reference Counting
Karte *Karte::getThis()
{
	ref++;
	return this;
}

Karte *Karte::release()
{
	ref--;
	if( !ref )
		delete this;
	return 0;
}