#ifndef Karte_H
#define Karte_H

#include <Datei.h>
#include <Vec2.h>
#include "../Team/Team.h"
#include "../Spieler/Spieler.h"
#include "../Objekt/SpielObjekt.h"
#include "KSGNetwork.h"
#include "Strukturen.h"

using namespace Framework;

class Karte
{
private:
	Vec2< int > gr��e;
	int spielerAnzahl;
	int teamAnzahl;
	Array< int > *spielerFarbe;
	Array< int > *teamFarbe;
	RCArray< Text > *teamName;
	Array< int > *teamGr��e;
	RCArray< RessourceStr > *ressources;
	RCArray< ObjektStr > *objekte;
	RCArray< SpielerStr > *spieler;
	RCArray< TeamStr > *teams;
	int ref;

public:
	// Konstruktor
	Karte();
	// Destruktor
	~Karte();
	// nicht constant
	void ladeSts( Datei *zDatei ); // call 1
	void ladeMap( Datei *zDatei, int mapId, KSGClient::SpielServerClient *zSpielKlient, Text *zGamePath ); // call 2
	// constant
	Vec2< int > getSize() const;
	Spieler *createSpieler( int sNum, Schrift *zSchrift, KSGClient::InformationServerClient *zInfoK, Animation2DData *zFStart, Animation2DData *zFBurn ) const;
	Team *createTeam( int tNum ) const;
	SpielObjekt *createObjekt( int oNum, Schrift *zSchrift ) const;
	int getMaxTeamAnzahl() const;
	int getMaxSpielerAnzahl() const;
	int getZeichnungAnzahl() const;
	int getTeamNummer( int sNum ) const;
	// Reference Counting
	Karte *getThis();
	Karte *release();
};

#endif