Fixed bug where units left influence behind in some circumstances.

This commit is contained in:
Bob
2009-10-26 22:08:12 +13:00
parent 48a4e421d8
commit 65f7f8c145

View File

@@ -71,7 +71,7 @@ namespace OpenRa.Game.Traits
public UnitMovementType GetMovementType() public UnitMovementType GetMovementType()
{ {
var vi = self.unitInfo as UnitInfo.VehicleInfo; var vi = self.unitInfo as UnitInfo.VehicleInfo;
if (vi == null) return UnitMovementType.Foot; if (vi == null) return UnitMovementType.Foot;
if (vi.WaterBound) return UnitMovementType.Float; if (vi.WaterBound) return UnitMovementType.Float;
return vi.Tracked ? UnitMovementType.Track : UnitMovementType.Wheel; return vi.Tracked ? UnitMovementType.Track : UnitMovementType.Wheel;
} }
@@ -248,22 +248,22 @@ namespace OpenRa.Game.Traits
{ {
var nextCell = parent.path[ parent.path.Count - 1 ]; var nextCell = parent.path[ parent.path.Count - 1 ];
if( ( nextCell - mobile.toCell ) != ( mobile.toCell - mobile.fromCell ) ) if( ( nextCell - mobile.toCell ) != ( mobile.toCell - mobile.fromCell ) )
{ {
if( !CanEnterCell( nextCell, self ) ) if( CanEnterCell( nextCell, self ) )
return null; {
parent.path.RemoveAt( parent.path.Count - 1 );
parent.path.RemoveAt( parent.path.Count - 1 );
var ret = new MoveFirstHalf(
var ret = new MoveFirstHalf( BetweenCells( mobile.fromCell, mobile.toCell ),
BetweenCells( mobile.fromCell, mobile.toCell ), BetweenCells( mobile.toCell, nextCell ),
BetweenCells( mobile.toCell, nextCell ), mobile.facing,
mobile.facing, Util.GetNearestFacing( mobile.facing, Util.GetFacing( nextCell - mobile.toCell, mobile.facing ) ),
Util.GetNearestFacing( mobile.facing, Util.GetFacing( nextCell - mobile.toCell, mobile.facing ) ), moveFraction - moveFractionTotal );
moveFraction - moveFractionTotal ); mobile.fromCell = mobile.toCell;
mobile.fromCell = mobile.toCell; mobile.toCell = nextCell;
mobile.toCell = nextCell; Game.UnitInfluence.Update( mobile );
Game.UnitInfluence.Update( mobile ); return ret;
return ret; }
} }
} }
var ret2 = new MoveSecondHalf( var ret2 = new MoveSecondHalf(