MaterialStorageSystem.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Content.Shared.Materials;
  2. using Robust.Client.GameObjects;
  3. namespace Content.Client.Materials;
  4. public sealed class MaterialStorageSystem : SharedMaterialStorageSystem
  5. {
  6. [Dependency] private readonly AppearanceSystem _appearance = default!;
  7. [Dependency] private readonly TransformSystem _transform = default!;
  8. public override void Initialize()
  9. {
  10. base.Initialize();
  11. SubscribeLocalEvent<MaterialStorageComponent, AppearanceChangeEvent>(OnAppearanceChange);
  12. }
  13. private void OnAppearanceChange(EntityUid uid, MaterialStorageComponent component, ref AppearanceChangeEvent args)
  14. {
  15. if (args.Sprite == null)
  16. return;
  17. if (!args.Sprite.LayerMapTryGet(MaterialStorageVisualLayers.Inserting, out var layer))
  18. return;
  19. if (!_appearance.TryGetData<bool>(uid, MaterialStorageVisuals.Inserting, out var inserting, args.Component))
  20. return;
  21. if (inserting && TryComp<InsertingMaterialStorageComponent>(uid, out var insertingComp))
  22. {
  23. args.Sprite.LayerSetAnimationTime(layer, 0f);
  24. args.Sprite.LayerSetVisible(layer, true);
  25. if (insertingComp.MaterialColor != null)
  26. args.Sprite.LayerSetColor(layer, insertingComp.MaterialColor.Value);
  27. }
  28. else
  29. {
  30. args.Sprite.LayerSetVisible(layer, false);
  31. }
  32. }
  33. public override bool TryInsertMaterialEntity(EntityUid user,
  34. EntityUid toInsert,
  35. EntityUid receiver,
  36. MaterialStorageComponent? storage = null,
  37. MaterialComponent? material = null,
  38. PhysicalCompositionComponent? composition = null)
  39. {
  40. if (!base.TryInsertMaterialEntity(user, toInsert, receiver, storage, material, composition))
  41. return false;
  42. _transform.DetachEntity(toInsert, Transform(toInsert));
  43. return true;
  44. }
  45. }
  46. public enum MaterialStorageVisualLayers : byte
  47. {
  48. Inserting
  49. }