From 68a58aa0d16842249f3b4dbf9b7f38a943157df1 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 4 Jun 2022 17:36:40 +1000 Subject: [PATCH] Refactor magvisualizer (#8568) --- .../Components/MagazineVisualsComponent.cs | 33 ++++++++++ .../GunSystem.MagazineVisuals.cs} | 63 ++++++++----------- .../Weapons/Ranged/Systems/GunSystem.cs | 1 + Content.Server/Entry/IgnoredComponents.cs | 1 + .../Guns/Ammunition/Boxes/antimaterial.yml | 9 ++- .../Guns/Ammunition/Boxes/caseless_rifle.yml | 36 +++++------ .../Guns/Ammunition/Boxes/light_rifle.yml | 18 +++--- .../Weapons/Guns/Ammunition/Boxes/magnum.yml | 9 ++- .../Weapons/Guns/Ammunition/Boxes/pistol.yml | 9 ++- .../Weapons/Guns/Ammunition/Boxes/rifle.yml | 27 ++++---- .../Ammunition/Magazines/caseless_rifle.yml | 54 +++++++--------- .../Guns/Ammunition/Magazines/heavy_rifle.yml | 9 ++- .../Guns/Ammunition/Magazines/light_rifle.yml | 27 ++++---- .../Guns/Ammunition/Magazines/magnum.yml | 18 +++--- .../Guns/Ammunition/Magazines/pistol.yml | 46 ++++++-------- .../Guns/Ammunition/Magazines/rifle.yml | 9 ++- .../Guns/Ammunition/Magazines/shotgun.yml | 9 ++- .../Guns/Ammunition/SpeedLoaders/magnum.yml | 45 ++++++------- .../Guns/Ammunition/SpeedLoaders/pistol.yml | 45 ++++++------- .../Ammunition/SpeedLoaders/rifle_light.yml | 9 ++- .../Guns/Ammunition/SpeedLoaders/toy.yml | 9 ++- .../Weapons/Guns/Battery/battery_guns.yml | 47 +++++++------- .../Objects/Weapons/Guns/HMGs/hmgs.yml | 9 ++- .../Objects/Weapons/Guns/LMGs/lmgs.yml | 9 ++- .../Weapons/Guns/Launchers/launchers.yml | 18 +++--- .../Objects/Weapons/Guns/Pistols/pistols.yml | 9 ++- .../Weapons/Guns/Revolvers/revolvers.yml | 9 ++- .../Objects/Weapons/Guns/Rifles/rifles.yml | 27 ++++---- .../Objects/Weapons/Guns/SMGs/smgs.yml | 36 +++++------ .../Weapons/Guns/Shotguns/shotguns.yml | 9 ++- 30 files changed, 311 insertions(+), 348 deletions(-) create mode 100644 Content.Client/Weapons/Ranged/Components/MagazineVisualsComponent.cs rename Content.Client/Weapons/Ranged/{Components/MagVisualizer.cs => Systems/GunSystem.MagazineVisuals.cs} (55%) diff --git a/Content.Client/Weapons/Ranged/Components/MagazineVisualsComponent.cs b/Content.Client/Weapons/Ranged/Components/MagazineVisualsComponent.cs new file mode 100644 index 0000000000..743d23f418 --- /dev/null +++ b/Content.Client/Weapons/Ranged/Components/MagazineVisualsComponent.cs @@ -0,0 +1,33 @@ +using Content.Client.Weapons.Ranged.Systems; + +namespace Content.Client.Weapons.Ranged.Components; + +/// +/// Visualizer for gun mag presence; can change states based on ammo count or toggle visibility entirely. +/// +[RegisterComponent, Friend(typeof(GunSystem))] +public sealed class MagazineVisualsComponent : Component +{ + /// + /// What RsiState we use. + /// + [DataField("magState")] public string? MagState; + + /// + /// How many steps there are + /// + [DataField("steps")] public int MagSteps; + + /// + /// Should we hide when the count is 0 + /// + [DataField("zeroVisible")] public bool ZeroVisible; +} + +public enum GunVisualLayers : byte +{ + Base, + BaseUnshaded, + Mag, + MagUnshaded, +} diff --git a/Content.Client/Weapons/Ranged/Components/MagVisualizer.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs similarity index 55% rename from Content.Client/Weapons/Ranged/Components/MagVisualizer.cs rename to Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs index 00f04a6f87..2d670d1e77 100644 --- a/Content.Client/Weapons/Ranged/Components/MagVisualizer.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs @@ -1,62 +1,61 @@ +using Content.Client.Weapons.Ranged.Components; using Content.Shared.Rounding; using Content.Shared.Weapons.Ranged.Systems; -using JetBrains.Annotations; using Robust.Client.GameObjects; -using SharedGunSystem = Content.Shared.Weapons.Ranged.Systems.SharedGunSystem; -namespace Content.Client.Weapons.Ranged.Components; +namespace Content.Client.Weapons.Ranged.Systems; -[UsedImplicitly] -public sealed class MagVisualizer : AppearanceVisualizer +public sealed partial class GunSystem { - [DataField("magState")] private string? _magState; - [DataField("steps")] private int _magSteps; - [DataField("zeroVisible")] private bool _zeroVisible; - - public override void InitializeEntity(EntityUid entity) + private void InitializeMagazineVisuals() { - base.InitializeEntity(entity); - var sprite = IoCManager.Resolve().GetComponent(entity); + SubscribeLocalEvent(OnMagazineVisualsInit); + SubscribeLocalEvent(OnMagazineVisualsChange); + } + + private void OnMagazineVisualsInit(EntityUid uid, MagazineVisualsComponent component, ComponentInit args) + { + if (!TryComp(uid, out var sprite)) return; if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _)) { - sprite.LayerSetState(GunVisualLayers.Mag, $"{_magState}-{_magSteps - 1}"); + sprite.LayerSetState(GunVisualLayers.Mag, $"{component.MagState}-{component.MagSteps - 1}"); sprite.LayerSetVisible(GunVisualLayers.Mag, false); } if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out _)) { - sprite.LayerSetState(GunVisualLayers.MagUnshaded, $"{_magState}-unshaded-{_magSteps - 1}"); + sprite.LayerSetState(GunVisualLayers.MagUnshaded, $"{component.MagState}-unshaded-{component.MagSteps - 1}"); sprite.LayerSetVisible(GunVisualLayers.MagUnshaded, false); } } - public override void OnChangeData(AppearanceComponent component) + private void OnMagazineVisualsChange(EntityUid uid, MagazineVisualsComponent component, ref AppearanceChangeEvent args) { - base.OnChangeData(component); - // tl;dr // 1.If no mag then hide it OR // 2. If step 0 isn't visible then hide it (mag or unshaded) // 3. Otherwise just do mag / unshaded as is - var sprite = IoCManager.Resolve().GetComponent(component.Owner); + var sprite = args.Sprite; - if (!component.TryGetData(AmmoVisuals.MagLoaded, out bool magloaded) || - magloaded) + if (sprite == null) return; + + if (!args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) || + magloaded is true) { - if (!component.TryGetData(AmmoVisuals.AmmoMax, out int capacity)) + if (!args.AppearanceData.TryGetValue(AmmoVisuals.AmmoMax, out var capacity)) { - capacity = _magSteps; + capacity = component.MagSteps; } - if (!component.TryGetData(AmmoVisuals.AmmoCount, out int current)) + if (!args.AppearanceData.TryGetValue(AmmoVisuals.AmmoCount, out var current)) { - current = _magSteps; + current = component.MagSteps; } - var step = ContentHelpers.RoundToLevels(current, capacity, _magSteps); + var step = ContentHelpers.RoundToLevels((int) current, (int) capacity, component.MagSteps); - if (step == 0 && !_zeroVisible) + if (step == 0 && !component.ZeroVisible) { if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _)) { @@ -74,13 +73,13 @@ public sealed class MagVisualizer : AppearanceVisualizer if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _)) { sprite.LayerSetVisible(GunVisualLayers.Mag, true); - sprite.LayerSetState(GunVisualLayers.Mag, $"{_magState}-{step}"); + sprite.LayerSetState(GunVisualLayers.Mag, $"{component.MagState}-{step}"); } if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out _)) { sprite.LayerSetVisible(GunVisualLayers.MagUnshaded, true); - sprite.LayerSetState(GunVisualLayers.MagUnshaded, $"{_magState}-unshaded-{step}"); + sprite.LayerSetState(GunVisualLayers.MagUnshaded, $"{component.MagState}-unshaded-{step}"); } } else @@ -97,11 +96,3 @@ public sealed class MagVisualizer : AppearanceVisualizer } } } - -public enum GunVisualLayers : byte -{ - Base, - BaseUnshaded, - Mag, - MagUnshaded, -} diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index b8bd5871f9..8ea7f0906a 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -65,6 +65,7 @@ public sealed partial class GunSystem : SharedGunSystem // Plays animated effects on the client. SubscribeNetworkEvent(OnHitscan); + InitializeMagazineVisuals(); InitializeSpentAmmo(); } diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index 9f8b773cd5..a223343439 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -23,6 +23,7 @@ namespace Content.Server.Entry "DiseaseMachineVisuals", "HandheldGPS", "SpentAmmoVisuals", + "MagazineVisuals", "ToggleableLightVisuals", "CableVisualizer", "PotencyVisuals", diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimaterial.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimaterial.yml index e4d853aba3..bc01ce9637 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimaterial.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimaterial.yml @@ -14,9 +14,8 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml index 4b0f986d2f..9c95735df9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml @@ -16,12 +16,11 @@ - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi netsync: false + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Boxes - type: entity @@ -38,12 +37,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag10-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag10 + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag10 - steps: 2 - zeroVisible: false - type: entity parent: BaseMagazineBoxCaselessRifle @@ -59,12 +57,11 @@ map: ["enum.GunVisualLayers.Base"] - state: magb-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: magb + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: magb - steps: 2 - zeroVisible: false - type: entity parent: BaseMagazineBoxCaselessRifle @@ -81,12 +78,11 @@ - state: magb-1 map: ["enum.GunVisualLayers.Mag"] - state: rubber-b + - type: MagazineVisuals + magState: magb + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: magb - steps: 2 - zeroVisible: false - type: entity parent: BaseMagazineBoxCaselessRifle diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml index b2fe20b5b8..06b4800017 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml @@ -16,12 +16,11 @@ - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi netsync: false + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Boxes - type: entity @@ -38,12 +37,11 @@ map: ["enum.GunVisualLayers.Base"] - state: magb-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: magb + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: magb - steps: 2 - zeroVisible: false - type: entity parent: BaseMagazineBoxLightRifle diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index 439a0efaef..90297236fa 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -15,12 +15,11 @@ - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi netsync: false + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Boxes - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml index a875a6b451..8797eabecc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml @@ -16,12 +16,11 @@ - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi netsync: false + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Boxes - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml index 7efc6dc406..49e6dcbef4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml @@ -15,12 +15,11 @@ - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi netsync: false + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Boxes - type: entity @@ -37,12 +36,11 @@ map: ["enum.GunVisualLayers.Base"] - state: magb-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: magb + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: magb - steps: 2 - zeroVisible: false - type: entity parent: BaseMagazineBoxRifle @@ -59,12 +57,11 @@ - state: magb-1 map: ["enum.GunVisualLayers.Mag"] - state: practice-b + - type: MagazineVisuals + magState: magb + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: magb - steps: 2 - zeroVisible: false - type: entity parent: BaseMagazineBoxRifle diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml index 3eae1c8164..b05a8416cc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml @@ -24,12 +24,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false - type: entity id: BaseMagazineCaselessRifleShort @@ -70,12 +69,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false - type: entity id: MagazineCaselessRifle10x24 @@ -102,12 +100,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false # No flash @@ -125,12 +122,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false - type: entity id: MagazinePistolCaselessRiflePractice @@ -146,12 +142,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false - type: entity id: MagazinePistolCaselessRifleRubber @@ -167,12 +162,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false - type: entity id: MagazineCaselessRifle diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/heavy_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/heavy_rifle.yml index 8b10c5aad5..e425951508 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/heavy_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/heavy_rifle.yml @@ -19,9 +19,8 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml index cdf9090767..9183527963 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml @@ -25,12 +25,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Magazines - type: entity @@ -48,12 +47,11 @@ size: 10 - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_box.rsi + - type: MagazineVisuals + magState: mag + steps: 8 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 8 - zeroVisible: false - type: entity id: MagazineLightRifle @@ -152,9 +150,8 @@ capacity: 80 - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi + - type: MagazineVisuals + magState: mag + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 7 - zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml index 6c00dbe883..3904cc62e8 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml @@ -23,12 +23,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: false - type: entity id: BaseMagazineMagnumSubMachineGun @@ -55,12 +54,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false - type: entity id: MagazineMagnum diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml index 448baad9df..a93e8daa03 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml @@ -23,12 +23,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: false - type: entity id: BaseMagazinePistolHighCapacity @@ -55,12 +54,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 7 - zeroVisible: false - type: entity id: BaseMagazinePistolSubMachineGun # Yeah it's weird but it's pistol caliber @@ -87,13 +85,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false - - type: entity id: MagazinePistolSubMachineGunTopMounted name: WT550 magazine (.35 auto top-mounted) @@ -116,12 +112,11 @@ - state: mag-unshaded-1 map: ["enum.GunVisualLayers.MagUnshaded"] shader: unshaded + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false - type: entity id: MagazinePistolCalicoTopMounted @@ -138,12 +133,11 @@ layers: - state: icon map: ["enum.GunVisualLayers.Base"] + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: false - type: entity id: MagazinePistol diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml index 235985bc95..db7362486e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml @@ -24,12 +24,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false # Magazines - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml index 40a034537b..2c1f8a761a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml @@ -25,12 +25,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-1 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 2 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 2 - zeroVisible: false - type: entity id: MagazineShotgun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index 476d72aca3..64ccdb43b4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -26,12 +26,11 @@ map: [ "enum.GunVisualLayers.Base" ] - state: base-6 map: [ "enum.GunVisualLayers.Mag" ] + - type: MagazineVisuals + magState: base + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: base - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderMagnumFlash @@ -47,12 +46,11 @@ map: [ "enum.GunVisualLayers.Base" ] - state: flash-6 map: [ "enum.GunVisualLayers.Mag" ] + - type: MagazineVisuals + magState: flash + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: flash - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderMagnumHighVelocity @@ -68,12 +66,11 @@ map: [ "enum.GunVisualLayers.Base" ] - state: high-velocity-6 map: [ "enum.GunVisualLayers.Mag" ] + - type: MagazineVisuals + magState: high-velocity + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: high-velocity - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderMagnumPractice @@ -89,12 +86,11 @@ map: [ "enum.GunVisualLayers.Base" ] - state: practice-6 map: [ "enum.GunVisualLayers.Mag" ] + - type: MagazineVisuals + magState: practice + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: practice - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderMagnumRubber @@ -110,9 +106,8 @@ map: [ "enum.GunVisualLayers.Base" ] - state: rubber-6 map: [ "enum.GunVisualLayers.Mag" ] + - type: MagazineVisuals + magState: rubber + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: rubber - steps: 7 - zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml index d61468d64f..9165592042 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml @@ -26,12 +26,11 @@ map: ["enum.GunVisualLayers.Base"] - state: base-6 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: base + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: base - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderPistolFlash @@ -46,12 +45,11 @@ map: ["enum.GunVisualLayers.Base"] - state: flash-6 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: flash + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: flash - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderPistolHighVelocity @@ -66,12 +64,11 @@ map: ["enum.GunVisualLayers.Base"] - state: high-velocity-6 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: high-velocity + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: high-velocity - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderPistolPractice @@ -86,12 +83,11 @@ map: ["enum.GunVisualLayers.Base"] - state: practice-6 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: practice + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: practice - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderPistolRubber @@ -106,9 +102,8 @@ map: ["enum.GunVisualLayers.Base"] - state: rubber-6 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: rubber + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: rubber - steps: 7 - zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml index ec5f668b45..e3bfbc35e7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml @@ -17,9 +17,8 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-5 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/toy.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/toy.yml index cc64214f1e..a505992d06 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/toy.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/toy.yml @@ -16,12 +16,11 @@ map: ["enum.GunVisualLayers.Base"] - state: mag-6 map: ["enum.GunVisualLayers.Mag"] + - type: MagazineVisuals + magState: mag + steps: 7 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 7 - zeroVisible: false - type: entity id: SpeedLoaderCap diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 8f87f4c96d..858fa5fc35 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -16,12 +16,11 @@ - type: Battery maxCharge: 1000 startingCharge: 1000 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: false - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: false - type: entity name: retro laser gun @@ -43,12 +42,11 @@ - type: HitscanBatteryAmmoProvider proto: RedLaser fireCost: 62.5 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: true - type: entity name: makeshift laser gun @@ -240,12 +238,11 @@ - type: HitscanBatteryAmmoProvider proto: XrayLaser fireCost: 100 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: true - type: entity name: taser @@ -280,12 +277,11 @@ - type: Battery maxCharge: 100 startingCharge: 100 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: true - type: entity name: antique laser gun @@ -310,11 +306,10 @@ - type: HitscanBatteryAmmoProvider proto: RedMediumLaser fireCost: 100 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 5 - zeroVisible: true - type: StaticPrice - price: 750 + price: 750 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml index f1b2310b8c..bf6fdd7dde 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml @@ -39,9 +39,8 @@ - type: BallisticAmmoProvider proto: CartridgeMinigun capacity: 1000 + - type: MagazineVisuals + magState: mag + steps: 4 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 4 - zeroVisible: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml index 0b9d9dd3cd..8af13cb566 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml @@ -60,9 +60,8 @@ map: ["enum.GunVisualLayers.Mag"] - type: Item sprite: Objects/Weapons/Guns/LMGs/l6.rsi + - type: MagazineVisuals + magState: mag + steps: 4 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 4 - zeroVisible: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index d298dded3a..f99108b346 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -69,12 +69,11 @@ capacity: 1 soundInsert: path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: multiple rocket launcher @@ -106,9 +105,8 @@ proto: CartridgeRocketSlow soundInsert: path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 4025377357..2d6f0284bd 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -42,12 +42,11 @@ containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: clarissa diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml index 8aa4ceffea..2ccaacecf0 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml @@ -45,12 +45,11 @@ sprite: Objects/Weapons/Guns/Revolvers/deckard.rsi - type: RevolverAmmoProvider capacity: 5 + - type: MagazineVisuals + magState: mag + steps: 4 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 4 - zeroVisible: true - type: entity name: Inspector diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 25620c38fe..164443afd2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -80,12 +80,11 @@ containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: Z8 Bulldog @@ -123,12 +122,11 @@ containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: Wintermute @@ -169,9 +167,8 @@ containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index f06cf42b18..c08a9f50ac 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -60,12 +60,11 @@ sprite: Objects/Weapons/Guns/SMGs/atreides.rsi - type: Gun fireRate: 10 + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: C-20r sub machine gun @@ -86,12 +85,11 @@ - type: Gun - type: ChamberMagazineAmmoProvider # autoEject: true # Do not set this until the PVS prediction issue is resolved + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: Drozd @@ -134,12 +132,11 @@ containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: WT550 @@ -184,12 +181,11 @@ whitelist: tags: - CartridgePistol + - type: MagazineVisuals + magState: mag + steps: 6 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 6 - zeroVisible: true - type: entity name: Drozd diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index 42fd15dd37..7a26e895d3 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -74,12 +74,11 @@ gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot - type: MagazineAmmoProvider + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true - type: Appearance - visuals: - - type: MagVisualizer - magState: mag - steps: 1 - zeroVisible: true - type: entity name: double-barreled shotgun