123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "SpielObjekt.h"
- #include "../Define.h"
- #include "../../Initialisierung/Initialisierung.h"
- #include <Textur2D.h>
- // Inhalt der SpielObjekt Klasse aus SpielObjekt.h
- // Konstruktor
- SpielObjekt::SpielObjekt( ObjektStr *zStr, Schrift *zSchrift )
- : Model2DObject()
- {
- id = zStr->id;
- 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, "" );
- }
- // Destruktor
- SpielObjekt::~SpielObjekt()
- {
- if( team )
- team->release();
- nText->release();
- }
- // nicht constant
- void SpielObjekt::setTextur( Bild *textur )
- {
- Textur2D *t = new Textur2D();
- t->setTexturZ( textur );
- __super::setTextur( t );
- }
- 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 )
- {
- stabilität += reparatur * zeit;
- if( stabilität > maxStabilität )
- stabilität = maxStabilität;
- }
- if( !akkuAbk )
- {
- if( !team )
- {
- energie -= akkuLeistung * zeit;
- if( energie < 0 )
- energie = 0;
- }
- else
- {
- energie += akkuLeistung * zeit;
- if( energie > maxEnergie )
- energie = maxEnergie;
- }
- }
- __super::tick( info, zeit );
- return 1;
- }
- void SpielObjekt::render( Mat3<float> &kamMat, Bild &zRObj, const char *kamName )
- {
- if( Text( "minimap" ).istGleich( kamName ) )
- return;
- nText->setPosition( (Punkt)( kamMat * (getPosition() - Punkt( 76, (int)( zModel()->maxP.y * 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;
- }
|