Parcourir la source

Einiege Fehler behoben

Kolja Strohm il y a 5 ans
Parent
commit
13e6245dc1
7 fichiers modifiés avec 21 ajouts et 29 suppressions
  1. 7 7
      Asteroids/Klient.cpp
  2. 1 1
      Asteroids/Laser.cpp
  3. 1 1
      Asteroids/Laser.h
  4. 1 1
      Asteroids/SSKlient.h
  5. 6 16
      Asteroids/Spiel.cpp
  6. 3 1
      Asteroids/Spieler.cpp
  7. 2 2
      Asteroids/Spieler.h

+ 7 - 7
Asteroids/Klient.cpp

@@ -100,21 +100,21 @@ void Klient::sendeSkillNachricht( int sNum, char art, int spielZeit )
 	delete[] bytes;
 }
 
-void Klient::sendeSchuss( int id, int sNum, Vec2< double > pos, Vec2< double > speed, double intensity, int spielZeit )
+void Klient::sendeSchuss( int id, int sNum, Vertex pos, Vertex speed, double intensity, int spielZeit )
 {
 	if( !klient )
 		return;
-	short len = 53;
+	short len = 37;
 	char *bytes = new char[ len ];
 	*(int*)bytes = spielZeit;
 	*(char*)( bytes + 4 ) = 0xD;
 	*(int*)( bytes + 5 ) = id;
 	*(int*)( bytes + 9 ) = sNum;
-	*(double*)( bytes + 13 ) = pos.x;
-	*(double*)( bytes + 21 ) = pos.y;
-	*(double*)( bytes + 29 ) = speed.x;
-	*(double*)( bytes + 37 ) = speed.y;
-	*(double*)( bytes + 45 ) = intensity;
+	*(float*)( bytes + 13 ) = pos.x;
+	*(float*)( bytes + 17 ) = pos.y;
+	*(float*)( bytes + 21 ) = speed.x;
+	*(float*)( bytes + 25 ) = speed.y;
+	*(double*)( bytes + 29 ) = intensity;
 	klient->spielNachricht( len, bytes );
 	delete[] bytes;
 }

+ 1 - 1
Asteroids/Laser.cpp

@@ -3,7 +3,7 @@
 
 // Inhalt der Laser Klasse aus Laser.h
 // Konstruktor
-Laser::Laser( int id, Vec2< double > pos, Vec2< double > speed, int sNum, double intensity )
+Laser::Laser( int id, Vertex pos, Vertex speed, int sNum, double intensity )
     : Object2D()
 {
 	this->id = id;

+ 1 - 1
Asteroids/Laser.h

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

+ 1 - 1
Asteroids/SSKlient.h

@@ -31,7 +31,7 @@ public:
 	void sendeStart( int spielZeit );
 	void sendeTastaturStatus( int spielerId, TastaturStatus ts, bool aktiv, int spielZeit );
 	void sendeSkillNachricht( int sNum, char art, int spielZeit );
-	void sendeSchuss( int id, int sNum, Vec2< double > pos, Vec2< double > speed, double intensity, int spielZeit );
+	void sendeSchuss( int id, int sNum, Vertex pos, Vertex speed, double intensity, int spielZeit );
 	void sendeTreffer( int id, int sNum, int spielZeit );
 	void sendeWiederbelebung( int sNum, int spielZeit );
 	void sendeTod( int sNum, int killSNum, int spielZeit );

+ 6 - 16
Asteroids/Spiel.cpp

@@ -158,20 +158,9 @@ 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++ )
@@ -423,9 +412,10 @@ void Spiel::tick( double zeit )
 		Spieler *tmp = spieler->z( i );
 		if( tmp )
 		{
-			Laser *nL = tmp->getLaser( nextSchussId++ );
+			Laser *nL = tmp->getLaser( nextSchussId );
 			if( nL )
 			{
+                nextSchussId++;
                 welt->addObject( nL->getThis() );
 				shots->add( nL );
 				for( int j = 0; j < spielerAnzahl; j++ )
@@ -457,11 +447,11 @@ void Spiel::run()
 		Spieler *tmp = spieler->z( i );
 		if( tmp && tmp->zKlient() )
 		{
-			tmp->zKlient()->sendeInit( spieler, 0 );
+			tmp->zKlient()->sendeInit( spieler, -1 );
 			log->schreibe( (char*)&i, 4 );
 			int sNum = tmp->getSpielerNummer();
 			log->schreibe( (char*)&sNum, 4 );
-			tmp->zKlient()->sendeSpielerNummer( sNum, 0 );
+			tmp->zKlient()->sendeSpielerNummer( sNum, -1 );
 			int team = tmp->zTeam()->id;
 			log->schreibe( (char*)&team, 4 );
 			int farbe = tmp->getSpielerFarbe();
@@ -494,7 +484,7 @@ void Spiel::run()
 	{
 		Spieler *tmp = spieler->z( i );
 		if( tmp && tmp->zKlient() )
-			tmp->zKlient()->sendeStart( 0 );
+			tmp->zKlient()->sendeStart( spielZeit );
 	}
 	double rZeit = 0;
 	while( !ende )

+ 3 - 1
Asteroids/Spieler.cpp

@@ -334,7 +334,7 @@ Laser *Spieler::getLaser( int sId )
     schussAbk = 1;
     energieAbk = 1.5;
     shots++;
-    Vec2< double > sSpeed = ( Vec2<double>( cos( rotation ), sin( rotation ) ) * ( laserTempo + team->laserTempo ) );
+    Vertex sSpeed = ( Vertex( (float)cos( rotation ), (float)sin( rotation ) ) * (float)( laserTempo + team->laserTempo ) );
     sSpeed += speed;
     return new Laser( sId, getPosition(), sSpeed, sNum, laserIntensity + team->laserIntensity );
 }
@@ -358,6 +358,7 @@ bool Spieler::nimmSchaden( double &intensity )
     if( stability <= 0 )
     {
         amLeben = 0;
+        setCollision( 0 );
         tode++;
         stability = 0;
         reinkAbk += maxReinkAbk;
@@ -398,6 +399,7 @@ void Spieler::wiederbeleben()
     for( int i = 0; i < T_MAX; i++ )
         tastatur[ i ] = 0;
     amLeben = 1;
+    setCollision( 1 );
 }
 
 // constant

+ 2 - 2
Asteroids/Spieler.h

@@ -45,8 +45,8 @@ private:
 	double repAbk;
 	double reinkAbk;
 	int maxReinkAbk;
-	// Raumschiff Eigenschaften
-	Vec2< double > startPos;
+	// Raumschiff Eigenschaftend
+	Vertex startPos;
 	double beschleunigung;
     double beschleunigungStart;
 	double energie;