Allow changing ZOffset of renderables in ActorPreviewPlaceBuildingPreview

This commit is contained in:
michaeldgg2
2023-10-26 20:59:59 +02:00
committed by abcdefg30
parent 216758dbc7
commit b9b5b90330

View File

@@ -33,6 +33,9 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Footprint types to draw above the actor preview.")] [Desc("Footprint types to draw above the actor preview.")]
public readonly PlaceBuildingCellType FootprintOverPreview = PlaceBuildingCellType.Invalid; public readonly PlaceBuildingCellType FootprintOverPreview = PlaceBuildingCellType.Invalid;
[Desc("Custom ZOffset of the rendered building preview.")]
public readonly int ZOffset = 0;
protected override IPlaceBuildingPreview CreatePreview(WorldRenderer wr, ActorInfo ai, TypeDictionary init) protected override IPlaceBuildingPreview CreatePreview(WorldRenderer wr, ActorInfo ai, TypeDictionary init)
{ {
return new ActorPreviewPlaceBuildingPreviewPreview(wr, ai, this, init); return new ActorPreviewPlaceBuildingPreviewPreview(wr, ai, this, init);
@@ -82,10 +85,14 @@ namespace OpenRA.Mods.Common.Traits
foreach (var r in previewRenderables.OrderBy(WorldRenderer.RenderableZPositionComparisonKey)) foreach (var r in previewRenderables.OrderBy(WorldRenderer.RenderableZPositionComparisonKey))
{ {
var renderable = r;
if (info.PreviewAlpha < 1f && r is IModifyableRenderable mr) if (info.PreviewAlpha < 1f && r is IModifyableRenderable mr)
yield return mr.WithAlpha(mr.Alpha * info.PreviewAlpha); renderable = mr.WithAlpha(mr.Alpha * info.PreviewAlpha);
else
yield return r; if (info.ZOffset != 0)
renderable = renderable.WithZOffset(info.ZOffset);
yield return renderable;
} }
if (info.FootprintOverPreview != PlaceBuildingCellType.None) if (info.FootprintOverPreview != PlaceBuildingCellType.None)