Browse Source

Energie Schild und Energie Schild Effizienz Skill hinzugefügt

Kolja Strohm 6 years ago
parent
commit
803a341a41

+ 29 - 3
Asteroids/Editor/Interface/RightTools/SpielerOptionen/SpielerOptionen.cpp

@@ -28,7 +28,9 @@ SpielerTool::SpielerTool( Schrift *zSchrift, KarteDaten *daten )
     skillStartLaserIntensitätT = initTextFeld( 0, 230, 200, 20, zSchrift, TextFeld::Style::Text, "Laser Intensität" );
     skillStartLaserEffizienzT = initTextFeld( 0, 255, 200, 20, zSchrift, TextFeld::Style::Text, "Laser Effizienz" );
     skillStartLaserTempoT = initTextFeld( 0, 280, 200, 20, zSchrift, TextFeld::Style::Text, "Laser Tempo" );
-    skillStartNetzwerkT = initTextFeld( 0, 305, 200, 20, zSchrift, TextFeld::Style::Text, "Netzwerk" );
+    skillStartEnergieSchildT = initTextFeld( 0, 305, 200, 20, zSchrift, TextFeld::Style::Text, "Energie Schild" );
+    skillStartEnergieSchildEffizienzT = initTextFeld( 0, 330, 200, 20, zSchrift, TextFeld::Style::Text, "Schild Effizienz" );
+    skillStartNetzwerkT = initTextFeld( 0, 355, 200, 20, zSchrift, TextFeld::Style::Text, "Netzwerk" );
     const SpielerDaten *spieler = daten->getSpieler( daten->getSpielerIndexById( 1 ) );
     skillStartStabilität = initTextFeld( 200, 55, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->maxStabilität ) );
     skillStartEnergie = initTextFeld( 200, 80, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->maxEnergie ) );
@@ -40,8 +42,10 @@ SpielerTool::SpielerTool( Schrift *zSchrift, KarteDaten *daten )
     skillStartLaserIntensität = initTextFeld( 200, 230, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->laserIntensität ) );
     skillStartLaserEffizienz = initTextFeld( 200, 255, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->laserEffizienz ) );
     skillStartLaserTempo = initTextFeld( 200, 280, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->laserTempo ) );
-    skillStartNetzwerk = initTextFeld( 200, 305, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->netzwerk ) );
-    speichern = initKnopf( 0, 330, 100, 20, zSchrift, Knopf::Style::Normal, "Speichern" );
+    skillStartEnergieSchild = initTextFeld( 200, 305, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->energieSchild ) );
+    skillStartEnergieSchildEffizienz = initTextFeld( 200, 330, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->energieSchildEffizienz ) );
+    skillStartNetzwerk = initTextFeld( 200, 355, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( spieler->netzwerk ) );
+    speichern = initKnopf( 0, 380, 100, 20, zSchrift, Knopf::Style::Normal, "Speichern" );
     this->daten = daten;
 }
 
@@ -59,6 +63,8 @@ SpielerTool::~SpielerTool()
     skillStartLaserIntensitätT->release();
     skillStartLaserEffizienzT->release();
     skillStartLaserTempoT->release();
+    skillStartEnergieSchildT->release();
+    skillStartEnergieSchildEffizienzT->release();
     skillStartNetzwerkT->release();
     skillStartStabilität->release();
     skillStartEnergie->release();
@@ -70,6 +76,8 @@ SpielerTool::~SpielerTool()
     skillStartLaserIntensität->release();
     skillStartLaserEffizienz->release();
     skillStartLaserTempo->release();
+    skillStartEnergieSchild->release();
+    skillStartEnergieSchildEffizienz->release();
     skillStartNetzwerk->release();
     speichern->release();
     daten->release();
@@ -94,6 +102,8 @@ void SpielerTool::doMausEreignis( MausEreignis &me )
     skillStartLaserIntensitätT->doMausEreignis( me );
     skillStartLaserEffizienzT->doMausEreignis( me );
     skillStartLaserTempoT->doMausEreignis( me );
+    skillStartEnergieSchildT->doMausEreignis( me );
+    skillStartEnergieSchildEffizienzT->doMausEreignis( me );
     skillStartNetzwerkT->doMausEreignis( me );
     skillStartStabilität->doMausEreignis( me );
     skillStartEnergie->doMausEreignis( me );
@@ -105,6 +115,8 @@ void SpielerTool::doMausEreignis( MausEreignis &me )
     skillStartLaserIntensität->doMausEreignis( me );
     skillStartLaserEffizienz->doMausEreignis( me );
     skillStartLaserTempo->doMausEreignis( me );
+    skillStartEnergieSchild->doMausEreignis( me );
+    skillStartEnergieSchildEffizienz->doMausEreignis( me );
     skillStartNetzwerk->doMausEreignis( me );
     bool verarbeitet = me.verarbeitet;
     speichern->doMausEreignis( me );
