diff --git a/Content.Client/Overlays/StencilOverlay.cs b/Content.Client/Overlays/StencilOverlay.cs index 0df7b42b2b..45112b3c8c 100644 --- a/Content.Client/Overlays/StencilOverlay.cs +++ b/Content.Client/Overlays/StencilOverlay.cs @@ -76,16 +76,16 @@ public sealed partial class StencilOverlay : Overlay //CP14 Overlays - if (_entManager.TryGetComponent(mapUid, out var worldEdge)) + if (_entManager.TryGetComponent(mapUid, out var shadows)) { - DrawWorldEdge(args, worldEdge, invMatrix); + DrawCloudShadows(args, shadows, invMatrix); } //CP14 Overlays end //CP14 Overlays - if (_entManager.TryGetComponent(mapUid, out var shadows)) + if (_entManager.TryGetComponent(mapUid, out var worldEdge)) { - DrawCloudShadows(args, shadows, invMatrix); + DrawWorldEdge(args, worldEdge, invMatrix); } //CP14 Overlays end diff --git a/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs b/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs new file mode 100644 index 0000000000..c7d1089035 --- /dev/null +++ b/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs @@ -0,0 +1,31 @@ +namespace Content.Client._CP14.Localization; + +/// +/// Controls the visual of the sprite, depending on the localization. Useful for drawn lettering +/// +[RegisterComponent] +public sealed partial class CP14LocalizationVisualsComponent : Component +{ + /// + /// map(map,(lang, state)) + /// in yml: + /// + /// - type: Sprite + /// layers: + /// - state: stateName0 + /// map: ["map1"] + /// - state: stateName0 + /// map: ["map2"] + /// - type: CP14LocalizationVisuals + /// mapStates: + /// map1: + /// ru-RU: stateName1 + /// en-US: stateName2 + /// map2: + /// ru-RU: stateName3 + /// en-US: stateName4 + /// + /// + [DataField] + public Dictionary> MapStates; +} diff --git a/Content.Client/_CP14/Localization/CP14LocalizationVisualsSystem.cs b/Content.Client/_CP14/Localization/CP14LocalizationVisualsSystem.cs new file mode 100644 index 0000000000..734df4a210 --- /dev/null +++ b/Content.Client/_CP14/Localization/CP14LocalizationVisualsSystem.cs @@ -0,0 +1,29 @@ +using Content.Shared.Localizations; +using Robust.Client.GameObjects; + +namespace Content.Client._CP14.Localization; + +public sealed class CP14LocalizationVisualsSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnCompInit); + } + + private void OnCompInit(Entity visuals, ref ComponentInit args) + { + if (!TryComp(visuals, out var sprite)) + return; + + foreach (var (map, pDictionary) in visuals.Comp.MapStates) + { + if (!pDictionary.TryGetValue(ContentLocalizationManager.Culture, out var state)) + return; + + if (sprite.LayerMapTryGet(map, out _)) + sprite.LayerSetState(map, state); + } + } +} diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml index 22e2644aaf..3e81c1d691 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml @@ -6,6 +6,8 @@ - type: StorageFill contents: - id: HandLabeler #TODO custom cp14 labeler + - id: Syringe #TODO custom cp14 syringe + amount: 3 - id: CP14Cauldron - id: CP14Pestle amount: 2