Browse Source

Einiege Probleme behoben

Kolja Strohm 5 years ago
parent
commit
41133842de
4 changed files with 20 additions and 5 deletions
  1. 2 1
      Asteroids/Laser.cpp
  2. 1 1
      Asteroids/Laser.h
  3. 16 3
      Asteroids/Spiel.cpp
  4. 1 0
      Asteroids/Spieler.cpp

+ 2 - 1
Asteroids/Laser.cpp

@@ -11,6 +11,7 @@ Laser::Laser( int id, Vec2< double > pos, Vec2< double > speed, int sNum, double
     setSpeed( speed );
 	this->sNum = sNum;
 	this->intensity = intensity;
+    setCollision( 0 );
 }
 
 // nicht constant
@@ -21,7 +22,7 @@ bool Laser::tick( const WeltInfo &info, double tickVal )
     return 0;
 }
 
-void Laser::render( Mat3< float > &kamMat, Bild &zRObj )
+void Laser::render( Mat3< float > &kamMat, Bild &zRObj, const char *kamName )
 {}
 
 // constant

+ 1 - 1
Asteroids/Laser.h

@@ -19,7 +19,7 @@ public:
 	Laser( int id, Vec2< double > pos, Vec2< double > speed, int sNum, double intensity );
 	// nicht constant
 	bool tick( const WeltInfo &info, double tickVal ) override;
-    void render( Mat3< float > &kamMat, Bild &zRObj ) override;
+    void render( Mat3< float > &kamMat, Bild &zRObj, const char *kamName ) override;
 	// constant
     Rect2< float > getBoundingBox() const override;
     int getId() const;

+ 16 - 3
Asteroids/Spiel.cpp

@@ -30,7 +30,7 @@ Spiel::Spiel()
 	objekte = new RCArray< SpielObjekt >();
     welt = new Welt2D();
     welt->setCircular( 1 );
-    welt->setAirResistance( 0.01f );
+    welt->setAirResistance( 0.001f );
 	psqldb = 0;
 	spielId = 0;
 	karteId = 0;
@@ -134,6 +134,8 @@ void Spiel::setSpielerNummern( int anzahl, Array< int > *spielerNummern )
             welt->addObject( obj->getThis() );
             objekte->set( obj, i );
         }
+        welt->setSize( karte->getSize().x, karte->getSize().y );
+        welt->setSize( 1 );
 	}
 	for( int i = 0; i < anzahl; i++ )
 	{
@@ -156,9 +158,20 @@ void Spiel::setSpielerNummern( int anzahl, Array< int > *spielerNummern )
 			tmp->setTeam( teams->get( team ) );
 			teams->z( team )->spieler->add( tmp );
 		}
-        welt->addObject( tmp->getThis() );
 		spieler->set( tmp, i );
 	}
+    int min = 0;
+    for( int i = 0; i < anzahl; i++ )
+    {
+        Spieler *lMin = 0;
+        for( auto s = spieler->getIterator(); s; s++ )
+        {
+            if( !lMin || ( s->getSpielerNummer() < lMin->getSpielerNummer() && s->getSpielerNummer() >= min ) )
+                lMin = s;
+        }
+        min = lMin->getSpielerNummer() + 1;
+        welt->addObject( lMin->getThis() );
+    }
 	for( int i = 0; i < anzahl; i++ )
 		spieler->z( i )->setAccountId( zAccounts->hat( i ) ? zAccounts->get( i ) : 0 );
 	for( int i = 0; i < anzahl; i++ )
@@ -476,7 +489,7 @@ void Spiel::run()
 	ende = 0;
 	double ausgleich = 0;
 	double sZ = 0;
-	spielZeit = 0;
+	spielZeit = -1;
 	for( int i = 0; i < spielerAnzahl; i++ )
 	{
 		Spieler *tmp = spieler->z( i );

+ 1 - 0
Asteroids/Spieler.cpp

@@ -384,6 +384,7 @@ void Spieler::machSchaden( double intensity, bool kill )
 
 void Spieler::wiederbeleben()
 {
+    needWiederbelebung = 0;
     setPosition( startPos );
     reinkAbk = maxReinkAbk * 2;
     energie = maxEnergie + team->maxEnergie;