stratagus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Stratagus-CVS] stratagus/src/missile missile.c


From: Crestez Leonard
Subject: [Stratagus-CVS] stratagus/src/missile missile.c
Date: Wed, 29 Oct 2003 11:04:34 -0500

CVSROOT:        /cvsroot/stratagus
Module name:    stratagus
Branch:         
Changes by:     Crestez Leonard <address@hidden>        03/10/29 11:04:33

Modified files:
        src/missile    : missile.c 

Log message:
        Applied bounce patch.

Patches:
Index: stratagus/src/missile/missile.c
diff -u stratagus/src/missile/missile.c:1.104 
stratagus/src/missile/missile.c:1.105
--- stratagus/src/missile/missile.c:1.104       Sat Oct 25 19:10:44 2003
+++ stratagus/src/missile/missile.c     Wed Oct 29 11:04:32 2003
@@ -26,7 +26,7 @@
 //      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //      02111-1307, USA.
 //
-//     $Id: missile.c,v 1.104 2003/10/25 23:10:44 n0body Exp $
+//     $Id: missile.c,v 1.105 2003/10/29 16:04:32 n0body Exp $
 
 //@{
 
@@ -1346,7 +1346,7 @@
 
     DebugCheck(file == NULL);
     CLprintf(file, "\n;;; -----------------------------------------\n");
-    CLprintf(file, ";;; MODULE: missile-types $Id: missile.c,v 1.104 
2003/10/25 23:10:44 n0body Exp $\n\n");
+    CLprintf(file, ";;; MODULE: missile-types $Id: missile.c,v 1.105 
2003/10/29 16:04:32 n0body Exp $\n\n");
 
     //
     // Original number to internal missile-type name.
@@ -1455,7 +1455,7 @@
 
     DebugCheck(file == NULL);
     CLprintf(file,"\n;;; -----------------------------------------\n");
-    CLprintf(file,";;; MODULE: missiles $Id: missile.c,v 1.104 2003/10/25 
23:10:44 n0body Exp $\n\n");
+    CLprintf(file,";;; MODULE: missiles $Id: missile.c,v 1.105 2003/10/29 
16:04:32 n0body Exp $\n\n");
 
     for (missiles = GlobalMissiles; *missiles; ++missiles) {
        SaveMissile(*missiles, file);
@@ -1659,18 +1659,26 @@
     DebugCheck(missile == NULL);
     missile->Wait = missile->Type->Sleep;
     if (PointToPointMissile(missile)) {
-       if (missile->State < 2 * missile->Type->NumBounces) {
-           int sign;
-           int tmp;
-           missile->State += 2;
-           sign = (tmp = missile->DX - missile->SourceX) ? tmp > 0 ? 1 : -1 : 
0;
-           missile->DX += sign * TileSizeX * 3 / 2;
-           sign = (tmp = missile->DY - missile->SourceY) ? tmp > 0 ? 1 : -1 : 
0;
-           missile->DY += sign * TileSizeY * 3 / 2;
+       if (missile->State < 2 * missile->Type->NumBounces - 1) {
+           int xstep;
+           int ystep;
+
+           xstep = (missile->DX - missile->SourceX) * 1024 / 
missile->TotalStep;
+           ystep = (missile->DY - missile->SourceY) * 1024 / 
missile->TotalStep;
+           missile->DX += xstep * (TileSizeX + TileSizeY) * 3 / 4 / 1024;
+           missile->DY += ystep * (TileSizeX + TileSizeY) * 3 / 4 / 1024;
+
+           missile->State++; // !(State & 1) to initialise
+           missile->SourceX = missile->X;
+           missile->SourceY = missile->Y;
+           PointToPointMissile(missile);
+           //missile->State++;
+           DebugLevel0("HIT %d!\n" _C_ missile->State);
            MissileHit(missile);
            // FIXME: hits to left and right
            // FIXME: reduce damage effects on later impacts
        } else {
+           MissileHit(missile);
            missile->TTL = 0;
        }
     } else {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]