stratagus-cvs
[Top][All Lists]
Advanced

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

[Stratagus-CVS] stratagus/src/action action_demolish.c


From: Russell Smith
Subject: [Stratagus-CVS] stratagus/src/action action_demolish.c
Date: Sat, 13 Sep 2003 22:46:36 -0400

CVSROOT:        /cvsroot/stratagus
Module name:    stratagus
Branch:         
Changes by:     Russell Smith <address@hidden>  03/09/13 22:46:36

Modified files:
        src/action     : action_demolish.c 

Log message:
        Use Same Circles for demolish as for vision and attack

Patches:
Index: stratagus/src/action/action_demolish.c
diff -u stratagus/src/action/action_demolish.c:1.35 
stratagus/src/action/action_demolish.c:1.36
--- stratagus/src/action/action_demolish.c:1.35 Fri Sep 12 13:44:36 2003
+++ stratagus/src/action/action_demolish.c      Sat Sep 13 22:46:36 2003
@@ -26,7 +26,7 @@
 //      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //      02111-1307, USA.
 //
-//     $Id: action_demolish.c,v 1.35 2003/09/12 17:44:36 n0body Exp $
+//     $Id: action_demolish.c,v 1.36 2003/09/14 02:46:36 mr-russ Exp $
 
 //@{
 
@@ -170,14 +170,6 @@
 
                // FIXME: Must play explosion sound
 
-               //      FIXME: Currently we take the X fields, the original 
only the O
-               //              XXXXX ..O..
-               //              XXXXX .OOO.
-               //              XX.XX OO.OO
-               //              XXXXX .OOO.
-               //              XXXXX ..O..
-               //
-
                //
                //       Effect of the explosion on units. Don't bother if 
damage is 0
                //
@@ -185,7 +177,8 @@
                    n=SelectUnits(xmin,ymin, xmax, ymax,table);
                    for( i=0; i<n; ++i ) {
                        if( table[i]->Type->UnitType!=UnitTypeFly && 
table[i]->HP
-                           && table[i] != unit ) {
+                           && table[i] != unit 
+                           && MapDistanceBetweenUnits(unit,table[i]) <= 
unit->Type->DemolishRange) {
                            // Don't hit flying units!
                            HitUnit(unit,table[i],unit->Type->DemolishDamage);
                        }
@@ -198,7 +191,10 @@
                for( ix=xmin; ix<=xmax; ix++ ) {
                    for( iy=ymin; iy<=ymax; iy++ ) {
                        n=TheMap.Fields[ix+iy*TheMap.Width].Flags;
-                       if( n&MapFieldWall ) {
+                       if ( MapDistanceToUnit(ix,iy,unit) > 
unit->Type->DemolishRange ) {
+                           // Not in circle range
+                           continue;
+                       } else if( n&MapFieldWall ) {
                            MapRemoveWall(ix,iy);
                        } else if( n&MapFieldRocks ) {
                            MapRemoveRock(ix,iy);




reply via email to

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