Add layers field to construction prototype (#14222)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Content.Shared.Construction;
|
||||
using Content.Shared.Construction.Prototypes;
|
||||
using Robust.Client.Graphics;
|
||||
@@ -49,16 +50,7 @@ namespace Content.Client.Construction
|
||||
public override void StartHijack(PlacementManager manager)
|
||||
{
|
||||
base.StartHijack(manager);
|
||||
|
||||
var frame = _prototype?.Icon.DirFrame0();
|
||||
if (frame == null)
|
||||
{
|
||||
manager.CurrentTextures = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
manager.CurrentTextures = new List<IDirectionalTextureProvider> {frame};
|
||||
}
|
||||
manager.CurrentTextures = _prototype?.Layers.Select(sprite => sprite.DirFrame0()).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,10 +179,14 @@ namespace Content.Client.Construction
|
||||
_ghosts.Add(comp.GhostId, comp);
|
||||
var sprite = EntityManager.GetComponent<SpriteComponent>(ghost);
|
||||
sprite.Color = new Color(48, 255, 48, 128);
|
||||
sprite.AddBlankLayer(0); // There is no way to actually check if this already exists, so we blindly insert a new one
|
||||
sprite.LayerSetSprite(0, prototype.Icon);
|
||||
sprite.LayerSetShader(0, "unshaded");
|
||||
sprite.LayerSetVisible(0, true);
|
||||
|
||||
for (int i = 0; i < prototype.Layers.Count; i++)
|
||||
{
|
||||
sprite.AddBlankLayer(i); // There is no way to actually check if this already exists, so we blindly insert a new one
|
||||
sprite.LayerSetSprite(i, prototype.Layers[i]);
|
||||
sprite.LayerSetShader(i, "unshaded");
|
||||
sprite.LayerSetVisible(i, true);
|
||||
}
|
||||
|
||||
if (prototype.CanBuildInImpassable)
|
||||
EnsureComp<WallMountComponent>(ghost).Arc = new(Math.Tau);
|
||||
|
||||
Reference in New Issue
Block a user