@@ -121,6 +133,8 @@ void SpielerTool::doMausEreignis( MausEreignis &me )
         data.laserIntensität = *skillStartLaserIntensität->zText();
         data.laserEffizienz = *skillStartLaserEffizienz->zText();
         data.laserTempo = *skillStartLaserTempo->zText();
+        data.energieSchild = *skillStartEnergieSchild->zText();
+        data.energieSchildEffizienz = *skillStartEnergieSchildEffizienz->zText();
         data.netzwerk = *skillStartNetzwerk->zText();
         daten->getSpieler( daten->getSpielerIndexById( spielerAuswahl->getAuswahl() + 1 ), [ data ]( SpielerDaten *daten ) -> bool
         {
@@ -150,6 +164,8 @@ void SpielerTool::doTastaturEreignis( TastaturEreignis &te )
     skillStartLaserIntensitätT->doTastaturEreignis( te );
     skillStartLaserEffizienzT->doTastaturEreignis( te );
     skillStartLaserTempoT->doTastaturEreignis( te );
+    skillStartEnergieSchildT->doTastaturEreignis( te );
+    skillStartEnergieSchildEffizienzT->doTastaturEreignis( te );
     skillStartNetzwerkT->doTastaturEreignis( te );
     skillStartStabilität->doTastaturEreignis( te );
     skillStartEnergie->doTastaturEreignis( te );
@@ -161,6 +177,8 @@ void SpielerTool::doTastaturEreignis( TastaturEreignis &te )
     skillStartLaserIntensität->doTastaturEreignis( te );
     skillStartLaserEffizienz->doTastaturEreignis( te );
     skillStartLaserTempo->doTastaturEreignis( te );
+    skillStartEnergieSchild->doTastaturEreignis( te );
+    skillStartEnergieSchildEffizienz->doTastaturEreignis( te );
     skillStartNetzwerk->doTastaturEreignis( te );
     speichern->doTastaturEreignis( te );
 }
@@ -182,6 +200,8 @@ bool SpielerTool::tick( double tickVal )
     ret |= skillStartLaserIntensitätT->tick( tickVal );
     ret |= skillStartLaserEffizienzT->tick( tickVal );
     ret |= skillStartLaserTempoT->tick( tickVal );
+    ret |= skillStartEnergieSchildT->tick( tickVal );
+    ret |= skillStartEnergieSchildEffizienzT->tick( tickVal );
     ret |= skillStartNetzwerkT->tick( tickVal );
     ret |= skillStartStabilität->tick( tickVal );
     ret |= skillStartEnergie->tick( tickVal );
@@ -193,6 +213,8 @@ bool SpielerTool::tick( double tickVal )
     ret |= skillStartLaserIntensität->tick( tickVal );
     ret |= skillStartLaserEffizienz->tick( tickVal );
     ret |= skillStartLaserTempo->tick( tickVal );
+    ret |= skillStartEnergieSchild->tick( tickVal );
+    ret |= skillStartEnergieSchildEffizienz->tick( tickVal );
     ret |= skillStartNetzwerk->tick( tickVal );
     ret |= speichern->tick( tickVal );
     return ret;
@@ -216,6 +238,8 @@ void SpielerTool::render( Bild &rObj )
         skillStartLaserIntensitätT->render( rObj );
         skillStartLaserEffizienzT->render( rObj );
         skillStartLaserTempoT->render( rObj );
+        skillStartEnergieSchildT->render( rObj );
+        skillStartEnergieSchildEffizienzT->render( rObj );
         skillStartNetzwerkT->render( rObj );
         skillStartStabilität->render( rObj );
         skillStartEnergie->render( rObj );
@@ -227,6 +251,8 @@ void SpielerTool::render( Bild &rObj )
         skillStartLaserIntensität->render( rObj );
         skillStartLaserEffizienz->render( rObj );
         skillStartLaserTempo->render( rObj );
+        skillStartEnergieSchild->render( rObj );
+        skillStartEnergieSchildEffizienz->render( rObj );
         skillStartNetzwerk->render( rObj );
         speichern->render( rObj );
         rObj.releaseDrawOptions();

+ 4 - 0
Asteroids/Editor/Interface/RightTools/SpielerOptionen/SpielerOptionen.h

@@ -21,6 +21,8 @@ namespace Editor
         TextFeld *skillStartLaserIntensitätT;
         TextFeld *skillStartLaserEffizienzT;
         TextFeld *skillStartLaserTempoT;
+        TextFeld *skillStartEnergieSchildT;
+        TextFeld *skillStartEnergieSchildEffizienzT;
         TextFeld *skillStartNetzwerkT;
         TextFeld *skillStartStabilität;
         TextFeld *skillStartEnergie;
@@ -32,6 +34,8 @@ namespace Editor
         TextFeld *skillStartLaserIntensität;
         TextFeld *skillStartLaserEffizienz;
         TextFeld *skillStartLaserTempo;
+        TextFeld *skillStartEnergieSchild;
+        TextFeld *skillStartEnergieSchildEffizienz;
         TextFeld *skillStartNetzwerk;
         Knopf *speichern;
         KarteDaten *daten;

+ 29 - 1
Asteroids/Editor/Interface/RightTools/TeamOptionen/TeamOptionen.cpp

@@ -28,6 +28,8 @@ TeamTool::TeamTool( Schrift *zSchrift, KarteDaten *daten )
     skillStartLaserIntensitätT = initTextFeld( 0, 230, 200, 20, zSchrift, TextFeld::Style::Text, "Laser Intensität" );
     skillStartLaserEffizienzT = initTextFeld( 0, 255, 200, 20, zSchrift, TextFeld::Style::Text, "Laser Effizienz" );
     skillStartLaserTempoT = initTextFeld( 0, 280, 200, 20, zSchrift, TextFeld::Style::Text, "Laser Tempo" );
+    skillStartEnergieSchildT = initTextFeld( 0, 305, 200, 20, zSchrift, TextFeld::Style::Text, "Energie Schild" );
+    skillStartEnergieSchildEffizienzT = initTextFeld( 0, 330, 200, 20, zSchrift, TextFeld::Style::Text, "Schild Effizienz" );
     const TeamDaten *Team = daten->getTeam( daten->getTeamIndexById( 1 ) );
     skillStartStabilität = initTextFeld( 200, 55, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->maxStabilität ) );
     skillStartEnergie = initTextFeld( 200, 80, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->maxEnergie ) );
