* control layer ordering * sprite update * taco! * taco naming gen * fix separator naming * some proto fixes * default naming separation * fix taco naming * rat update * hamsterburger * organs taco * remove from spawners * fixes * fix separators and lemons * Update food-sequence.ftl * randomization offset * fix * kebabs refactor * fix * skewer weapon * Update food_single.yml * Update migration.yml * suppermatter * hamlet centered * hamsburger * Update dead-0.png * 20 -> 4 burger layers max * Update burger.yml * canReact: false * capfruit update * Update burger.yml * Update burger.yml * Update produce.yml * some fixes * Update Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * chicken * Update food-sequence.ftl * documentation * fixes * Update meat.yml * Update meat.yml --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
using Content.Shared.Nutrition.Components;
|
|
using Content.Shared.Nutrition.EntitySystems;
|
|
using Robust.Client.GameObjects;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Content.Client.Nutrition.EntitySystems;
|
|
|
|
public sealed class ClientFoodSequenceSystem : SharedFoodSequenceSystem
|
|
{
|
|
public override void Initialize()
|
|
{
|
|
SubscribeLocalEvent<FoodSequenceStartPointComponent, AfterAutoHandleStateEvent>(OnHandleState);
|
|
}
|
|
|
|
private void OnHandleState(Entity<FoodSequenceStartPointComponent> start, ref AfterAutoHandleStateEvent args)
|
|
{
|
|
if (!TryComp<SpriteComponent>(start, out var sprite))
|
|
return;
|
|
|
|
UpdateFoodVisuals(start, sprite);
|
|
}
|
|
|
|
private void UpdateFoodVisuals(Entity<FoodSequenceStartPointComponent> start, SpriteComponent? sprite = null)
|
|
{
|
|
if (!Resolve(start, ref sprite, false))
|
|
return;
|
|
|
|
//Remove old layers
|
|
foreach (var key in start.Comp.RevealedLayers)
|
|
{
|
|
sprite.RemoveLayer(key);
|
|
}
|
|
start.Comp.RevealedLayers.Clear();
|
|
|
|
//Add new layers
|
|
var counter = 0;
|
|
foreach (var state in start.Comp.FoodLayers)
|
|
{
|
|
if (state.Sprite is null)
|
|
continue;
|
|
|
|
var keyCode = $"food-layer-{counter}";
|
|
start.Comp.RevealedLayers.Add(keyCode);
|
|
|
|
sprite.LayerMapTryGet(start.Comp.TargetLayerMap, out var index);
|
|
|
|
if (start.Comp.InverseLayers)
|
|
index++;
|
|
|
|
sprite.AddBlankLayer(index);
|
|
sprite.LayerMapSet(keyCode, index);
|
|
sprite.LayerSetSprite(index, state.Sprite);
|
|
|
|
//Offset the layer
|
|
var layerPos = start.Comp.StartPosition;
|
|
layerPos += (start.Comp.Offset * counter) + state.LocalOffset;
|
|
sprite.LayerSetOffset(index, layerPos);
|
|
|
|
counter++;
|
|
}
|
|
}
|
|
}
|