git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1281 993157c7-ee19-0410-b2c4-bb4e9862e678

This commit is contained in:
(no author)
2007-07-15 18:38:44 +00:00
parent 0a6eaeb26f
commit a93426a77f
2 changed files with 14 additions and 23 deletions

View File

@@ -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;
}
} }
} }
} }

View File

@@ -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);
} }