@@ -39,7 +41,9 @@ TeamTool::TeamTool( Schrift *zSchrift, KarteDaten *daten )
     skillStartLaserIntensität = initTextFeld( 200, 230, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->laserIntensität ) );
     skillStartLaserEffizienz = initTextFeld( 200, 255, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->laserEffizienz ) );
     skillStartLaserTempo = initTextFeld( 200, 280, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->laserTempo ) );
-    speichern = initKnopf( 0, 330, 100, 20, zSchrift, Knopf::Style::Normal, "Speichern" );
+    skillStartEnergieSchild = initTextFeld( 200, 305, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->energieSchild ) );
+    skillStartEnergieSchildEffizienz = initTextFeld( 200, 330, 90, 20, zSchrift, TextFeld::Style::TextFeld, Text( Team->energieSchildEffizienz ) );
+    speichern = initKnopf( 0, 380, 100, 20, zSchrift, Knopf::Style::Normal, "Speichern" );
     this->daten = daten;
 }
 
@@ -57,6 +61,8 @@ TeamTool::~TeamTool()
     skillStartLaserIntensitätT->release();
     skillStartLaserEffizienzT->release();
     skillStartLaserTempoT->release();
+    skillStartEnergieSchildT->release();
+    skillStartEnergieSchildEffizienzT->release();
     skillStartStabilität->release();
     skillStartEnergie->release();
     skillStartReparatur->release();
@@ -67,6 +73,8 @@ TeamTool::~TeamTool()
     skillStartLaserIntensität->release();
     skillStartLaserEffizienz->release();
     skillStartLaserTempo->release();
+    skillStartEnergieSchild->release();
+    skillStartEnergieSchildEffizienz->release();
     speichern->release();
     daten->release();
 }
@@ -90,6 +98,8 @@ void TeamTool::doMausEreignis( MausEreignis &me )
     skillStartLaserIntensitätT->doMausEreignis( me );
     skillStartLaserEffizienzT->doMausEreignis( me );
     skillStartLaserTempoT->doMausEreignis( me );
+    skillStartEnergieSchildT->doMausEreignis( me );
+    skillStartEnergieSchildEffizienzT->doMausEreignis( me );
     skillStartStabilität->doMausEreignis( me );
     skillStartEnergie->doMausEreignis( me );
     skillStartReparatur->doMausEreignis( me );
@@ -100,6 +110,8 @@ void TeamTool::doMausEreignis( MausEreignis &me )
     skillStartLaserIntensität->doMausEreignis( me );
     skillStartLaserEffizienz->doMausEreignis( me );
     skillStartLaserTempo->doMausEreignis( me );
+    skillStartEnergieSchild->doMausEreignis( me );
+    skillStartEnergieSchildEffizienz->doMausEreignis( me );
     bool verarbeitet = me.verarbeitet;
     speichern->doMausEreignis( me );
     if( !verarbeitet && me.verarbeitet && me.id == ME_RLinks )
@@ -115,6 +127,8 @@ void TeamTool::doMausEreignis( MausEreignis &me )
         data.laserIntensität = *skillStartLaserIntensität->zText();
         data.laserEffizienz = *skillStartLaserEffizienz->zText();
         data.laserTempo = *skillStartLaserTempo->zText();
