git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1312 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
@@ -10,7 +10,7 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
abstract class Actor
|
abstract class Actor
|
||||||
{
|
{
|
||||||
public float2 renderLocation;
|
public abstract float2 RenderLocation { get; }
|
||||||
public int palette;
|
public int palette;
|
||||||
public abstract Sprite[] CurrentImages { get; }
|
public abstract Sprite[] CurrentImages { get; }
|
||||||
public virtual void Tick(World world, double t) { }
|
public virtual void Tick(World world, double t) { }
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ namespace OpenRa.Game
|
|||||||
class Building : Actor
|
class Building : Actor
|
||||||
{
|
{
|
||||||
protected Animation animation;
|
protected Animation animation;
|
||||||
|
protected int2 location;
|
||||||
|
|
||||||
public Building( string name, int2 location, int palette )
|
public Building( string name, int2 location, int palette )
|
||||||
{
|
{
|
||||||
this.renderLocation = 24.0f * location.ToFloat2();
|
this.location = location;
|
||||||
this.palette = palette;
|
this.palette = palette;
|
||||||
|
|
||||||
animation = new Animation( name );
|
animation = new Animation( name );
|
||||||
@@ -26,5 +27,10 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
get { return animation.Images; }
|
get { return animation.Images; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override float2 RenderLocation
|
||||||
|
{
|
||||||
|
get { return 24.0f * location.ToFloat2(); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,17 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
class Tree : Actor
|
class Tree : Actor
|
||||||
{
|
{
|
||||||
|
int2 location;
|
||||||
|
|
||||||
public Tree(TreeReference r, TreeCache renderer, Map map)
|
public Tree(TreeReference r, TreeCache renderer, Map map)
|
||||||
{
|
{
|
||||||
renderLocation = 24 * (new float2(r.Location) - new float2(map.XOffset, map.YOffset));
|
location = new int2( r.Location ) - new int2( map.XOffset, map.YOffset );
|
||||||
currentImages = new Sprite[] { renderer.GetImage(r.Image) };
|
currentImages = new Sprite[] { renderer.GetImage(r.Image) };
|
||||||
}
|
}
|
||||||
|
|
||||||
Sprite[] currentImages;
|
Sprite[] currentImages;
|
||||||
|
|
||||||
public override Sprite[] CurrentImages { get { return currentImages; } }
|
public override Sprite[] CurrentImages { get { return currentImages; } }
|
||||||
|
|
||||||
|
public override float2 RenderLocation { get { return 24 * location.ToFloat2(); } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
fromCell = toCell = cell;
|
fromCell = toCell = cell;
|
||||||
this.renderOffset = renderOffset;
|
this.renderOffset = renderOffset;
|
||||||
// HACK: display the mcv centered in it's cell;
|
|
||||||
renderLocation = ( cell * 24 ).ToFloat2() - renderOffset;
|
|
||||||
this.palette = palette;
|
this.palette = palette;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,17 +99,6 @@ namespace OpenRa.Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float2 location;
|
|
||||||
if( moveFraction > 0 )
|
|
||||||
location = 24 * float2.Lerp( fromCell.ToFloat2(), toCell.ToFloat2(),
|
|
||||||
(float)moveFraction / moveFractionTotal );
|
|
||||||
else
|
|
||||||
location = 24 * fromCell.ToFloat2();
|
|
||||||
|
|
||||||
renderLocation = location - renderOffset;
|
|
||||||
|
|
||||||
renderLocation = renderLocation.Round();
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,5 +117,16 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
get { return toCell; }
|
get { return toCell; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override float2 RenderLocation
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
float fraction = (moveFraction > 0) ? (float)moveFraction / moveFractionTotal : 0f;
|
||||||
|
|
||||||
|
float2 location = 24 * float2.Lerp( fromCell.ToFloat2(), toCell.ToFloat2(), fraction );
|
||||||
|
return ( location - renderOffset ).Round(); ;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,13 +13,11 @@ namespace OpenRa.Game
|
|||||||
List<Actor> actors = new List<Actor>();
|
List<Actor> actors = new List<Actor>();
|
||||||
List<Action<World>> frameEndActions = new List<Action<World>>();
|
List<Action<World>> frameEndActions = new List<Action<World>>();
|
||||||
SpriteRenderer spriteRenderer;
|
SpriteRenderer spriteRenderer;
|
||||||
Renderer renderer;
|
|
||||||
Viewport viewport;
|
Viewport viewport;
|
||||||
public ISelectable myUnit;
|
public ISelectable myUnit;
|
||||||
|
|
||||||
public World(Renderer renderer, Viewport viewport)
|
public World(Renderer renderer, Viewport viewport)
|
||||||
{
|
{
|
||||||
this.renderer = renderer;
|
|
||||||
this.viewport = viewport;
|
this.viewport = viewport;
|
||||||
viewport.AddRegion(Region.Create(viewport, DockStyle.Left, viewport.Width - 128, Draw));
|
viewport.AddRegion(Region.Create(viewport, DockStyle.Left, viewport.Width - 128, Draw));
|
||||||
spriteRenderer = new SpriteRenderer(renderer, true);
|
spriteRenderer = new SpriteRenderer(renderer, true);
|
||||||
@@ -44,15 +42,16 @@ namespace OpenRa.Game
|
|||||||
a.Tick( this, dt );
|
a.Tick( this, dt );
|
||||||
|
|
||||||
Sprite[] images = a.CurrentImages;
|
Sprite[] images = a.CurrentImages;
|
||||||
|
float2 loc = a.RenderLocation;
|
||||||
|
|
||||||
if( a.renderLocation.X > range.End.X || a.renderLocation.X < range.Start.X - images[ 0 ].bounds.Width )
|
if( loc.X > range.End.X || loc.X < range.Start.X - images[ 0 ].bounds.Width )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (a.renderLocation.Y > range.End.Y || a.renderLocation.Y < range.Start.Y - images[0].bounds.Height)
|
if( loc.Y > range.End.Y || loc.Y < range.Start.Y - images[ 0 ].bounds.Height )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach( Sprite image in images )
|
foreach( Sprite image in images )
|
||||||
spriteRenderer.DrawSprite(image, a.renderLocation, a.palette);
|
spriteRenderer.DrawSprite(image, loc, a.palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach( Action<World> a in frameEndActions )
|
foreach( Action<World> a in frameEndActions )
|
||||||
|
|||||||
Reference in New Issue
Block a user