Fixed bug where unit would occasionally "disappear" or face in an odd direction.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user