+        data.energieSchild = *skillStartEnergieSchild->zText();
+        data.energieSchildEffizienz = *skillStartEnergieSchildEffizienz->zText();
         daten->getTeam( daten->getTeamIndexById( teamAuswahl->getAuswahl() + 1 ), [ data ]( TeamDaten *daten ) -> bool
         {
             *daten = data;
@@ -143,6 +157,8 @@ void TeamTool::doTastaturEreignis( TastaturEreignis &te )
     skillStartLaserIntensitätT->doTastaturEreignis( te );
     skillStartLaserEffizienzT->doTastaturEreignis( te );
     skillStartLaserTempoT->doTastaturEreignis( te );
+    skillStartEnergieSchildT->doTastaturEreignis( te );
+    skillStartEnergieSchildEffizienzT->doTastaturEreignis( te );
     skillStartStabilität->doTastaturEreignis( te );
     skillStartEnergie->doTastaturEreignis( te );
     skillStartReparatur->doTastaturEreignis( te );
@@ -153,6 +169,8 @@ void TeamTool::doTastaturEreignis( TastaturEreignis &te )
     skillStartLaserIntensität->doTastaturEreignis( te );
     skillStartLaserEffizienz->doTastaturEreignis( te );
     skillStartLaserTempo->doTastaturEreignis( te );
+    skillStartEnergieSchild->doTastaturEreignis( te );
+    skillStartEnergieSchildEffizienz->doTastaturEreignis( te );
     speichern->doTastaturEreignis( te );
 }
 
@@ -173,6 +191,8 @@ bool TeamTool::tick( double tickVal )
     ret |= skillStartLaserIntensitätT->tick( tickVal );
     ret |= skillStartLaserEffizienzT->tick( tickVal );
     ret |= skillStartLaserTempoT->tick( tickVal );
+    ret |= skillStartEnergieSchildT->tick( tickVal );
+    ret |= skillStartEnergieSchildEffizienzT->tick( tickVal );
     ret |= skillStartStabilität->tick( tickVal );
     ret |= skillStartEnergie->tick( tickVal );
     ret |= skillStartReparatur->tick( tickVal );
@@ -183,6 +203,8 @@ bool TeamTool::tick( double tickVal )
     ret |= skillStartLaserIntensität->tick( tickVal );
     ret |= skillStartLaserEffizienz->tick( tickVal );
     ret |= skillStartLaserTempo->tick( tickVal );
+    ret |= skillStartEnergieSchild->tick( tickVal );
+    ret |= skillStartEnergieSchildEffizienz->tick( tickVal );
     ret |= speichern->tick( tickVal );
     return ret;
 }
@@ -205,6 +227,8 @@ void TeamTool::render( Bild &rObj )
         skillStartLaserIntensitätT->render( rObj );
         skillStartLaserEffizienzT->render( rObj );
         skillStartLaserTempoT->render( rObj );
+        skillStartEnergieSchildT->render( rObj );
+        skillStartEnergieSchildEffizienzT->render( rObj );
         skillStartStabilität->render( rObj );
         skillStartEnergie->render( rObj );
         skillStartReparatur->render( rObj );
@@ -215,6 +239,8 @@ void TeamTool::render( Bild &rObj )
         skillStartLaserIntensität->render( rObj );
         skillStartLaserEffizienz->render( rObj );
         skillStartLaserTempo->render( rObj );
+        skillStartEnergieSchild->render( rObj );
+        skillStartEnergieSchildEffizienz->render( rObj );
         speichern->render( rObj );
         rObj.releaseDrawOptions();
     }
@@ -235,4 +261,6 @@ void TeamTool::selectTeam( int id )
     skillStartLaserIntensität->setText( Text( Team->laserIntensität ) );
     skillStartLaserEffizienz->setText( Text( Team->laserEffizienz ) );
     skillStartLaserTempo->setText( Text( Team->laserTempo ) );
+    skillStartEnergieSchild->setText( Text( Team->energieSchild ) );
+    skillStartEnergieSchildEffizienz->setText( Text( Team->energieSchildEffizienz ) );
 }

+ 4 - 0
Asteroids/Editor/Interface/RightTools/TeamOptionen/TeamOptionen.h

@@ -21,6 +21,8 @@ namespace Editor
         TextFeld *skillStartLaserIntensitätT;
         TextFeld *skillStartLaserEffizienzT;
         TextFeld *skillStartLaserTempoT;
+        TextFeld *skillStartEnergieSchildT;
+        TextFeld *skillStartEnergieSchildEffizienzT;
         TextFeld *skillStartStabilität;
         TextFeld *skillStartEnergie;
         TextFeld *skillStartReparatur;
@@ -31,6 +33,8 @@ namespace Editor
         TextFeld *skillStartLaserIntensität;
         TextFeld *skillStartLaserEffizienz;
         TextFeld *skillStartLaserTempo;
+        TextFeld *skillStartEnergieSchild;
+        TextFeld *skillStartEnergieSchildEffizienz;
         Knopf *speichern;
         KarteDaten *daten;
 

+ 4 - 0
Asteroids/Editor/Karte/EditorKarte.h

