Allow sequences to define a Scale factor.
This commit is contained in:
@@ -113,6 +113,7 @@ namespace OpenRA.Mods.Common.Graphics
|
||||
int[] ISpriteSequence.Frames { get { throw exception; } }
|
||||
Rectangle ISpriteSequence.Bounds { get { throw exception; } }
|
||||
bool ISpriteSequence.IgnoreWorldTint { get { throw exception; } }
|
||||
float ISpriteSequence.Scale { get { throw exception; } }
|
||||
Sprite ISpriteSequence.GetSprite(int frame) { throw exception; }
|
||||
Sprite ISpriteSequence.GetSprite(int frame, WAngle facing) { throw exception; }
|
||||
Sprite ISpriteSequence.GetShadow(int frame, WAngle facing) { throw exception; }
|
||||
@@ -140,6 +141,7 @@ namespace OpenRA.Mods.Common.Graphics
|
||||
public int[] Frames { get; private set; }
|
||||
public Rectangle Bounds { get; private set; }
|
||||
public bool IgnoreWorldTint { get; private set; }
|
||||
public float Scale { get; private set; }
|
||||
|
||||
public readonly uint[] EmbeddedPalette;
|
||||
|
||||
@@ -184,6 +186,7 @@ namespace OpenRA.Mods.Common.Graphics
|
||||
transpose = LoadField(d, "Transpose", false);
|
||||
Frames = LoadField<int[]>(d, "Frames", null);
|
||||
IgnoreWorldTint = LoadField(d, "IgnoreWorldTint", false);
|
||||
Scale = LoadField(d, "Scale", 1f);
|
||||
|
||||
var flipX = LoadField(d, "FlipX", false);
|
||||
var flipY = LoadField(d, "FlipY", false);
|
||||
|
||||
@@ -280,7 +280,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
{
|
||||
return anims.Where(b => b.IsVisible
|
||||
&& b.Animation.Animation.CurrentSequence != null)
|
||||
.Select(a => (a.Animation.Animation.Image.Size.XY * Info.Scale).ToInt2())
|
||||
.Select(a => (a.Animation.Animation.Image.Size.XY * a.Animation.Animation.CurrentSequence.Scale * Info.Scale).ToInt2())
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
var pos = self.CenterPosition - new WVec(0, 0, dat.Length);
|
||||
var palette = wr.Palette(info.ShadowPalette);
|
||||
var tintModifiers = shadow.CurrentSequence.IgnoreWorldTint ? TintModifiers.IgnoreWorldTint : TintModifiers.None;
|
||||
return new IRenderable[] { new SpriteRenderable(shadow.Image, pos, info.ShadowOffset, info.ShadowZOffset, palette, 1, true, tintModifiers) };
|
||||
return new IRenderable[] { new SpriteRenderable(shadow.Image, pos, info.ShadowOffset, info.ShadowZOffset, palette, shadow.CurrentSequence.Scale, true, tintModifiers) };
|
||||
}
|
||||
|
||||
IEnumerable<Rectangle> IRender.ScreenBounds(Actor self, WorldRenderer wr)
|
||||
|
||||
@@ -294,8 +294,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (fogSprite != null)
|
||||
fogPos += fogSprite.Offset - 0.5f * fogSprite.Size;
|
||||
|
||||
shroudLayer.Update(uv, shroudSprite, shroudPaletteReference, shroudPos, true);
|
||||
fogLayer.Update(uv, fogSprite, fogPaletteReference, fogPos, true);
|
||||
shroudLayer.Update(uv, shroudSprite, shroudPaletteReference, shroudPos, 1f, true);
|
||||
fogLayer.Update(uv, fogSprite, fogPaletteReference, fogPos, 1f, true);
|
||||
}
|
||||
|
||||
anyCellDirty = false;
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
var sprite = tileCache.TileSprite(tile);
|
||||
var paletteReference = worldRenderer.Palette(palette);
|
||||
spriteLayer.Update(cell, sprite, paletteReference, false);
|
||||
spriteLayer.Update(cell, sprite, paletteReference);
|
||||
}
|
||||
|
||||
void IRenderTerrain.RenderTerrain(WorldRenderer wr, Viewport viewport)
|
||||
|
||||
Reference in New Issue
Block a user