git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1281 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
@@ -72,32 +72,26 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
public override void Tick( double t )
|
public override void Tick( double t )
|
||||||
{
|
{
|
||||||
if (currentOrder == null)
|
if( currentOrder == null )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (float2.WithinEpsilon(location, currentOrder.Destination, 1.0f))
|
if( float2.WithinEpsilon( location, currentOrder.Destination, 1.0f ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Range<float2> r = new Range<float2>(
|
Range<float2> r = new Range<float2>(
|
||||||
new float2(-Speed * (float)t, -Speed * (float)t),
|
new float2( -Speed * (float)t, -Speed * (float)t ),
|
||||||
new float2(Speed * (float)t, Speed * (float)t));
|
new float2( Speed * (float)t, Speed * (float)t ) );
|
||||||
|
|
||||||
float2 d = (currentOrder.Destination - location).Constrain(r);
|
float2 d = ( currentOrder.Destination - location ).Constrain( r );
|
||||||
|
|
||||||
int desiredFacing = GetFacing(d);
|
int desiredFacing = GetFacing( d );
|
||||||
if (desiredFacing == facing)
|
int df = (desiredFacing - facing + 32) % 32;
|
||||||
|
if( df == 0 )
|
||||||
location += d;
|
location += d;
|
||||||
|
else if( df > 16 )
|
||||||
|
facing = ( facing + 31 ) % 32;
|
||||||
else
|
else
|
||||||
{
|
facing = ( facing + 1 ) % 32;
|
||||||
int df = desiredFacing - facing;
|
|
||||||
if (df < 0)
|
|
||||||
df = 32 - df;
|
|
||||||
|
|
||||||
if (df < 32 - df)
|
|
||||||
facing = (facing + 1) % 32;
|
|
||||||
else
|
|
||||||
facing = (facing + 31) % 32;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,20 +37,17 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
foreach (Actor a in actors)
|
foreach (Actor a in actors)
|
||||||
{
|
{
|
||||||
Sprite[] images = a.CurrentImages;
|
|
||||||
|
|
||||||
a.Tick( dt );
|
a.Tick( dt );
|
||||||
|
|
||||||
if (images == null)
|
Sprite[] images = a.CurrentImages;
|
||||||
continue;
|
|
||||||
|
|
||||||
if (a.location.X > range.End.X || a.location.X < range.Start.X - images[0].bounds.Width)
|
if( a.location.X > range.End.X || a.location.X < range.Start.X - images[ 0 ].bounds.Width )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (a.location.Y > range.End.Y || a.location.Y < range.Start.Y - images[0].bounds.Height)
|
if (a.location.Y > range.End.Y || a.location.Y < range.Start.Y - images[0].bounds.Height)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (Sprite image in images)
|
foreach( Sprite image in images )
|
||||||
spriteRenderer.DrawSprite(image, a.location, a.palette);
|
spriteRenderer.DrawSprite(image, a.location, a.palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user