@@ -22,6 +22,8 @@ namespace Editor
         int laserTempo;
         double wendigkeit;
         double antriebEffizienz;
+        double energieSchild;
+        double energieSchildEffizienz;
         int netzwerk;
         int skillPunkte;
         int m2d;
@@ -42,6 +44,8 @@ namespace Editor
         int laserTempo;
         double wendigkeit;
         double antriebEffizienz;
+        double energieSchild;
+        double energieSchildEffizienz;
         int punkte;
     };
 

+ 8 - 0
Asteroids/Editor/Netzwerk/EditorKlient.cpp

@@ -169,6 +169,8 @@ bool EditorKlient::saveTeam( const TeamDaten *team )
         k->sendeEncrypted( (char*)&team->laserTempo, 4 );
         k->sendeEncrypted( (char*)&team->wendigkeit, 8 );
         k->sendeEncrypted( (char*)&team->antriebEffizienz, 8 );
+        k->sendeEncrypted( (char*)&team->energieSchild, 8 );
+        k->sendeEncrypted( (char*)&team->energieSchildEffizienz, 8 );
         k->sendeEncrypted( (char*)&team->punkte, 4 );
         k->getNachrichtEncrypted( &ret, 1 );
     }
@@ -215,6 +217,8 @@ bool EditorKlient::saveSpieler( const SpielerDaten *spieler )
         k->sendeEncrypted( (char*)&spieler->laserTempo, 4 );
         k->sendeEncrypted( (char*)&spieler->wendigkeit, 8 );
         k->sendeEncrypted( (char*)&spieler->antriebEffizienz, 8 );
+        k->sendeEncrypted( (char*)&spieler->energieSchild, 8 );
+        k->sendeEncrypted( (char*)&spieler->energieSchildEffizienz, 8 );
         k->sendeEncrypted( (char*)&spieler->netzwerk, 4 );
         k->sendeEncrypted( (char*)&spieler->skillPunkte, 4 );
         k->sendeEncrypted( (char*)&spieler->m2d, 4 );
@@ -344,6 +348,8 @@ bool EditorKlient::loadSpieler( Array< SpielerDaten* > &spieler )
             k->getNachrichtEncrypted( (char*)&player->laserTempo, 4 );
             k->getNachrichtEncrypted( (char*)&player->wendigkeit, 8 );
             k->getNachrichtEncrypted( (char*)&player->antriebEffizienz, 8 );
+            k->getNachrichtEncrypted( (char*)&player->energieSchild, 8 );
+            k->getNachrichtEncrypted( (char*)&player->energieSchildEffizienz, 8 );
             k->getNachrichtEncrypted( (char*)&player->netzwerk, 4 );
             k->getNachrichtEncrypted( (char*)&player->skillPunkte, 4 );
             k->getNachrichtEncrypted( (char*)&player->m2d, 4 );
@@ -397,6 +403,8 @@ bool EditorKlient::loadTeams( Array< TeamDaten* > &teams )
             k->getNachrichtEncrypted( (char*)&team->laserTempo, 4 );
             k->getNachrichtEncrypted( (char*)&team->wendigkeit, 8 );
             k->getNachrichtEncrypted( (char*)&team->antriebEffizienz, 8 );
+            k->getNachrichtEncrypted( (char*)&team->energieSchild, 8 );
+            k->getNachrichtEncrypted( (char*)&team->energieSchildEffizienz, 8 );
             k->getNachrichtEncrypted( (char*)&team->punkte, 4 );
             teams.add( team );
         }

+ 4 - 0
Asteroids/Spiel/Karte/Strukturen.cpp

@@ -145,6 +145,8 @@ SpielerStr::SpielerStr( Datei *zDatei )
 	zDatei->lese( (char*)&laserTempo, 4 );
 	zDatei->lese( (char*)&wendigkeit, 8 );
     zDatei->lese( (char*)&antriebEffizienz, 8 );
+    zDatei->lese( (char*)&energieSchild, 8 );
+    zDatei->lese( (char*)&energieSchildEffizienz, 8 );
 	zDatei->lese( (char*)&netzwerk, 4 );
 	zDatei->lese( (char*)&skillPunkte, 4 );
 	zDatei->lese( (char*)&m2d, 4 );
@@ -183,6 +185,8 @@ TeamStr::TeamStr( Datei *zDatei )
 	zDatei->lese( (char*)&laserTempo, 4 );
 	zDatei->lese( (char*)&wendigkeit, 8 );
     zDatei->lese( (char*)&antriebEffizienz, 8 );
+    zDatei->lese( (char*)&energieSchild, 8 );
+    zDatei->lese( (char*)&energieSchildEffizienz, 8 );
 	zDatei->lese( (char*)&punkte, 4 );
 	ref = 1;
 }

+ 4 - 0
Asteroids/Spiel/Karte/Strukturen.h

@@ -75,6 +75,8 @@ public:
 	int laserTempo;
 	double wendigkeit;
     double antriebEffizienz;
