123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- #include "Ship.h"
- #include "../../Initialisierung/Initialisierung.h"
- #include <MausEreignis.h>
- #include <Rahmen.h>
- #include <Fortschritt.h>
- using namespace Framework;
- int getStellen( double d )
- {
- int ret = 0;
- for( int i = 1; d >= i; i *= 10 )
- ret++;
- return ret;
- }
- // Inhalt der Ship Klasse aus Ship.h
- // Konstruktor
- Ship::Ship( Schrift *zSchrift )
- {
- ram = new LRahmen();
- ram->setSize( 200, 282 );
- ram->setPosition( Punkt( BildschirmGröße().x - 210, 10 ) );
- ram->setFarbe( 0xFFFFFFFF );
- spieler = initTextFeld( 5, 5, 190, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
- stabilität = initTextFeld( 5, 30, 165, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
- energie = initTextFeld( 5, 55, 165, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
- stabilitätB = new FBalken();
- stabilitätB->setPosition( 5, 30 );
- stabilitätB->setSize( 165, 20 );
- stabilitätB->setHintergrundFarbe( 0xFF000000 );
- stabilitätB->setFBgFarbe( 0xFF55FF55 );
- stabilitätB->setLinienRahmenFarbe( 0xFF00FF00 );
- stabilitätB->setLinienRahmenBreite( 1 );
- stabilitätB->setFRFarbe( 0xFF00FF00 );
- stabilitätB->setFRBreite( 1 );
- stabilitätB->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::Hintergrund | FBalken::Style::FFarbe | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
- energieB = new FBalken();
- energieB->setPosition( 5, 55 );
- energieB->setSize( 165, 20 );
- energieB->setHintergrundFarbe( 0xFF000000 );
- energieB->setFBgFarbe( 0xFF5555FF );
- energieB->setLinienRahmenFarbe( 0xFF0000FF );
- energieB->setLinienRahmenBreite( 1 );
- energieB->setFRFarbe( 0xFF0000FF );
- energieB->setFRBreite( 1 );
- energieB->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::Hintergrund | FBalken::Style::FFarbe | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
- reparatur = initTextFeld( 5, 80, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- akkuLeistung = initTextFeld( 5, 105, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- wendigkeit = initTextFeld( 5, 130, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- beschleunigung = initTextFeld( 5, 155, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- laserIntensität = initTextFeld( 5, 180, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- laserEffizienz = initTextFeld( 5, 205, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- laserTempo = initTextFeld( 5, 230, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- netzwerk = initTextFeld( 5, 255, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
- stabilitätSkill = initKnopf( 172, 30, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- energieSkill = initKnopf( 172, 55, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- reparaturSkill = initKnopf( 172, 80, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- akkuLeistungSkill = initKnopf( 172, 105, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- wendigkeitSkill = initKnopf( 172, 130, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- beschleunigungSkill = initKnopf( 172, 155, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- laserIntensitätSkill = initKnopf( 172, 180, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- laserEffizienzSkill = initKnopf( 172, 205, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- laserTempoSkill = initKnopf( 172, 230, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- netzwerkSkill = initKnopf( 172, 255, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
- stabilitätSkill->removeStyle( Knopf::Style::Erlaubt );
- energieSkill->removeStyle( Knopf::Style::Erlaubt );
- reparaturSkill->removeStyle( Knopf::Style::Erlaubt );
- akkuLeistungSkill->removeStyle( Knopf::Style::Erlaubt );
- wendigkeitSkill->removeStyle( Knopf::Style::Erlaubt );
- beschleunigungSkill->removeStyle( Knopf::Style::Erlaubt );
- laserIntensitätSkill->removeStyle( Knopf::Style::Erlaubt );
- laserEffizienzSkill->removeStyle( Knopf::Style::Erlaubt );
- laserTempoSkill->removeStyle( Knopf::Style::Erlaubt );
- netzwerkSkill->removeStyle( Knopf::Style::Erlaubt );
- ref = 1;
- }
- // Destruktor
- Ship::~Ship()
- {
- ram->release();
- spieler->release();
- stabilität->release();
- energie->release();
- stabilitätB->release();
- energieB->release();
- reparatur->release();
- akkuLeistung->release();
- wendigkeit->release();
- beschleunigung->release();
- laserIntensität->release();
- laserEffizienz->release();
- laserTempo->release();
- netzwerk->release();
- stabilitätSkill->release();
- energieSkill->release();
- reparaturSkill->release();
- akkuLeistungSkill->release();
- wendigkeitSkill->release();
- beschleunigungSkill->release();
- laserIntensitätSkill->release();
- laserEffizienzSkill->release();
- laserTempoSkill->release();
- netzwerkSkill->release();
- }
- // nicht constant
- void Ship::update( Spieler *zSpieler )
- {
- spieler->setText( zSpieler->name->getText() );
- spieler->setSchriftFarbe( zSpieler->farbe );
- Text txt;
- txt.setPrecision( getStellen( zSpieler->stabilität ) + 2 );
- txt = zSpieler->stabilität;
- txt += "/";
- txt.setPrecision( getStellen( zSpieler->maxStabilität ) + 2 );
- txt += zSpieler->maxStabilität;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->maxStabilität ) + 2 );
- txt += zSpieler->team->maxStabilität;
- txt += ")";
- stabilität->setText( txt );
- stabilitätB->reset();
- stabilitätB->setAktionAnzahl( (int)( zSpieler->maxStabilität + zSpieler->team->maxStabilität ) );
- stabilitätB->aktionPlus( (int)( zSpieler->stabilität ) );
- txt.setPrecision( getStellen( zSpieler->energie ) + 2 );
- txt = zSpieler->energie;
- txt += "/";
- txt.setPrecision( getStellen( zSpieler->maxEnergie ) + 2 );
- txt += zSpieler->maxEnergie;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->maxEnergie ) + 2 );
- txt += zSpieler->team->maxEnergie;
- txt += ")";
- energie->setText( txt );
- energieB->reset();
- energieB->setAktionAnzahl( (int)( zSpieler->maxEnergie + zSpieler->team->maxEnergie ) );
- energieB->aktionPlus( (int)( zSpieler->energie ) );
- txt = "Reparatur:";
- txt.setPrecision( getStellen( zSpieler->reparatur ) + 2 );
- txt += zSpieler->reparatur;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->reparatur ) + 2 );
- txt += zSpieler->team->reparatur;
- txt += ")";
- reparatur->setText( txt );
- txt = "Akku:";
- txt.setPrecision( getStellen( zSpieler->akkuLeistung ) + 2 );
- txt += zSpieler->akkuLeistung;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->akkuLeistung ) + 2 );
- txt += zSpieler->team->akkuLeistung;
- txt += ")";
- akkuLeistung->setText( txt );
- txt = "Wendigkeit:";
- txt.setPrecision( getStellen( zSpieler->wendigkeit ) + 2 );
- txt += zSpieler->wendigkeit;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->wendigkeit ) + 2 );
- txt += zSpieler->team->wendigkeit;
- txt += ")";
- wendigkeit->setText( txt );
- txt = "Beschleunigung:";
- txt.setPrecision( getStellen( zSpieler->beschleunigung ) + 2 );
- txt += zSpieler->beschleunigung;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->beschleunigung ) + 2 );
- txt += zSpieler->team->beschleunigung;
- txt += ")";
- beschleunigung->setText( txt );
- txt = "Laser intensität:";
- txt.setPrecision( getStellen( zSpieler->laserIntensität ) + 2 );
- txt += zSpieler->laserIntensität;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->laserIntensität ) + 2 );
- txt += zSpieler->team->laserIntensität;
- txt += ")";
- laserIntensität->setText( txt );
- txt = "Laser effizienz:";
- txt.setPrecision( getStellen( zSpieler->laserEffizienz ) + 2 );
- txt += zSpieler->laserEffizienz;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->laserEffizienz ) + 2 );
- txt += zSpieler->team->laserEffizienz;
- txt += ")";
- laserEffizienz->setText( txt );
- txt = "Laser tempo:";
- txt.setPrecision( getStellen( zSpieler->laserTempo ) + 2 );
- txt += zSpieler->laserTempo;
- txt += "\r0xFF00FF00(+";
- txt.setPrecision( getStellen( zSpieler->team->laserTempo ) + 2 );
- txt += zSpieler->team->laserTempo;
- txt += ")";
- laserTempo->setText( txt );
- txt = "Netzwerk:";
- txt.setPrecision( getStellen( zSpieler->netzwerk ) + 2 );
- txt += zSpieler->netzwerk;
- netzwerk->setText( txt );
- stabilitätSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- energieSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- reparaturSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- akkuLeistungSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- wendigkeitSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- beschleunigungSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- laserIntensitätSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- laserEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- laserTempoSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- netzwerkSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
- }
- int Ship::doMausEreignis( MausEreignis &me )
- {
- me.mx -= ram->getX();
- me.my -= ram->getY();
- if( me.mx < 0 || me.my < 0 )
- return -1;
- int aktion = me.verarbeitet;
- stabilitätSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 2;
- energieSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 3;
- reparaturSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 4;
- laserIntensitätSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 5;
- laserEffizienzSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 6;
- laserTempoSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 7;
- beschleunigungSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 8;
- wendigkeitSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 9;
- netzwerkSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 10;
- akkuLeistungSkill->doMausEreignis( me );
- if( !aktion && me.verarbeitet && me.id == ME_RLinks )
- aktion = 11;
- me.mx += ram->getX();
- me.my += ram->getY();
- if( aktion > 1 )
- return aktion - 2;
- return -1;
- }
- bool Ship::tick( double tickVal )
- {
- bool ret = stabilitätSkill->tick( tickVal );
- ret |= energieSkill->tick( tickVal );
- ret |= reparaturSkill->tick( tickVal );
- ret |= akkuLeistungSkill->tick( tickVal );
- ret |= wendigkeitSkill->tick( tickVal );
- ret |= beschleunigungSkill->tick( tickVal );
- ret |= laserIntensitätSkill->tick( tickVal );
- ret |= laserEffizienzSkill->tick( tickVal );
- ret |= laserTempoSkill->tick( tickVal );
- ret |= netzwerkSkill->tick( tickVal );
- return ret;
- }
- void Ship::render( Bild &zRObj )
- {
- zRObj.alphaRegion( ram->getX() + 1, ram->getY() + 1, ram->getBreite() - 2, ram->getHeight() - 2, 0xA0000000 );
- ram->render( zRObj );
- if( !zRObj.setDrawOptions( ram->getPosition() + Punkt( 1, 1 ), ram->getSize() - Punkt( 2, 2 ) ) )
- return;
- spieler->render( zRObj );
- stabilitätB->render( zRObj );
- stabilität->render( zRObj );
- stabilitätSkill->render( zRObj );
- energieB->render( zRObj );
- energie->render( zRObj );
- energieSkill->render( zRObj );
- reparatur->render( zRObj );
- reparaturSkill->render( zRObj );
- akkuLeistung->render( zRObj );
- akkuLeistungSkill->render( zRObj );
- wendigkeit->render( zRObj );
- wendigkeitSkill->render( zRObj );
- beschleunigung->render( zRObj );
- beschleunigungSkill->render( zRObj );
- laserIntensität->render( zRObj );
- laserIntensitätSkill->render( zRObj );
- laserEffizienz->render( zRObj );
- laserEffizienzSkill->render( zRObj );
- laserTempo->render( zRObj );
- laserTempoSkill->render( zRObj );
- netzwerk->render( zRObj );
- netzwerkSkill->render( zRObj );
- zRObj.releaseDrawOptions();
- }
- // Reference Counting
- Ship *Ship::getThis()
- {
- ref++;
- return this;
- }
- Ship *Ship::release()
- {
- ref--;
- if( !ref )
- delete this;
- return this;
- }
|