Browse Source

Fehler im Editor berichtigt und balancing verbessert

Kolja Strohm 6 years ago
parent
commit
38a11f57f5

+ 13 - 0
Asteroids/Editor/Interface/RightTools/RightTools.cpp

@@ -31,6 +31,10 @@ RightTools::RightTools( Schrift *zSchrift, Punkt maxSize )
     ref = 1;
     this->maxSize = maxSize;
     toolAuswahl = initAuswahlBox( 5, 5, 290, 20, zSchrift, AuswahlBox::Style::Normal, {} );
+    toolAuswahl->setEventAktion( [ this ]( void *, AuswahlBox *, int, int neu )
+    {
+        this->selectTool( neu );
+    } );
     tools = new RCArray< RightTool >();
     setSize( 300, maxSize.y );
     setPosition( maxSize.x - 300, 0 );
@@ -49,6 +53,8 @@ RightTools::~RightTools()
 
 void RightTools::addTool( RightTool *tool, char *name )
 {
+    if( !toolAuswahl->getEintragAnzahl() )
+        tool->addStyle( Zeichnung::Style::Sichtbar );
     toolAuswahl->addEintrag( name );
     tools->add( tool );
     tool->setPosition( 5, 30 );
@@ -104,6 +110,13 @@ void RightTools::render( Bild &rObj )
     }
 }
 
+void RightTools::selectTool( int index )
+{
+    int i = 0;
+    for( auto e = tools->getArray(); e.set; e++ )
+        e.var->setStyle( Zeichnung::Style::Sichtbar, i++ == index );
+}
+
 RightTools *RightTools::getThis()
 {
     ref++;

+ 1 - 0
Asteroids/Editor/Interface/RightTools/RightTools.h

@@ -33,6 +33,7 @@ public:
     void doTastaturEreignis( TastaturEreignis &te ) override;
     bool tick( double tickVal ) override;
     void render( Bild &rObj ) override;
+    void selectTool( int index );
     RightTools *getThis();
     RightTools *release();
 };

+ 11 - 0
Asteroids/Editor/Interface/RightTools/SpielerOptionen/SpielerOptionen.cpp

