123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #include "SpielObjekt.h"
- #include "../Define.h"
- #include "../../Initialisierung/Initialisierung.h"
- // Inhalt der SpielObjekt Klasse aus SpielObjekt.h
- // Konstruktor
- SpielObjekt::SpielObjekt( ZeichnungStr *zStr, Schrift *zSchrift )
- {
- pos = zStr->pos;
- id = zStr->id;
- mdl = new Model2D();
- mdl->setStyle( Model2D::Style::Sichtbar | Model2D::Style::Textur );
- style = zStr->style;
- stabilität = zStr->maxStabilität;
- energie = zStr->maxEnergie;
- maxStabilität = zStr->maxStabilität;
- maxEnergie = zStr->maxEnergie;
- energieRadius = zStr->energieRadius;
- reparatur = zStr->reparatur;
- akkuLeistung = zStr->akkuLeistung;
- team = 0;
- nText = initTextFeld( 0, 0, 152, 30, zSchrift, TextFeld::Style::Text | TextFeld::Style::Rahmen | TextFeld::Style::Center |
- TextFeld::Style::Hintergrund | TextFeld::Style::HAlpha, "" );
- ref = 1;
- }
- // Destruktor
- SpielObjekt::~SpielObjekt()
- {
- mdl->release();
- if( team )
- team->release();
- nText->release();
- }
- // nicht constant
- void SpielObjekt::setModelData( Model2DData *data )
- {
- mdl->setModel( data );
- }
- void SpielObjekt::setTextur( Bild *textur )
- {
- mdl->setTextur( textur );
- }
- void SpielObjekt::setTeam( Team *team )
- {
- if( this->team )
- this->team->release();
- this->team = team;
- }
- void SpielObjekt::tick()
- {
- repAbk -= TICK;
- if( repAbk < 0 )
- repAbk = 0;
- akkuAbk -= TICK;
- if( akkuAbk < 0 )
- akkuAbk = 0;
- if( !repAbk )
- {
- stabilität += reparatur * TICK;
- if( stabilität > maxStabilität )
- stabilität = maxStabilität;
- }
- if( !akkuAbk )
- {
- if( !team )
- {
- energie -= akkuLeistung * TICK;
- if( energie < 0 )
- energie = 0;
- }
- else
- {
- energie += akkuLeistung * TICK;
- if( energie > maxEnergie )
- energie = maxEnergie;
- }
- }
- }
- void SpielObjekt::render( Bild &zRObj )
- {
- mdl->render( zRObj );
- }
- void SpielObjekt::renderLeben( Bild &zRObj )
- {
- nText->setPosition( mdl->getPosition() - Punkt( 76, (int)( mdl->zModel()->maxP.y * mdl->getSize() ) + 30 ) );
- nText->render( zRObj );
- int teamF = team ? team->farbe : 0;
- double teamStab = team ? team->maxStabilität : 0;
- double teamEner = team ? team->maxEnergie : 0;
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 4, 150, teamF );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 25, 150, teamF );
- int l = (int)( stabilität * 100 / ( maxStabilität + teamStab ) * 1.5 + 0.5 );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 1, l, 0xFF00FF00 );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 2, l, 0xFF00FF00 );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 3, l, 0xFF00FF00 );
- int e = (int)( energie * 100 / ( maxEnergie + teamEner ) * 1.5 + 0.5 );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 26, e, 0xFFFFFF00 );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 27, e, 0xFFFFFF00 );
- zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 28, e, 0xFFFFFF00 );
- }
- // constant
- Team *SpielObjekt::zTeam() const
- {
- return team;
- }
- // Reference Counting
- SpielObjekt *SpielObjekt::getThis()
- {
- ref++;
- return this;
- }
- SpielObjekt *SpielObjekt::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
|