|
@@ -0,0 +1,129 @@
|
|
|
+#include "SpielerGUI.h"
|
|
|
+
|
|
|
+SpielerGUI::SpielerGUI( ResourceRegistry *zResources )
|
|
|
+{
|
|
|
+ resources = zResources->getThis();
|
|
|
+ spieler = 0;
|
|
|
+ schrift = zResources->getSchrift();
|
|
|
+ erf = zResources->zResource( R_GUI_ERF, 0 )->getImage( 0 );
|
|
|
+ erfRand = zResources->zResource( R_GUI_ERF_RAND, 0 )->getImage( 0 );
|
|
|
+ ausw = zResources->zResource( R_GUI_INVENTAR_AUSWAHL, 0 )->getImage( 0 );
|
|
|
+ invBg = zResources->zResource( R_GUI_INVENTAR_HINTERGRUND, 0 )->getImage( 0 );
|
|
|
+ invBgUsed = zResources->zResource( R_GUI_INVENTAR_HINTERGRUND_BENUTZT, 0 )->getImage( 0 );
|
|
|
+ lebenRand = zResources->zResource( R_GUI_LEBEN_RAND, 0 )->getImage( 0 );
|
|
|
+ levelRand = zResources->zResource( R_GUI_LEVEL_RAND, 0 )->getImage( 0 );
|
|
|
+ spielerBild = zResources->zResource( R_GUI_SPIELER, 0 )->getImage( 0 );
|
|
|
+ levelT = new TextFeld();
|
|
|
+ levelT->setStyle( TextFeld::Style::Text | TextFeld::Style::Center );
|
|
|
+ levelT->setSchriftZ( schrift->getThis() );
|
|
|
+ levelT->setText( "0" );
|
|
|
+ levelT->setSchriftFarbe( 0xFFFFFFFF );
|
|
|
+ levelT->setSize( 75, 20 );
|
|
|
+ levelT->setPosition( 162, 0 );
|
|
|
+ lebenB = new FBalken();
|
|
|
+ lebenB->setStyle( FBalken::Style::Sichtbar | FBalken::Style::FFarbe | FBalken::Style::L_R | FBalken::Style::Aktionen );
|
|
|
+ lebenB->setSize( 178, 18 );
|
|
|
+ lebenB->setFBgFarbe( 0xFF00FF00 );
|
|
|
+ lebenB->setSchriftZ( schrift->getThis() );
|
|
|
+ lebenB->setSFarbe( 0xFFFFFFFF );
|
|
|
+ lebenB->setSSize( 12 );
|
|
|
+ lebenB->setPosition( 111, 31 );
|
|
|
+ itemAnzahlT = new TextFeld();
|
|
|
+ itemAnzahlT->setStyle( TextFeld::Style::Text );
|
|
|
+ itemAnzahlT->setSchriftZ( schrift->getThis() );
|
|
|
+ itemAnzahlT->setSize( 40, 20 );
|
|
|
+ spielerInfo = new TextFeld();
|
|
|
+ spielerInfo->setStyle( TextFeld::Style::Text );
|
|
|
+ spielerInfo->setSchriftZ( schrift->getThis() );
|
|
|
+ spielerInfo->setSchriftFarbe( 0xFFA0A0A0 );
|
|
|
+ spielerInfo->setSize( 290, 150 );
|
|
|
+ spielerInfo->setPosition( 5, 225 );
|
|
|
+}
|
|
|
+
|
|
|
+SpielerGUI::~SpielerGUI()
|
|
|
+{
|
|
|
+ if( spieler )
|
|
|
+ spieler->release();
|
|
|
+ schrift->release();
|
|
|
+ erf->release();
|
|
|
+ erfRand->release();
|
|
|
+ ausw->release();
|
|
|
+ invBg->release();
|
|
|
+ invBgUsed->release();
|
|
|
+ lebenRand->release();
|
|
|
+ levelRand->release();
|
|
|
+ spielerBild->release();
|
|
|
+ levelT->release();
|
|
|
+ lebenB->release();
|
|
|
+ resources->release();
|
|
|
+ itemAnzahlT->release();
|
|
|
+ spielerInfo->release();
|
|
|
+}
|
|
|
+
|
|
|
+void SpielerGUI::setSpieler( Spieler *spieler )
|
|
|
+{
|
|
|
+ if( this->spieler )
|
|
|
+ this->spieler->release();
|
|
|
+ this->spieler = spieler;
|
|
|
+ int *buffer = spielerBild->getBuffer();
|
|
|
+ for( int i = 0; i < spielerBild->getBreite() * spielerBild->getHeight(); i++ )
|
|
|
+ {
|
|
|
+ if( buffer[ i ] == 0xFF202020 )
|
|
|
+ buffer[ i ] = spieler->getFarbe();
|
|
|
+ if( buffer[ i ] == 0xFF404040 && spieler->zTeam() )
|
|
|
+ buffer[ i ] = spieler->zTeam()->getFarbe();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void SpielerGUI::render( Bild &rObj )
|
|
|
+{
|
|
|
+ rObj.drawBild( 0, 0, 100, 100, *spielerBild );
|
|
|
+ rObj.drawBild( 162, 0, 75, 20, *levelRand );
|
|
|
+ levelT->setText( Text( spieler->getLevel() ) );
|
|
|
+ levelT->render( rObj );
|
|
|
+ rObj.drawBild( 105, 25, 190, 30, *lebenRand );
|
|
|
+ lebenB->reset();
|
|
|
+ lebenB->setAktionAnzahl( spieler->getMaxLeben() );
|
|
|
+ lebenB->aktionPlus( (int)spieler->getLeben() );
|
|
|
+ lebenB->render( rObj );
|
|
|
+ rObj.drawBild( 120, 60, 160, 25, *erfRand );
|
|
|
+ int erfBreite = (int)( ( 150.f / spieler->getMaxErfahrung() ) * spieler->getErfahrung() );
|
|
|
+ rObj.drawBildSkall( 125, 65, erfBreite, 15, *erf );
|
|
|
+ rObj.fillRegion( 37, 105, 225, 115, 0xA36629 );
|
|
|
+ for( int i = 0; i < 8; i++ )
|
|
|
+ {
|
|
|
+ int x = 42 + 55 * ( i % 4 );
|
|
|
+ int y = 110 + 55 * ( i / 4 );
|
|
|
+ if( spieler->getInventory().getSelectedIndex() == i )
|
|
|
+ rObj.drawBild( x - 5, y - 5, 60, 60, *ausw );
|
|
|
+ if( spieler->getInventory().getItemTyp( i ) == KEIN_GEGENSTAND )
|
|
|
+ rObj.drawBild( x, y, 50, 50, *invBg );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ rObj.drawBild( x, y, 50, 50, *invBgUsed );
|
|
|
+ rObj.alphaBild( x, y, 50, 50, *zResourceOfItem( spieler->getInventory().getItemTyp( i ), resources )->zImage( 0 ) );
|
|
|
+ if( spieler->getInventory().getAbklingzeit( i ) > 0 )
|
|
|
+ {
|
|
|
+ itemAnzahlT->setSchriftFarbe( 0xFFFF0000 );
|
|
|
+ itemAnzahlT->setText( Text( (int)( spieler->getInventory().getAbklingzeit( i ) * 100 ) / 100.f ) );
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ itemAnzahlT->setSchriftFarbe( 0xFFFFFFFF );
|
|
|
+ itemAnzahlT->setText( Text( spieler->getInventory().getItemAnzahl( spieler->getInventory().getItemTyp( i ) ) ) );
|
|
|
+ }
|
|
|
+ itemAnzahlT->setPosition( x + 5, y );
|
|
|
+ itemAnzahlT->render( rObj );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Text info = Text( "Eigenschaften:\n" ) +
|
|
|
+ "Lauftempo: " + (int)spieler->getLaufTempo() + " pixel/s\n" +
|
|
|
+ "Geschosstempo: " + (int)spieler->getGeschossTempo() + " pixel/s\n" +
|
|
|
+ "Rüstung: " + (int)spieler->getArmor() + " %\n" +
|
|
|
+ "Bonusschaden: " + (int)spieler->getSchadenBonus() + " %\n" +
|
|
|
+ "Lebensraub: " + (int)spieler->getLebensRaub() + " %\n" +
|
|
|
+ "Lebensregeneration: " + ((int)(spieler->getLebensRegenneration() * 100) / 100.f) + " /s\n" +
|
|
|
+ "Abklingzeitverringerung: " + (int)spieler->getAbklingZeitVerringerung();
|
|
|
+ spielerInfo->setText( info );
|
|
|
+ spielerInfo->render( rObj );
|
|
|
+}
|