using Content.Shared._CP14.Farming; using Content.Shared.Rounding; using Robust.Client.GameObjects; namespace Content.Client._CP14.Farming; public sealed class ClientCP14FarmingSystem : CP14SharedFarmingSystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnPlantVisualInit); SubscribeLocalEvent(OnAutoHandleState); } private void OnAutoHandleState(Entity plant, ref AfterAutoHandleStateEvent args) { if (!TryComp(plant, out var visuals)) return; UpdateVisuals(new Entity(plant, visuals)); } private void OnPlantVisualInit(Entity visuals, ref ComponentInit args) { UpdateVisuals(visuals); } private void UpdateVisuals(Entity visuals) { if (!TryComp(visuals, out var sprite)) return; if (!TryComp(visuals, out var plant)) return; var growthState = ContentHelpers.RoundToNearestLevels(plant.GrowthLevel, 1, visuals.Comp.GrowthSteps); if (growthState == 0) growthState++; if (sprite.LayerMapTryGet(PlantVisualLayers.Base, out _)) sprite.LayerSetState(PlantVisualLayers.Base, $"{visuals.Comp.GrowState}{growthState}"); if (sprite.LayerMapTryGet(PlantVisualLayers.BaseUnshaded, out _)) sprite.LayerSetState(PlantVisualLayers.BaseUnshaded, $"{visuals.Comp.GrowUnshadedState}{growthState}"); } }