#ifndef Karte_H
#define Karte_H

#include <Datei.h>
#include <Vec2.h>
#include "STS.h"
#include "Team.h"
#include "SpielObjekt.h"

using namespace Framework;

class Karte
{
private:
	Vec2< int > size;
	RCArray< RessourceStr > *ressources;
	RCArray< ObjektStr > *objekte;
	RCArray< SpielerStr > *spieler;
	RCArray< TeamStr > *teams;
	SpielerTeamStruktur *sts;
	int ref;

public:
	// Konstruktor
	Karte();
	// Destruktor
	~Karte();
	// nicht constant
    void ladeDaten( Datei *zDatei, SSDatenbankV *zDb, SpielerTeamStruktur *zSts, char *tmpPfad, int kId );
	// constant
	Vec2< int > getSize() const;
	Spieler *createSpieler( int sNum ) const;
	Team *createTeam( int tNum ) const;
	SpielObjekt *createObjekt( int oNum ) const;
	int getMaxTeamAnzahl() const;
	int getMaxSpielerAnzahl() const;
	int getObjektAnzahl() const;
	// Reference Counting
	Karte *getThis();
	Karte *release();
};

#endif