#include "SpielObjekt.h"
#include "Define.h"

// Inhalt der SpielObjekt Klasse aus SpielObjekt.h
// Konstruktor
SpielObjekt::SpielObjekt( ObjektStr *zStr )
    : Model2DObject()
{
	id = zStr->id;
	style = zStr->style;
	stability = zStr->maxStability;
	energie = zStr->maxEnergie;
	maxStability = zStr->maxStability;
	maxEnergie = zStr->maxEnergie;
	energieRadius = zStr->energieRadius;
	reparatur = zStr->reparatur;
	akkuLeistung = zStr->akkuLeistung;
	team = 0;
}

// Destruktor
SpielObjekt::~SpielObjekt()
{
	if( team )
		team->release();
}

// nicht constant
void SpielObjekt::setTeam( Team *team )
{
	if( this->team )
		this->team->release();
	this->team = team;
}

bool SpielObjekt::tick( const WeltInfo &info, double zeit )
{
	repAbk -= zeit;
	if( repAbk < 0 )
		repAbk = 0;
	akkuAbk -= zeit;
	if( akkuAbk < 0 )
		akkuAbk = 0;
	if( !repAbk )
	{
		stability += reparatur * zeit;
		if( stability > maxStability )
			stability = maxStability;
	}
	if( !akkuAbk )
	{
		if( !team )
		{
			energie -= akkuLeistung * zeit;
			if( energie < 0 )
				energie = 0;
		}
		else
		{
			energie += akkuLeistung * zeit;
			if( energie > maxEnergie )
				energie = maxEnergie;
		}
	}
    return Model2DObject::tick( info, zeit );
}

// constant
Team *SpielObjekt::zTeam() const
{
	return team;
}