+    double energieSchild;
+    double energieSchildEffizienz;
 	int netzwerk;
 	int skillPunkte;
 	int m2d;
@@ -105,6 +107,8 @@ public:
 	int laserTempo;
 	double wendigkeit;
     double antriebEffizienz;
+    double energieSchild;
+    double energieSchildEffizienz;
 	int punkte;
 
 	// Konstruktor

+ 32 - 1
Asteroids/Spiel/Spieler/Spieler.cpp

@@ -48,6 +48,8 @@ Spieler::Spieler( KSGClient::InformationServerClient *zInfoK, Schrift *zSchrift,
     current.wendigkeit = zStr->wendigkeit;
     wendigkeitStart = current.wendigkeit;
     current.antriebEffizienz = zStr->antriebEffizienz;
+    current.energieSchild = zStr->energieSchild;
+    current.energieSchildEffizienz = zStr->energieSchildEffizienz;
     skillPunkte = zStr->skillPunkte;
     current.schadenBekommen = 0;
     current.schadenGemacht = 0;
@@ -493,6 +495,8 @@ void Spieler::setSkill( int art )
         team->wendigkeit = team->getWendigkeitBonus();
         team->akkuLeistung = team->getAkkuLeistungBonus();
         team->antriebEffizienz = team->getAntriebEffizienzBonus();
+        team->energieSchild = team->getEnergieSchildBonus();
+        team->energieSchildEffizienz = team->getEnergieSchildEffizienzBonus();
         break;
     case 9: // Akkuleistung
         current.akkuLeistung += 0.12;
@@ -502,11 +506,28 @@ void Spieler::setSkill( int art )
         current.antriebEffizienz += 10;
         team->antriebEffizienz = team->getAntriebEffizienzBonus();
         break;
+    case 11: // Antrieb Effizienz
+        current.energieSchild += 1;
+        team->energieSchild = team->getEnergieSchildBonus();
+        break;
+    case 12: // Antrieb Effizienz
+        current.energieSchildEffizienz += 2;
+        team->energieSchildEffizienz = team->getEnergieSchildEffizienzBonus();
+        break;
     }
 }
 
-void Spieler::nimmSchaden( double intensität )
+void Spieler::nimmSchaden( double &intensität )
 {
+    double schieldVal = intensität / 100 * current.energieSchild;
+    double schieldEVal = schieldVal - schieldVal / 100 * current.energieSchildEffizienz;
+    if( schieldEVal > current.energie )
+    {
+        schieldEVal = current.energie;
+        schieldVal = schieldEVal / ( 1 - ( current.energieSchildEffizienz / 100 ) );
+    }
+    intensität -= schieldVal;
+    current.energie -= schieldEVal;
     current.stabilität -= intensität;
     current.schadenBekommen += intensität;
     current.repAbk = 2;
@@ -767,6 +788,16 @@ double Spieler::getTeamAntriebEffizienzBonus() const
     return current.antriebEffizienz / 100 * current.netzwerk;
 }
 
