Change Renderable to take centered positions.
This commit is contained in:
@@ -40,10 +40,11 @@ namespace OpenRA.Graphics
|
||||
public Renderable Image(Actor self, WorldRenderer wr, PaletteReference pal, float scale)
|
||||
{
|
||||
var p = self.CenterLocation;
|
||||
var loc = p.ToFloat2() - 0.5f * scale * Animation.Image.size
|
||||
+ (OffsetFunc != null ? OffsetFunc(wr) : float2.Zero);
|
||||
var offset = p.ToFloat2();
|
||||
if (OffsetFunc != null)
|
||||
offset += OffsetFunc(wr);
|
||||
|
||||
return new Renderable(Animation.Image, loc, pal, p.Y, ZOffset, scale);
|
||||
return new Renderable(Animation.Image, offset, pal, p.Y, ZOffset, scale);
|
||||
}
|
||||
|
||||
public static implicit operator AnimationWithOffset(Animation a)
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public void Render(WorldRenderer wr)
|
||||
{
|
||||
Sprite.DrawAt(Pos, Palette.Index, Scale);
|
||||
Sprite.DrawAt(Pos - 0.5f*Scale*Sprite.size, Palette.Index, Scale);
|
||||
}
|
||||
|
||||
public Size Size
|
||||
|
||||
@@ -30,15 +30,16 @@ namespace OpenRA.Traits
|
||||
[Desc("Number of facings for gameplay calculations. -1 indiciates auto-detection from sequence")]
|
||||
public readonly int QuantizedFacings = -1;
|
||||
|
||||
[Desc("Camera pitch the sprite was rendered with. Used to determine rotation ellipses")]
|
||||
public readonly WAngle CameraPitch = WAngle.FromDegrees(40);
|
||||
public virtual object Create(ActorInitializer init) { return new RenderSimple(init.self); }
|
||||
|
||||
public virtual IEnumerable<Renderable> RenderPreview(ActorInfo building, PaletteReference pr)
|
||||
public virtual IEnumerable<Renderable> RenderPreview(ActorInfo ai, PaletteReference pr)
|
||||
{
|
||||
var anim = new Animation(RenderSimple.GetImage(building), () => 0);
|
||||
var anim = new Animation(RenderSimple.GetImage(ai), () => 0);
|
||||
anim.PlayRepeating("idle");
|
||||
|
||||
yield return new Renderable(anim.Image, 0.5f * anim.Image.size * (1 - Scale), pr, 0, Scale);
|
||||
yield return new Renderable(anim.Image, 0.5f*anim.Image.size, pr, 0, Scale);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Cnc.Effects
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
yield return new Renderable(anim.Image,
|
||||
target.CenterLocation.ToFloat2() - new float2(.5f * anim.Image.size.X, anim.Image.size.Y - Game.CellSize),
|
||||
target.CenterLocation.ToFloat2() - new float2(0, 0.5f*anim.Image.size.Y - Game.CellSize),
|
||||
wr.Palette("effect"), (int)target.CenterLocation.Y);
|
||||
}
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace OpenRA.Mods.RA
|
||||
}
|
||||
|
||||
foreach (var t in TileSprites[currentTemplate])
|
||||
yield return new Renderable(t.Value, t.Key.ToPPos().ToFloat2(), terrainPalette, Game.CellSize * t.Key.Y);
|
||||
yield return new Renderable(t.Value, Traits.Util.CenterOfCell(t.Key).ToFloat2(), terrainPalette, Game.CellSize * t.Key.Y);
|
||||
}
|
||||
|
||||
void KillUnitsOnBridge()
|
||||
|
||||
@@ -166,14 +166,14 @@ namespace OpenRA.Mods.RA.Effects
|
||||
if (Info.High || Info.Angle > 0)
|
||||
{
|
||||
if (Info.Shadow)
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, wr.Palette("shadow"), (int)pos.Y);
|
||||
yield return new Renderable(anim.Image, pos, wr.Palette("shadow"), (int)pos.Y);
|
||||
|
||||
var highPos = pos - new float2(0, GetAltitude());
|
||||
|
||||
yield return new Renderable(anim.Image, highPos - .5f * anim.Image.size, wr.Palette("effect"), (int)pos.Y);
|
||||
yield return new Renderable(anim.Image, highPos, wr.Palette("effect"), (int)pos.Y);
|
||||
}
|
||||
else
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size,
|
||||
yield return new Renderable(anim.Image, pos,
|
||||
wr.Palette(Args.weapon.Underwater ? "shadow" : "effect"), (int)pos.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, wr.Palette(paletteName), (int)pos.Y);
|
||||
yield return new Renderable(anim.Image, pos, wr.Palette(paletteName), (int)pos.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
{
|
||||
if (a.IsInWorld)
|
||||
yield return new Renderable(anim.Image,
|
||||
a.CenterLocation.ToFloat2() - .5f * anim.Image.size + offset,
|
||||
a.CenterLocation.ToFloat2() + offset,
|
||||
wr.Palette("effect"), (int)a.CenterLocation.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,8 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
yield return new Renderable(anim.Image,
|
||||
pos.ToFloat2() - .5f * anim.Image.size - new int2(0,altitude),
|
||||
wr.Palette("effect"), (int)pos.Y - altitude);
|
||||
var p = pos.ToInt2() - new int2(0, altitude);
|
||||
yield return new Renderable(anim.Image, p, wr.Palette("effect"), p.Y);
|
||||
}
|
||||
|
||||
public Player Owner { get { return null; } }
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
var p = self.CenterLocation;
|
||||
var palette = wr.Palette(info.IndicatorPalettePrefix+self.Owner.InternalName);
|
||||
yield return new Renderable(anim.Image, p.ToFloat2() - 0.5f * anim.Image.size, palette, p.Y)
|
||||
yield return new Renderable(anim.Image, p.ToFloat2(), palette, p.Y)
|
||||
.WithScale(1.5f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
yield return new Renderable(anim.Image,offset, wr.Palette("effect"), (int)offset.Y);
|
||||
yield return new Renderable(anim.Image, offset, wr.Palette("effect"), (int)offset.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
if (explosion != null)
|
||||
yield return new Renderable(explosion.Image, args.dest.ToFloat2() - .5f * explosion.Image.size,
|
||||
yield return new Renderable(explosion.Image, args.dest.ToFloat2(),
|
||||
wr.Palette("effect"), (int)args.dest.Y);
|
||||
|
||||
if (ticks >= info.BeamDuration)
|
||||
|
||||
@@ -177,7 +177,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
if (!Args.firedBy.World.FogObscures(PxPosition.ToCPos()))
|
||||
yield return new Renderable(anim.Image, PxPosition.ToFloat2() - 0.5f * anim.Image.size - new float2(0, Altitude),
|
||||
yield return new Renderable(anim.Image, PxPosition.ToFloat2() - new float2(0, Altitude),
|
||||
wr.Palette(Args.weapon.Underwater ? "shadow" : "effect"), PxPosition.Y);
|
||||
|
||||
if (Trail != null)
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
yield return new Renderable(anim.Image, pos.ToFloat2() - 0.5f * anim.Image.size - new float2(0, altitude),
|
||||
yield return new Renderable(anim.Image, pos.ToFloat2() - new float2(0, altitude),
|
||||
wr.Palette("effect"), (int)pos.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
}
|
||||
|
||||
var pos = location.ToFloat2() - new float2(0, altitude);
|
||||
yield return new Renderable(paraAnim.Image, pos - .5f * paraAnim.Image.size + offset, rc.First().Palette, 3);
|
||||
yield return new Renderable(paraAnim.Image, pos + offset, rc.First().Palette, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
if (!a.Destroyed && a.Owner.IsAlliedWith(a.World.RenderPlayer))
|
||||
yield return new Renderable(anim.Image, a.CenterLocation.ToFloat2() - .5f * anim.Image.size,
|
||||
yield return new Renderable(anim.Image, a.CenterLocation.ToFloat2(),
|
||||
wr.Palette("chrome"), (int)a.CenterLocation.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
if (!building.Destroyed)
|
||||
{
|
||||
yield return new Renderable(anim.Image,
|
||||
building.CenterLocation.ToFloat2() - .5f * anim.Image.size,
|
||||
building.CenterLocation.ToFloat2(),
|
||||
wr.Palette(palettePrefix+player.InternalName), (int)building.CenterLocation.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
doors.PlayThen("active",
|
||||
() => a.World.AddFrameEndTask(w => w.Remove(this)));
|
||||
|
||||
pos = a.CenterLocation.ToFloat2() - .5f * doors.Image.size + doorOffset;
|
||||
pos = a.CenterLocation.ToFloat2() + doorOffset;
|
||||
}
|
||||
|
||||
public void Tick( World world )
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
yield return new Renderable(anim.Image, pos.ToFloat2() - .5f * anim.Image.size,
|
||||
yield return new Renderable(anim.Image, pos.ToFloat2(),
|
||||
wr.Palette("effect"), (int)pos.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,14 +137,14 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
static int[][] steps = new []
|
||||
{
|
||||
new int[] { 8, 8, -8, -8, 0 },
|
||||
new int[] { -8, -8, -16, -16, 0 },
|
||||
new int[] { 8, 0, -8, -8, 1 },
|
||||
new int[] { -8, 0, -16, -8, 1 },
|
||||
new int[] { 0, 8, -8, -8, 2 },
|
||||
new int[] { 0, -8, -8, -16, 2 },
|
||||
new int[] { -8, 8, -16, -8, 3 },
|
||||
new int[] { 8, -8, -8, -16, 3 }
|
||||
new int[] { 8, 8, 4, 4, 0 },
|
||||
new int[] { -8, -8, -4, -4, 0 },
|
||||
new int[] { 8, 0, 4, 4, 1 },
|
||||
new int[] { -8, 0, -4, 4, 1 },
|
||||
new int[] { 0, 8, 4, 4, 2 },
|
||||
new int[] { 0, -8, 4, -4, 2 },
|
||||
new int[] { -8, 8, -4, 4, 3 },
|
||||
new int[] { 8, -8, 4, -4, 3 }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,8 +118,8 @@ namespace OpenRA.Mods.RA
|
||||
yield break;
|
||||
|
||||
var bounds = self.Bounds.Value;
|
||||
yield return new Renderable(RankAnim.Image, new float2(bounds.Right - 6, bounds.Bottom - 8),
|
||||
wr.Palette("effect"), self.CenterLocation.Y);
|
||||
var pos = new float2(bounds.Right, bounds.Bottom - 2);
|
||||
yield return new Renderable(RankAnim.Image, pos, wr.Palette("effect"), self.CenterLocation.Y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ namespace OpenRA.Mods.RA.Render
|
||||
|
||||
public override IEnumerable<Renderable> RenderPreview(ActorInfo building, PaletteReference pr)
|
||||
{
|
||||
return base.RenderPreview(building, pr)
|
||||
.Select(a => a.WithPxOffset(building.Traits.Get<RenderBuildingInfo>().Origin));
|
||||
var origin = building.Traits.Get<RenderBuildingInfo>().Origin;
|
||||
return base.RenderPreview(building, pr).Select(a => a.WithPxOffset(origin));
|
||||
}
|
||||
|
||||
public void Render(WorldRenderer wr, World w, ActorInfo ai, PPos centerLocation)
|
||||
|
||||
@@ -34,8 +34,7 @@ namespace OpenRA.Mods.RA.Render
|
||||
var anim = new Animation(RenderSimple.GetImage(building), () => 0);
|
||||
anim.PlayRepeating("idle-top");
|
||||
var rb = building.Traits.Get<RenderBuildingInfo>();
|
||||
yield return new Renderable(anim.Image, rb.Origin + 0.5f*anim.Image.size*(1 - Scale),
|
||||
pr, 0, Scale);
|
||||
yield return new Renderable(anim.Image, 0.5f*anim.Image.size + rb.Origin, pr, 0, Scale);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user