Fixed bug where unit would occasionally "disappear" or face in an odd direction.

This commit is contained in:
Bob
2009-10-24 20:48:36 +13:00
parent f6ae86bb53
commit 5086f6ab51
4 changed files with 47 additions and 48 deletions

View File

@@ -22,21 +22,21 @@ namespace OpenRa.Game.Traits
{
this.self = self;
fromCell = toCell;
}
public void QueueAction( CurrentAction nextAction )
{
if( currentAction == null )
{
currentAction = nextAction;
return;
}
var act = currentAction;
while( act.NextAction != null )
{
act = act.NextAction;
}
act.NextAction = nextAction;
}
public void QueueAction( CurrentAction nextAction )
{
if( currentAction == null )
{
currentAction = nextAction;
return;
}
var act = currentAction;
while( act.NextAction != null )
{
act = act.NextAction;
}
act.NextAction = nextAction;
}
public void Tick(Actor self)
@@ -48,25 +48,25 @@ namespace OpenRa.Game.Traits
}
public Order Order(Actor self, int2 xy, bool lmb)
{
{
if( lmb ) return null;
if (xy != toCell)
return new MoveOrder(self, xy);
return null;
}
public void Cancel(Actor self)
{
if (currentAction != null)
currentAction.Cancel(self, this);
}
public void Cancel(Actor self)
{
if (currentAction != null)
currentAction.Cancel(self, this);
}
public interface CurrentAction
{
{
CurrentAction NextAction { get; set; }
void Tick( Actor self, Mobile mobile );
void Tick( Actor self, Mobile mobile );
void Cancel( Actor self, Mobile mobile );
}
@@ -91,12 +91,12 @@ namespace OpenRa.Game.Traits
return;
}
Util.TickFacing( ref mobile.facing, desiredFacing, self.unitInfo.ROT );
}
public void Cancel( Actor self, Mobile mobile )
{
desiredFacing = mobile.facing;
NextAction = null;
}
public void Cancel( Actor self, Mobile mobile )
{
desiredFacing = mobile.facing;
NextAction = null;
}
}
@@ -168,7 +168,6 @@ namespace OpenRa.Game.Traits
{
moveFraction -= moveFractionTotal;
OnComplete( self, mobile );
//mobile.fromCell = mobile.toCell;
}
return;
}
@@ -177,7 +176,7 @@ namespace OpenRa.Game.Traits
{
self.CenterLocation = float2.Lerp( from, to, frac );
if( moveFraction >= moveFractionTotal )
mobile.facing = toFacing;
mobile.facing = toFacing & 0xFF;
else
mobile.facing = ( fromFacing + ( toFacing - fromFacing ) * moveFraction / moveFractionTotal ) & 0xFF;
}
@@ -231,12 +230,12 @@ namespace OpenRa.Game.Traits
self.CenterLocation = CenterOfCell( mobile.toCell );
OnComplete = null;
mobile.fromCell = mobile.toCell;
}
public void Cancel( Actor self, Mobile mobile )
{
path.Clear();
NextAction = null;
}
public void Cancel( Actor self, Mobile mobile )
{
path.Clear();
NextAction = null;
}
}
}