#ifndef Strukturen_H
#define Strukturen_H

#include "KSGNetwork.h"
#include <Model2D.h>
#include <Bild.h>
#include <Datei.h>

using namespace Framework;

class RessourceStr
{
private:
	int id;
	int ref;
	Model2DData *m2d;
	Bild *bild;
	Text *pfad;

public:
	// Konstruktor
	RessourceStr( Datei *zDatei, int karteId, Text *zGamePath );
	// Destruktor
	~RessourceStr();
	// constant
	int getId() const;
	Model2DData *zReccourceM2() const;
	Bild *zReccourceTxt() const;
	// Reference Counting
	RessourceStr *getThis();
	RessourceStr *release();
};

class ObjektStr
{
private:
	int ref;

public:
	Punkt pos;
    float rot;
    float scale;
	int id;
	int m2d;
	int bild;
	int style;
	int maxStabilit�t;
	int maxEnergie;
	int energieRadius;
	double reparatur;
	double akkuLeistung;
	char team;

	// Konstruktor
	ObjektStr( Datei *zDatei );
	// Reference Counting
    ObjektStr *getThis();
    ObjektStr *release();
};

class SpielerStr
{
private:
	int ref;

public:
	int id;
	Punkt pos;
	double rot;
	double beschleunigung;
	int maxStabilit�t;
	int maxEnergie;
	double reparatur;
	double akkuLeistung;
	int laserIntensit�t;
	int laserEffizienz;
	int laserTempo;
	double wendigkeit;
    double antriebEffizienz;
    double energieSchild;
    double energieSchildEffizienz;
	int netzwerk;
	int skillPunkte;
	int m2d;
	int bild;

	// Konstruktor
	SpielerStr( Datei *zDatei );
	// Reference Counting
	SpielerStr *getThis();
	SpielerStr *release();
};

class TeamStr
{
private:
	int ref;

public:
	int id;
	int maxPunkte;
	double beschleunigung;
	int maxStabilit�t;
	int maxEnergie;
	double reparatur;
	double akkuLeistung;
	int laserIntensit�t;
	int laserEffizienz;
	int laserTempo;
	double wendigkeit;
    double antriebEffizienz;
    double energieSchild;
    double energieSchildEffizienz;
	int punkte;

	// Konstruktor
	TeamStr( Datei *zDatei );
	// Reference Counting
	TeamStr *getThis();
	TeamStr *release();
};

#endif