Explorar o código

Geschosse werden nun mittig vom Spieler plaziert

Kolja Strohm %!s(int64=5) %!d(string=hai) anos
pai
achega
c7d516a252

+ 10 - 0
StickmanWorldOnline/Geschoss.cpp

@@ -5,6 +5,8 @@
 Geschoss::Geschoss( ResourceRegistry *zResources, int id, float speed, GeschossTyp typ, Richtung r, int x, int y, Spieler *besitzer )
     : GameObject( GESCHOSS, x, y, 15, 15 )
 {
+    setX( getX() - 15.f / 2 );
+    setY( getY() - 15.f / 2 );
     this->speed = speed;
     this->richtung = r;
     this->besitzer = besitzer;
@@ -94,17 +96,23 @@ void Geschoss::setTyp( GeschossTyp typ )
         }
         if( richtung == OBEN || richtung == UNTEN )
         {
+            setX( getX() + getWidth() / 2 - 7.f / 2 );
+            setY( getY() + getHeight() / 2 - 15 );
             setWidth( 7 );
             setHeight( 30 );
         }
         else
         {
+            setX( getX() + getWidth() / 2 - 15 );
+            setY( getY() + getHeight() / 2 - 7.f / 2 );
             setWidth( 30 );
             setHeight( 7 );
         }
     }
     else if( typ == GESCHOSS_FEUERBALL )
     {
+        setX( getX() + getWidth() / 2 - 10 );
+        setY( getY() + getHeight() / 2 - 10 );
         setWidth( 20 );
         setHeight( 20 );
         currentImage = 0;
@@ -113,6 +121,8 @@ void Geschoss::setTyp( GeschossTyp typ )
     }
     else
     {
+        setX( getX() + getWidth() / 2 - 15.f /2 );
+        setY( getY() + getHeight() / 2 - 15.f / 2 );
         setWidth( 15 );
         setHeight( 15 );
         if( typ == GESCHOSS_DRACHENAUGE )

+ 1 - 1
StickmanWorldOnline/Spiel.cpp

@@ -396,7 +396,7 @@ void Spiel::tick()
                                 s->addEffekt( new DrachenAugeEffect( g->zBesitzer(), s._ ) );
                                 break;
                             case GESCHOSS_FEUERBALL:
-                                feuer.add( new FeuerballTreffer( resources, ++nextId, (int)g->getX() - 70, (int)g->getY() - 70, g->getBesitzer(), 10 ) );
+                                feuer.add( new FeuerballTreffer( resources, ++nextId, (int)g->getX() - (int)g->getWidth() / 2, (int)g->getY() - (int)g->getHeight() / 2, g->getBesitzer(), 10 ) );
                                 break;
                             case GESCHOSS_MINE:
                                 for( auto s2 = spieler.getIterator(); s2; s2++ )

+ 5 - 5
StickmanWorldOnline/Spieler.cpp

@@ -600,7 +600,7 @@ void Spieler::useItem( Spiel *zSpiel )
         case PFEIL:
             geschosseGeschossen++;
             zSpiel->setSpielerZuletztGeschossen( (Spieler *)getThis() );
-            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_PFEIL, getAusrichtung(), (int)x, (int)y, (Spieler *)getThis() ) );
+            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_PFEIL, getAusrichtung(), (int)x + (int)getWidth() / 2, (int)y + (int)getHeight() / 2, (Spieler *)getThis() ) );
             break;
         case LEBEN:
             addEffekt( new LebenEffect( this ) );
@@ -617,7 +617,7 @@ void Spieler::useItem( Spiel *zSpiel )
         case KUGEL:
             geschosseGeschossen++;
             zSpiel->setSpielerZuletztGeschossen( (Spieler *)getThis() );
-            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_KUGEL, getAusrichtung(), (int)x, (int)y, (Spieler *)getThis() ) );
+            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_KUGEL, getAusrichtung(), (int)x + (int)getWidth() / 2, (int)y + (int)getHeight() / 2, (Spieler *)getThis() ) );
             break;
         case ROLLE:
             addEffekt( new RolleEffect( zSpiel->zResources(), this, getAusrichtung() ) );
@@ -628,12 +628,12 @@ void Spieler::useItem( Spiel *zSpiel )
         case DRACHENAUGE:
             geschosseGeschossen++;
             zSpiel->setSpielerZuletztGeschossen( (Spieler *)getThis() );
-            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_DRACHENAUGE, getAusrichtung(), (int)x, (int)y, (Spieler *)getThis() ) );
+            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_DRACHENAUGE, getAusrichtung(), (int)x + (int)getWidth() / 2, (int)y + (int)getHeight() / 2, (Spieler *)getThis() ) );
             break;
         case FEUERBALL:
             geschosseGeschossen++;
             zSpiel->setSpielerZuletztGeschossen( (Spieler *)getThis() );
-            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_FEUERBALL, getAusrichtung(), (int)x, (int)y, (Spieler *)getThis() ) );
+            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), geschossTempo, GESCHOSS_FEUERBALL, getAusrichtung(), (int)x + (int)getWidth() / 2, (int)y + (int)getHeight() / 2, (Spieler *)getThis() ) );
             break;
         case ENTERHAKEN:
             addEffekt( new EnterhakenEffect( zSpiel->zResources(), this, getAusrichtung() ) );
@@ -641,7 +641,7 @@ void Spieler::useItem( Spiel *zSpiel )
         case MINE:
             geschosseGeschossen++;
             zSpiel->setSpielerZuletztGeschossen( (Spieler *)getThis() );
-            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), 0, GESCHOSS_MINE, MITTE, (int)x, (int)y, (Spieler *)getThis() ) );
+            zSpiel->addGeschoss( new Geschoss( zSpiel->zResources(), zSpiel->getNextId(), 0, GESCHOSS_MINE, MITTE, (int)x + (int)getWidth() / 2, (int)y + (int)getHeight() / 2, (Spieler *)getThis() ) );
             break;
         default:
             break;