Custom burgers - FoodSequence system (#30755)
* setup foodsequence * name generation and max layers limit * move to nutrition * move code to serverside * move to appearance data * marked fields as required * Update foodsequence.yml * b * burgeers! * Update produce.yml * Update meat.yml * Update burger.yml * fix duplicate naming * Update Resources/Locale/en-US/nutrition/components/food-sequence.ftl Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com> * merge flavor profiles * make food trash List<> * merge trash * Update FoodComponent.cs * Update FoodComponent.cs * organs and cannabis support --------- Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
using Content.Shared.Nutrition.Components;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Robust.Client.GameObjects;
|
||||
|
||||
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;
|
||||
|
||||
counter++;
|
||||
|
||||
var keyCode = $"food-layer-{counter}";
|
||||
start.Comp.RevealedLayers.Add(keyCode);
|
||||
|
||||
var index = sprite.LayerMapReserveBlank(keyCode);
|
||||
|
||||
//Set image
|
||||
sprite.LayerSetSprite(index, state.Sprite);
|
||||
|
||||
//Offset the layer
|
||||
var layerPos = start.Comp.StartPosition;
|
||||
layerPos += start.Comp.Offset * counter;
|
||||
sprite.LayerSetOffset(index, layerPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user