+double Spieler::getTeamEnergieSchildBonus() const
+{
+    return current.energieSchild / 100 * current.netzwerk;
+}
+
+double Spieler::getTeamEnergieSchildEffizienzBonus() const
+{
+    return current.energieSchildEffizienz / 100 * current.netzwerk;
+}
+
 // Reference Counting
 Spieler *Spieler::getThis()
 {

+ 5 - 1
Asteroids/Spiel/Spieler/Spieler.h

@@ -73,6 +73,8 @@ private:
         double netzwerk;
         double wendigkeit;
         double antriebEffizienz;
+        double energieSchild;
+        double energieSchildEffizienz;
         double zeitAmLeben;
         double zeitTod;
         double schadenBekommen;
@@ -114,7 +116,7 @@ public:
 	void renderLeben( Bild &zRObj );
 	void renderMinimap( Bild &zRObj, Karte *zMap, int thisSpielerNummer );
 	void setSkill( int art );
-	void nimmSchaden( double intensität );
+	void nimmSchaden( double &intensität );
     void calcDeadPlayerObject( Laser *zSchuss );
 	void machSchaden( double intensität );
 	void addKill();
@@ -155,6 +157,8 @@ public:
 	double getTeamBeschleunigungBonus() const;
 	double getTeamWendigkeitBonus() const;
     double getTeamAntriebEffizienzBonus() const;
+    double getTeamEnergieSchildBonus() const;
+    double getTeamEnergieSchildEffizienzBonus() const;
 	// Reference Counting
 	Spieler *getThis();
 	Spieler *release();

+ 44 - 4
Asteroids/Spiel/SpielerGUI/SpielerGUI.cpp

@@ -19,7 +19,7 @@ int getStellen( double d )
 SpielerGUI::SpielerGUI( Schrift *zSchrift )
 {
 	ram = new LRahmen();
-	ram->setSize( 200, 332 );
+	ram->setSize( 200, 382 );
 	ram->setPosition( Punkt( BildschirmGröße().x - 210, 10 ) );
 	ram->setFarbe( 0xFFFFFFFF );
 	spieler = initTextFeld( 5, 5, 190, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
@@ -53,7 +53,9 @@ SpielerGUI::SpielerGUI( Schrift *zSchrift )
     laserIntensität = initTextFeld( 5, 205, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
 	laserEffizienz = initTextFeld( 5, 230, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
 	laserTempo = initTextFeld( 5, 255, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
-	netzwerk = initTextFeld( 5, 280, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
+    energieSchild = initTextFeld( 5, 280, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
+    energieSchildEffizienz = initTextFeld( 5, 305, 165, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig | TextFeld::Style::VCenter, "" );
+	netzwerk = initTextFeld( 5, 330, 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, "+" );
@@ -64,7 +66,9 @@ SpielerGUI::SpielerGUI( Schrift *zSchrift )
     laserIntensitätSkill = initKnopf( 172, 205, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
 	laserEffizienzSkill = initKnopf( 172, 230, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
 	laserTempoSkill = initKnopf( 172, 255, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
-	netzwerkSkill = initKnopf( 172, 280, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
+    energieSchildSkill = initKnopf( 172, 280, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
+    energieSchildEffizienzSkill = initKnopf( 305, 255, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
+	netzwerkSkill = initKnopf( 172, 330, 20, 20, zSchrift, Knopf::Style::Sichtbar, "+" );
 	stabilitätSkill->removeStyle( Knopf::Style::Erlaubt );
 	energieSkill->removeStyle( Knopf::Style::Erlaubt );
 	reparaturSkill->removeStyle( Knopf::Style::Erlaubt );
@@ -74,8 +78,10 @@ SpielerGUI::SpielerGUI( Schrift *zSchrift )
 	laserIntensitätSkill->removeStyle( Knopf::Style::Erlaubt );
 	laserEffizienzSkill->removeStyle( Knopf::Style::Erlaubt );
 	laserTempoSkill->removeStyle( Knopf::Style::Erlaubt );
+    energieSchildSkill->removeStyle( Knopf::Style::Erlaubt );
+    energieSchildEffizienzSkill->removeStyle( Knopf::Style::Erlaubt );
 	netzwerkSkill->removeStyle( Knopf::Style::Erlaubt );
-    skillPoints = initTextFeld( 5, 305, 180, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
+    skillPoints = initTextFeld( 5, 355, 180, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
 	ref = 1;
 }
 
@@ -96,6 +102,8 @@ SpielerGUI::~SpielerGUI()
 	laserIntensität->release();
 	laserEffizienz->release();
 	laserTempo->release();
+    energieSchild->release();
+    energieSchildEffizienz->release();
 	netzwerk->release();
 	stabilitätSkill->release();
 	energieSkill->release();
@@ -107,6 +115,8 @@ SpielerGUI::~SpielerGUI()
 	laserIntensitätSkill->release();
 	laserEffizienzSkill->release();
 	laserTempoSkill->release();
+    energieSchildSkill->release();
+    energieSchildEffizienzSkill->release();
 	netzwerkSkill->release();
     skillPoints->release();
 }
@@ -207,6 +217,22 @@ void SpielerGUI::update( Spieler *zSpieler )
 	txt += zSpieler->team->laserTempo;
 	txt += ")";
 	laserTempo->setText( txt );
+    txt = "Energie Schild:";
+    txt.setPrecision( getStellen( zSpieler->current.energieSchild ) + 2 );
+    txt += zSpieler->current.energieSchild;
+    txt += "\r0xFF00FF00(+";
+    txt.setPrecision( getStellen( zSpieler->team->energieSchild ) + 2 );
+    txt += zSpieler->team->energieSchild;
+    txt += ")";
+    energieSchild->setText( txt );
+    txt = "Schild effizienz:";
+    txt.setPrecision( getStellen( zSpieler->current.energieSchildEffizienz ) + 2 );
+    txt += zSpieler->current.energieSchildEffizienz;
+    txt += "\r0xFF00FF00(+";
+    txt.setPrecision( getStellen( zSpieler->team->energieSchildEffizienz ) + 2 );
+    txt += zSpieler->team->energieSchildEffizienz;
+    txt += ")";
+    energieSchildEffizienz->setText( txt );
 	txt = "Netzwerk:";
 	txt.setPrecision( getStellen( zSpieler->current.netzwerk ) + 2 );
 	txt += zSpieler->current.netzwerk;
@@ -221,6 +247,8 @@ void SpielerGUI::update( Spieler *zSpieler )
     laserIntensitätSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
 	laserEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
 	laserTempoSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
+    energieSchildSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
+    energieSchildEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
 	netzwerkSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
     skillPoints->setText( Text( zSpieler->skillPunkte ) += " Punkte" );
 }
@@ -265,6 +293,12 @@ int SpielerGUI::doMausEreignis( MausEreignis &me )
 	akkuLeistungSkill->doMausEreignis( me );
 	if( !aktion && me.verarbeitet && me.id == ME_RLinks )
 		aktion = 11;
+    energieSchildSkill->doMausEreignis( me );
+    if( !aktion && me.verarbeitet && me.id == ME_RLinks )
+        aktion = 12;
+    energieSchildEffizienzSkill->doMausEreignis( me );
+    if( !aktion && me.verarbeitet && me.id == ME_RLinks )
+        aktion = 13;
 	me.mx += ram->getX();
 	me.my += ram->getY();
 	if( aktion > 1 )
@@ -284,6 +318,8 @@ bool SpielerGUI::tick( double tickVal )
 	ret |= laserIntensitätSkill->tick( tickVal );
 	ret |= laserEffizienzSkill->tick( tickVal );
 	ret |= laserTempoSkill->tick( tickVal );
+    ret |= energieSchildSkill->tick( tickVal );
+    ret |= energieSchildEffizienzSkill->tick( tickVal );
 	ret |= netzwerkSkill->tick( tickVal );
 	return ret;
 }
@@ -317,6 +353,10 @@ void SpielerGUI::render( Bild &zRObj )
 	laserEffizienzSkill->render( zRObj );
 	laserTempo->render( zRObj );
 	laserTempoSkill->render( zRObj );
+    energieSchild->render( zRObj );
+    energieSchildSkill->render( zRObj );
+    energieSchildEffizienz->render( zRObj );
+    energieSchildEffizienzSkill->render( zRObj );
 	netzwerk->render( zRObj );
 	netzwerkSkill->render( zRObj );
     skillPoints->render( zRObj );

+ 4 - 0
Asteroids/Spiel/SpielerGUI/SpielerGUI.h

@@ -24,6 +24,8 @@ private:
 	TextFeld *laserIntensität;
 	TextFeld *laserEffizienz;
 	TextFeld *laserTempo;
+    TextFeld *energieSchild;
+    TextFeld *energieSchildEffizienz;
 	TextFeld *netzwerk;
 	Knopf *stabilitätSkill;
 	Knopf *energieSkill;
@@ -35,6 +37,8 @@ private:
 	Knopf *laserIntensitätSkill;
 	Knopf *laserEffizienzSkill;
 	Knopf *laserTempoSkill;
+    Knopf *energieSchildSkill;
+    Knopf *energieSchildEffizienzSkill;
 	Knopf *netzwerkSkill;
     TextFeld *skillPoints;
 	int ref;

+ 20 - 0
Asteroids/Spiel/Team/Team.cpp

@@ -21,6 +21,8 @@ Team::Team( int f, char *n, TeamStr *zStr )
 	beschleunigungS = zStr->beschleunigung;
 	wendigkeitS = zStr->wendigkeit;
     antriebEffizienzS = zStr->antriebEffizienz;
+    energieSchildS = zStr->energieSchild;
+    energieSchildEffizienzS = zStr->energieSchildEffizienz;
 	reset();
 	ref = 1;
 }
@@ -45,6 +47,8 @@ void Team::reset()
 	beschleunigung = beschleunigungS;
 	wendigkeit = wendigkeitS;
     antriebEffizienz = antriebEffizienzS;
+    energieSchild = energieSchildS;
+    energieSchildEffizienz = energieSchildEffizienzS;
 }
 
 // constant
@@ -128,6 +132,22 @@ double Team::getAntriebEffizienzBonus() const
     return ret;
 }
 
+double Team::getEnergieSchildBonus() const
+{
+    double ret = energieSchildS;
+    for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
+        ret += i->var->getTeamEnergieSchildBonus();
+    return ret;
+}
+
+double Team::getEnergieSchildEffizienzBonus() const
+{
+    double ret = energieSchildEffizienzS;
+    for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
+        ret += i->var->getTeamEnergieSchildEffizienzBonus();
+    return ret;
+}
+
 // Reference Counting
 Team *Team::getThis()
 {

+ 6 - 0
Asteroids/Spiel/Team/Team.h

@@ -21,6 +21,8 @@ private:
 	double beschleunigungS;
 	double wendigkeitS;
     double antriebEffizienzS;
+    double energieSchildS;
+    double energieSchildEffizienzS;
 	int ref;
 
 public:
@@ -40,6 +42,8 @@ public:
 	double laserTempo;
 	double beschleunigung;
     double antriebEffizienz;
+    double energieSchild;
+    double energieSchildEffizienz;
 	double wendigkeit;
 	// Konstruktor
 	Team( int f, char *n, TeamStr *zStr );
@@ -57,6 +61,8 @@ public:
 	double getLaserTempoBonus() const;
 	double getBeschleunigungBonus() const;
     double getAntriebEffizienzBonus() const;
+    double getEnergieSchildBonus() const;
+    double getEnergieSchildEffizienzBonus() const;
 	double getWendigkeitBonus() const;
 	// Reference Counting
 	Team *getThis();