|
@@ -2,6 +2,7 @@
|
|
|
#include "../../Initialisierung/Initialisierung.h"
|
|
|
#include "../Karte/Karte.h"
|
|
|
#include "../Define.h"
|
|
|
+#include <Textur2D.h>
|
|
|
|
|
|
// Inhalt der Spieler Klasse aus Spieler.h
|
|
|
// Konstruktor
|
|
@@ -64,18 +65,41 @@ Spieler::Spieler( InformationKlientV *zInfoK, Schrift *zSchrift, SpielerStr *zSt
|
|
|
// Destruktor
|
|
|
Spieler::~Spieler()
|
|
|
{
|
|
|
- ship->release();
|
|
|
- info->release();
|
|
|
- if( team )
|
|
|
- team->release();
|
|
|
- if( name )
|
|
|
- name->release();
|
|
|
+ ship->release();
|
|
|
+ info->release();
|
|
|
+ if( team )
|
|
|
+ team->release();
|
|
|
+ if( name )
|
|
|
+ name->release();
|
|
|
+ flammenL->release();
|
|
|
+ flammenR->release();
|
|
|
+ flammenM->release();
|
|
|
+}
|
|
|
+
|
|
|
+double Spieler::calculateLaserCost()
|
|
|
+{
|
|
|
+ double kosten = ( laserIntensität + team->laserIntensität + ( laserTempo + team->laserTempo ) / 5 ) - ( laserEffizienz + team->laserEffizienz );
|
|
|
+ if( kosten < 1 )
|
|
|
+ kosten = 1;
|
|
|
+ return kosten;
|
|
|
}
|
|
|
|
|
|
// nicht constant
|
|
|
-void Spieler::setModelData( Model2DData *data )
|
|
|
+void Spieler::setModelData( Model2DData *data, Animation2DData *zFStart, Animation2DData *zFBurn )
|
|
|
{
|
|
|
ship->setModel( data );
|
|
|
+ flammenM = new Textur2D();
|
|
|
+ flammenM->addAnimationZ( zFStart->getThis() );
|
|
|
+ flammenM->addAnimationZ( zFBurn->getThis() );
|
|
|
+ flammenL = new Textur2D();
|
|
|
+ flammenL->addAnimationZ( zFStart->getThis() );
|
|
|
+ flammenL->addAnimationZ( zFBurn->getThis() );
|
|
|
+ flammenR = new Textur2D();
|
|
|
+ flammenR->addAnimationZ( zFStart->getThis() );
|
|
|
+ flammenR->addAnimationZ( zFBurn->getThis() );
|
|
|
+ ship->setTextur( flammenL->getThis(), "engine_l" );
|
|
|
+ ship->setTextur( flammenR->getThis(), "engine_r" );
|
|
|
+ ship->setTextur( flammenM->getThis(), "engine_m" );
|
|
|
}
|
|
|
|
|
|
void Spieler::setAccountId( int accId )
|
|
@@ -111,7 +135,9 @@ void Spieler::setSpielerFarbe( int fc, Bild *zTextur )
|
|
|
shb->alphaPixelDP( i, buffer[ i ] );
|
|
|
}
|
|
|
}
|
|
|
- ship->setTextur( shb );
|
|
|
+ Textur2D *textur = new Textur2D();
|
|
|
+ textur->setTexturZ( shb );
|
|
|
+ ship->setTextur( textur, "ship" );
|
|
|
}
|
|
|
|
|
|
void Spieler::setGeschwindigkeit( double xSpeed, double ySpeed )
|
|
@@ -136,6 +162,28 @@ void Spieler::setTastataturStatus( TastaturStatus ts, bool aktiv, int sZ, Karte
|
|
|
setMoveZeit( z, zMap );
|
|
|
tastatur[ ts ] = aktiv;
|
|
|
setMoveZeit( -z, zMap );
|
|
|
+ if( flammenM && flammenR && flammenL )
|
|
|
+ {
|
|
|
+ switch( ts )
|
|
|
+ {
|
|
|
+ case T_GAS:
|
|
|
+ if( aktiv )
|
|
|
+ flammenM->setAnimation( 0 );
|
|
|
+ else
|
|
|
+ flammenM->setAnimation( -1 );
|
|
|
+ break;
|
|
|
+ case T_ROT_L:
|
|
|
+ if( aktiv )
|
|
|
+ flammenR->setAnimation( 0 );
|
|
|
+ else
|
|
|
+ flammenR->setAnimation( -1 );
|
|
|
+ case T_ROT_R:
|
|
|
+ if( aktiv )
|
|
|
+ flammenL->setAnimation( 0 );
|
|
|
+ else
|
|
|
+ flammenL->setAnimation( -1 );
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
bool Spieler::tick( Karte *zMap )
|
|
@@ -147,6 +195,9 @@ bool Spieler::tick( Karte *zMap )
|
|
|
reinkAbk -= tv;
|
|
|
if( reinkAbk < 0 )
|
|
|
reinkAbk = 0;
|
|
|
+ flammenM->tick( tv );
|
|
|
+ flammenL->tick( tv );
|
|
|
+ flammenR->tick( tv );
|
|
|
if( !reinkAbk && !amLeben )
|
|
|
{ // Wiederbelebung
|
|
|
//wiederbelebung( spielZeit );
|
|
@@ -209,6 +260,12 @@ void Spieler::renderLeben( Bild &zRObj )
|
|
|
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 );
|
|
|
+ int e2 = (int)( (energie - calculateLaserCost() ) * 100 / ( maxEnergie + team->maxEnergie ) * 1.5 + 0.5 );
|
|
|
+ if( e2 > 0 )
|
|
|
+ {
|
|
|
+ zRObj.drawLinieV( nText->getX() + e2, nText->getY() + 26, 3, 0xFFFFFFFF );
|
|
|
+ zRObj.drawLinieV( nText->getX() + e2 + 1, nText->getY() + 26, 3, 0xFFFFFFFF );
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void Spieler::renderMinimap( Bild &zRObj, Karte *zMap )
|
|
@@ -324,6 +381,9 @@ void Spieler::wiederbelebung()
|
|
|
ship->setPosition( pos );
|
|
|
for( int i = 0; i < T_MAX; i++ )
|
|
|
tastatur[ i ] = 0;
|
|
|
+ flammenM->setAnimation( -1 );
|
|
|
+ flammenL->setAnimation( -1 );
|
|
|
+ flammenR->setAnimation( -1 );
|
|
|
amLeben = 1;
|
|
|
}
|
|
|
|
|
@@ -425,10 +485,7 @@ void Spieler::setMoveZeit( int z, Karte *zMap )
|
|
|
|
|
|
void Spieler::hatGeschossen()
|
|
|
{
|
|
|
- double kosten = ( laserIntensität + team->laserIntensität + ( laserTempo + team->laserTempo ) / 5 ) - ( laserEffizienz + team->laserEffizienz );
|
|
|
- if( kosten < 1 )
|
|
|
- kosten = 1;
|
|
|
- energie -= kosten;
|
|
|
+ energie -= calculateLaserCost();
|
|
|
schussAbk = 1;
|
|
|
schüsse++;
|
|
|
}
|