@@ -77,6 +77,9 @@ SpielerTool::~SpielerTool()
 
 void SpielerTool::doMausEreignis( MausEreignis &me )
 {
+    bool vera = me.verarbeitet;
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        me.verarbeitet = 1;
     me.mx -= pos.x;
     me.my -= pos.y;
     spielerAuswahl->doMausEreignis( me );
@@ -127,10 +130,14 @@ void SpielerTool::doMausEreignis( MausEreignis &me )
     }
     me.mx += pos.x;
     me.my += pos.y;
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        me.verarbeitet = vera;
 }
 
 void SpielerTool::doTastaturEreignis( TastaturEreignis &te )
 {
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        return;
     spielerAuswahl->doTastaturEreignis( te );
     skillStartT->doTastaturEreignis( te );
     skillStartStabilitätT->doTastaturEreignis( te );
@@ -160,6 +167,8 @@ void SpielerTool::doTastaturEreignis( TastaturEreignis &te )
 
 bool SpielerTool::tick( double tickVal )
 {
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        return __super::tick( tickVal );
     bool ret = __super::tick( tickVal );
     ret |= spielerAuswahl->tick( tickVal );
     ret |= skillStartT->tick( tickVal );
@@ -191,6 +200,8 @@ bool SpielerTool::tick( double tickVal )
 
 void SpielerTool::render( Bild &rObj )
 {
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        return;
     if( rObj.setDrawOptions( pos, gr ) )
     {
         spielerAuswahl->render( rObj );

+ 11 - 0
Asteroids/Editor/Interface/RightTools/TeamOptionen/TeamOptionen.cpp

@@ -73,6 +73,9 @@ TeamTool::~TeamTool()
 
 void TeamTool::doMausEreignis( MausEreignis &me )
 {
+    bool vera = me.verarbeitet;
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        me.verarbeitet = 1;
     me.mx -= pos.x;
     me.my -= pos.y;
     teamAuswahl->doMausEreignis( me );
@@ -120,10 +123,14 @@ void TeamTool::doMausEreignis( MausEreignis &me )
     }
     me.mx += pos.x;
     me.my += pos.y;
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        me.verarbeitet = vera;
 }
 
 void TeamTool::doTastaturEreignis( TastaturEreignis &te )
 {
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        return;
     teamAuswahl->doTastaturEreignis( te );
     skillStartT->doTastaturEreignis( te );
     skillStartStabilitätT->doTastaturEreignis( te );
@@ -151,6 +158,8 @@ void TeamTool::doTastaturEreignis( TastaturEreignis &te )
 
 bool TeamTool::tick( double tickVal )
 {
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        return __super::tick( tickVal );
     bool ret = __super::tick( tickVal );
     ret |= teamAuswahl->tick( tickVal );
     ret |= skillStartT->tick( tickVal );
@@ -180,6 +189,8 @@ bool TeamTool::tick( double tickVal )
 
 void TeamTool::render( Bild &rObj )
 {
+    if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
+        return;
     if( rObj.setDrawOptions( pos, gr ) )
     {
         teamAuswahl->render( rObj );

+ 1 - 1
Asteroids/Spiel/Schuss/Laser.cpp

@@ -166,7 +166,7 @@ int Laser::getSpieler() const
 
 double Laser::getIntensität( Vec2< double > targetSpeed ) const
 {
-	return intensität + (speed - targetSpeed).getLength() / 10;
+	return intensität * ((speed - targetSpeed).getLength() / 200);
 }
 
 Vec2< double > Laser::getPos() const

+ 16 - 14
Asteroids/Spiel/Spieler/Spieler.cpp

@@ -86,7 +86,7 @@ Spieler::~Spieler()
 
 double Spieler::calculateLaserCost()
 {
-    double kosten = ( ( current.laserIntensität + team->laserIntensität ) / 2 + ( current.laserTempo + team->laserTempo ) / 6 ) * ( 1 / ( ( current.laserEffizienz + team->laserEffizienz ) / 25 ) );
+    double kosten = ( ( current.laserIntensität + team->laserIntensität ) / 2 + ( current.laserTempo + team->laserTempo ) / 13 ) * ( 1 / ( ( current.laserEffizienz + team->laserEffizienz ) / 25 ) );
     if( kosten < 1 )
         kosten = 1;
     return kosten;
@@ -288,8 +288,8 @@ bool Spieler::tick( int time, Karte *zMap )
                 Vertex hp;
                 Vertex mv;
                 float r;
-                double treibstoff = 0.5 * ( ( current.beschleunigung + team->beschleunigung) / beschleunigungStart ) 
-                    * akkuLeistungStart * tv * ( 100 / ( current.antriebEffizienz + team->antriebEffizienz ) );
+                double treibstoff = 3 * ( ( current.beschleunigung + team->beschleunigung) / 5 ) 
+                     * tv * ( 100 / ( current.antriebEffizienz + team->antriebEffizienz ) );
                 current.treibstoffVerbraucht += treibstoff;
                 double factor = 1;
                 if( treibstoff > current.energie )
@@ -328,8 +328,8 @@ bool Spieler::tick( int time, Karte *zMap )
                 Vertex hp;
                 Vertex mv;
                 float r;
-                double treibstoff = 0.25 * ( ( current.wendigkeit + team->wendigkeit ) / wendigkeitStart )
-                    * akkuLeistungStart * tv * ( 100 / ( current.antriebEffizienz + team->antriebEffizienz ) );
+                double treibstoff = 1.5 * ( ( current.wendigkeit + team->wendigkeit ) / 5 )
+                    * tv * ( 100 / ( current.antriebEffizienz + team->antriebEffizienz ) );
                 current.treibstoffVerbraucht += treibstoff;
                 double factor = 1;
                 if( treibstoff > current.energie )
@@ -346,8 +346,8 @@ bool Spieler::tick( int time, Karte *zMap )
                 Vertex hp;
                 Vertex mv;
                 float r;
-                double treibstoff = 0.25 * ( ( current.wendigkeit + team->wendigkeit ) / wendigkeitStart )
-                    * akkuLeistungStart * tv * ( 100 / ( current.antriebEffizienz + team->antriebEffizienz ) );
+                double treibstoff = 1.5 * ( ( current.wendigkeit + team->wendigkeit ) / 5 )
+                    * tv * ( 100 / ( current.antriebEffizienz + team->antriebEffizienz ) );
                 current.treibstoffVerbraucht += treibstoff;
                 double factor = 1;
                 if( treibstoff > current.energie )
@@ -449,7 +449,8 @@ void Spieler::setSkill( int art )
     switch( art )
     {
     case 0: // Max Stabilität
-        current.maxStabilität += 20;
+        current.maxStabilität += 10;
+        current.stabilität += 10;
         team->maxStabilität = team->getMaxStabilitätBonus();
         break;
     case 1: // Max Energie
@@ -457,7 +458,7 @@ void Spieler::setSkill( int art )
         team->maxEnergie = team->getMaxEnergieBonus();
         break;
     case 2: // Reparatur
-        current.reparatur += 0.2;
+        current.reparatur += 0.15;
         team->reparatur = team->getReperaturBonus();
         break;
     case 3: // Laser Intensität
@@ -465,19 +466,19 @@ void Spieler::setSkill( int art )
         team->laserIntensität = team->getLaserIntensitätBonus();
         break;
     case 4: // Laser Effizienz
-        current.laserEffizienz += 1.5;
+        current.laserEffizienz += 1;
         team->laserEffizienz = team->getLaserEffizienzBonus();
         break;
     case 5: // Laser Tempo
-        current.laserTempo += 10;
+        current.laserTempo += 20;
         team->laserTempo = team->getLaserTempoBonus();
         break;
     case 6: // Beschleunigung
-        current.beschleunigung += 0.15;
+        current.beschleunigung += 1;
         team->beschleunigung = team->getBeschleunigungBonus();
         break;
     case 7: // Wendigkeit
-        current.wendigkeit += 0.15;
+        current.wendigkeit += 0.25;
         team->wendigkeit = team->getWendigkeitBonus();
         break;
     case 8: // Netzwerk
@@ -491,9 +492,10 @@ void Spieler::setSkill( int art )
         team->beschleunigung = team->getBeschleunigungBonus();
         team->wendigkeit = team->getWendigkeitBonus();
         team->akkuLeistung = team->getAkkuLeistungBonus();
+        team->antriebEffizienz = team->getAntriebEffizienzBonus();
         break;
     case 9: // Akkuleistung
-        current.akkuLeistung += 0.2;
+        current.akkuLeistung += 0.12;
         team->akkuLeistung = team->getAkkuLeistungBonus();
         break;
     case 10: // Antrieb Effizienz