1
0

PlantHolderVisualizerSystem.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Content.Client.Botany.Components;
  2. using Content.Shared.Botany;
  3. using Robust.Client.GameObjects;
  4. namespace Content.Client.Botany;
  5. public sealed class PlantHolderVisualizerSystem : VisualizerSystem<PlantHolderVisualsComponent>
  6. {
  7. public override void Initialize()
  8. {
  9. base.Initialize();
  10. SubscribeLocalEvent<PlantHolderVisualsComponent, ComponentInit>(OnComponentInit);
  11. }
  12. private void OnComponentInit(EntityUid uid, PlantHolderVisualsComponent component, ComponentInit args)
  13. {
  14. if (!TryComp<SpriteComponent>(uid, out var sprite))
  15. return;
  16. sprite.LayerMapReserveBlank(PlantHolderLayers.Plant);
  17. sprite.LayerSetVisible(PlantHolderLayers.Plant, false);
  18. }
  19. protected override void OnAppearanceChange(EntityUid uid, PlantHolderVisualsComponent component, ref AppearanceChangeEvent args)
  20. {
  21. if (args.Sprite == null)
  22. return;
  23. if (AppearanceSystem.TryGetData<string>(uid, PlantHolderVisuals.PlantRsi, out var rsi, args.Component)
  24. && AppearanceSystem.TryGetData<string>(uid, PlantHolderVisuals.PlantState, out var state, args.Component))
  25. {
  26. var valid = !string.IsNullOrWhiteSpace(state);
  27. args.Sprite.LayerSetVisible(PlantHolderLayers.Plant, valid);
  28. if (valid)
  29. {
  30. args.Sprite.LayerSetRSI(PlantHolderLayers.Plant, rsi);
  31. args.Sprite.LayerSetState(PlantHolderLayers.Plant, state);
  32. }
  33. }
  34. }
  35. }
  36. public enum PlantHolderLayers : byte
  37. {
  38. Plant,
  39. HealthLight,
  40. WaterLight,
  41. NutritionLight,
  42. AlertLight,
  43. HarvestLight,
  44. }