Refactor magvisualizer (#8568)

This commit is contained in:
metalgearsloth
2022-06-04 17:36:40 +10:00
committed by GitHub
parent ca7960382b
commit 68a58aa0d1
30 changed files with 311 additions and 348 deletions

View File

@@ -0,0 +1,33 @@
using Content.Client.Weapons.Ranged.Systems;
namespace Content.Client.Weapons.Ranged.Components;
/// <summary>
/// Visualizer for gun mag presence; can change states based on ammo count or toggle visibility entirely.
/// </summary>
[RegisterComponent, Friend(typeof(GunSystem))]
public sealed class MagazineVisualsComponent : Component
{
/// <summary>
/// What RsiState we use.
/// </summary>
[DataField("magState")] public string? MagState;
/// <summary>
/// How many steps there are
/// </summary>
[DataField("steps")] public int MagSteps;
/// <summary>
/// Should we hide when the count is 0
/// </summary>
[DataField("zeroVisible")] public bool ZeroVisible;
}
public enum GunVisualLayers : byte
{
Base,
BaseUnshaded,
Mag,
MagUnshaded,
}

View File

@@ -1,62 +1,61 @@
using Content.Client.Weapons.Ranged.Components;
using Content.Shared.Rounding; using Content.Shared.Rounding;
using Content.Shared.Weapons.Ranged.Systems; using Content.Shared.Weapons.Ranged.Systems;
using JetBrains.Annotations;
using Robust.Client.GameObjects; 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 partial class GunSystem
public sealed class MagVisualizer : AppearanceVisualizer
{ {
[DataField("magState")] private string? _magState; private void InitializeMagazineVisuals()
[DataField("steps")] private int _magSteps;
[DataField("zeroVisible")] private bool _zeroVisible;
public override void InitializeEntity(EntityUid entity)
{ {
base.InitializeEntity(entity); SubscribeLocalEvent<MagazineVisualsComponent, ComponentInit>(OnMagazineVisualsInit);
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity); SubscribeLocalEvent<MagazineVisualsComponent, AppearanceChangeEvent>(OnMagazineVisualsChange);
}
private void OnMagazineVisualsInit(EntityUid uid, MagazineVisualsComponent component, ComponentInit args)
{
if (!TryComp<SpriteComponent>(uid, out var sprite)) return;
if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _)) 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); sprite.LayerSetVisible(GunVisualLayers.Mag, false);
} }
if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out _)) 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); 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 // tl;dr
// 1.If no mag then hide it OR // 1.If no mag then hide it OR
// 2. If step 0 isn't visible then hide it (mag or unshaded) // 2. If step 0 isn't visible then hide it (mag or unshaded)
// 3. Otherwise just do mag / unshaded as is // 3. Otherwise just do mag / unshaded as is
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(component.Owner); var sprite = args.Sprite;
if (!component.TryGetData(AmmoVisuals.MagLoaded, out bool magloaded) || if (sprite == null) return;
magloaded)
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 _)) if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _))
{ {
@@ -74,13 +73,13 @@ public sealed class MagVisualizer : AppearanceVisualizer
if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _)) if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out _))
{ {
sprite.LayerSetVisible(GunVisualLayers.Mag, true); sprite.LayerSetVisible(GunVisualLayers.Mag, true);
sprite.LayerSetState(GunVisualLayers.Mag, $"{_magState}-{step}"); sprite.LayerSetState(GunVisualLayers.Mag, $"{component.MagState}-{step}");
} }
if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out _)) if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out _))
{ {
sprite.LayerSetVisible(GunVisualLayers.MagUnshaded, true); sprite.LayerSetVisible(GunVisualLayers.MagUnshaded, true);
sprite.LayerSetState(GunVisualLayers.MagUnshaded, $"{_magState}-unshaded-{step}"); sprite.LayerSetState(GunVisualLayers.MagUnshaded, $"{component.MagState}-unshaded-{step}");
} }
} }
else else
@@ -97,11 +96,3 @@ public sealed class MagVisualizer : AppearanceVisualizer
} }
} }
} }
public enum GunVisualLayers : byte
{
Base,
BaseUnshaded,
Mag,
MagUnshaded,
}

View File

@@ -65,6 +65,7 @@ public sealed partial class GunSystem : SharedGunSystem
// Plays animated effects on the client. // Plays animated effects on the client.
SubscribeNetworkEvent<HitscanEvent>(OnHitscan); SubscribeNetworkEvent<HitscanEvent>(OnHitscan);
InitializeMagazineVisuals();
InitializeSpentAmmo(); InitializeSpentAmmo();
} }

View File

@@ -23,6 +23,7 @@ namespace Content.Server.Entry
"DiseaseMachineVisuals", "DiseaseMachineVisuals",
"HandheldGPS", "HandheldGPS",
"SpentAmmoVisuals", "SpentAmmoVisuals",
"MagazineVisuals",
"ToggleableLightVisuals", "ToggleableLightVisuals",
"CableVisualizer", "CableVisualizer",
"PotencyVisuals", "PotencyVisuals",

View File

@@ -14,9 +14,8 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance

View File

@@ -16,12 +16,11 @@
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi sprite: Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi
netsync: false netsync: false
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Boxes # Boxes
- type: entity - type: entity
@@ -38,12 +37,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag10-1 - state: mag10-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag10 magState: mag10
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
parent: BaseMagazineBoxCaselessRifle parent: BaseMagazineBoxCaselessRifle
@@ -59,12 +57,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: magb-1 - state: magb-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: magb magState: magb
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
parent: BaseMagazineBoxCaselessRifle parent: BaseMagazineBoxCaselessRifle
@@ -81,12 +78,11 @@
- state: magb-1 - state: magb-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- state: rubber-b - state: rubber-b
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: magb magState: magb
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
parent: BaseMagazineBoxCaselessRifle parent: BaseMagazineBoxCaselessRifle

View File

@@ -16,12 +16,11 @@
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi sprite: Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi
netsync: false netsync: false
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Boxes # Boxes
- type: entity - type: entity
@@ -38,12 +37,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: magb-1 - state: magb-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: magb magState: magb
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
parent: BaseMagazineBoxLightRifle parent: BaseMagazineBoxLightRifle

View File

@@ -15,12 +15,11 @@
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi sprite: Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi
netsync: false netsync: false
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Boxes # Boxes
- type: entity - type: entity

View File

@@ -16,12 +16,11 @@
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi sprite: Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi
netsync: false netsync: false
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Boxes # Boxes
- type: entity - type: entity

View File

@@ -15,12 +15,11 @@
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi sprite: Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi
netsync: false netsync: false
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Boxes # Boxes
- type: entity - type: entity
@@ -37,12 +36,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: magb-1 - state: magb-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: magb magState: magb
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
parent: BaseMagazineBoxRifle parent: BaseMagazineBoxRifle
@@ -59,12 +57,11 @@
- state: magb-1 - state: magb-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- state: practice-b - state: practice-b
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: magb magState: magb
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
parent: BaseMagazineBoxRifle parent: BaseMagazineBoxRifle

View File

@@ -24,12 +24,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: BaseMagazineCaselessRifleShort id: BaseMagazineCaselessRifleShort
@@ -70,12 +69,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazineCaselessRifle10x24 id: MagazineCaselessRifle10x24
@@ -102,12 +100,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance
# No flash # No flash
@@ -125,12 +122,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazinePistolCaselessRiflePractice id: MagazinePistolCaselessRiflePractice
@@ -146,12 +142,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazinePistolCaselessRifleRubber id: MagazinePistolCaselessRifleRubber
@@ -167,12 +162,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazineCaselessRifle id: MagazineCaselessRifle

View File

@@ -19,9 +19,8 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance

View File

@@ -25,12 +25,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Magazines # Magazines
- type: entity - type: entity
@@ -48,12 +47,11 @@
size: 10 size: 10
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_box.rsi sprite: Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_box.rsi
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 8 steps: 8
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazineLightRifle id: MagazineLightRifle
@@ -152,9 +150,8 @@
capacity: 80 capacity: 80
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi sprite: Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance

View File

@@ -23,12 +23,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: BaseMagazineMagnumSubMachineGun id: BaseMagazineMagnumSubMachineGun
@@ -55,12 +54,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazineMagnum id: MagazineMagnum

View File

@@ -23,12 +23,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: BaseMagazinePistolHighCapacity id: BaseMagazinePistolHighCapacity
@@ -55,12 +54,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: BaseMagazinePistolSubMachineGun # Yeah it's weird but it's pistol caliber id: BaseMagazinePistolSubMachineGun # Yeah it's weird but it's pistol caliber
@@ -87,13 +85,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazinePistolSubMachineGunTopMounted id: MagazinePistolSubMachineGunTopMounted
name: WT550 magazine (.35 auto top-mounted) name: WT550 magazine (.35 auto top-mounted)
@@ -116,12 +112,11 @@
- state: mag-unshaded-1 - state: mag-unshaded-1
map: ["enum.GunVisualLayers.MagUnshaded"] map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded shader: unshaded
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazinePistolCalicoTopMounted id: MagazinePistolCalicoTopMounted
@@ -138,12 +133,11 @@
layers: layers:
- state: icon - state: icon
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazinePistol id: MagazinePistol

View File

@@ -24,12 +24,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
# Magazines # Magazines
- type: entity - type: entity

View File

@@ -25,12 +25,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-1 - state: mag-1
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 2 steps: 2
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazineShotgun id: MagazineShotgun

View File

@@ -26,12 +26,11 @@
map: [ "enum.GunVisualLayers.Base" ] map: [ "enum.GunVisualLayers.Base" ]
- state: base-6 - state: base-6
map: [ "enum.GunVisualLayers.Mag" ] map: [ "enum.GunVisualLayers.Mag" ]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: base magState: base
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderMagnumFlash id: SpeedLoaderMagnumFlash
@@ -47,12 +46,11 @@
map: [ "enum.GunVisualLayers.Base" ] map: [ "enum.GunVisualLayers.Base" ]
- state: flash-6 - state: flash-6
map: [ "enum.GunVisualLayers.Mag" ] map: [ "enum.GunVisualLayers.Mag" ]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: flash magState: flash
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderMagnumHighVelocity id: SpeedLoaderMagnumHighVelocity
@@ -68,12 +66,11 @@
map: [ "enum.GunVisualLayers.Base" ] map: [ "enum.GunVisualLayers.Base" ]
- state: high-velocity-6 - state: high-velocity-6
map: [ "enum.GunVisualLayers.Mag" ] map: [ "enum.GunVisualLayers.Mag" ]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: high-velocity magState: high-velocity
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderMagnumPractice id: SpeedLoaderMagnumPractice
@@ -89,12 +86,11 @@
map: [ "enum.GunVisualLayers.Base" ] map: [ "enum.GunVisualLayers.Base" ]
- state: practice-6 - state: practice-6
map: [ "enum.GunVisualLayers.Mag" ] map: [ "enum.GunVisualLayers.Mag" ]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: practice magState: practice
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderMagnumRubber id: SpeedLoaderMagnumRubber
@@ -110,9 +106,8 @@
map: [ "enum.GunVisualLayers.Base" ] map: [ "enum.GunVisualLayers.Base" ]
- state: rubber-6 - state: rubber-6
map: [ "enum.GunVisualLayers.Mag" ] map: [ "enum.GunVisualLayers.Mag" ]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: rubber magState: rubber
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance

View File

@@ -26,12 +26,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: base-6 - state: base-6
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: base magState: base
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderPistolFlash id: SpeedLoaderPistolFlash
@@ -46,12 +45,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: flash-6 - state: flash-6
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: flash magState: flash
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderPistolHighVelocity id: SpeedLoaderPistolHighVelocity
@@ -66,12 +64,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: high-velocity-6 - state: high-velocity-6
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: high-velocity magState: high-velocity
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderPistolPractice id: SpeedLoaderPistolPractice
@@ -86,12 +83,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: practice-6 - state: practice-6
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: practice magState: practice
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderPistolRubber id: SpeedLoaderPistolRubber
@@ -106,9 +102,8 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: rubber-6 - state: rubber-6
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: rubber magState: rubber
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance

View File

@@ -17,9 +17,8 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-5 - state: mag-5
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: false zeroVisible: false
- type: Appearance

View File

@@ -16,12 +16,11 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-6 - state: mag-6
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 7 steps: 7
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: SpeedLoaderCap id: SpeedLoaderCap

View File

@@ -16,12 +16,11 @@
- type: Battery - type: Battery
maxCharge: 1000 maxCharge: 1000
startingCharge: 1000 startingCharge: 1000
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: false zeroVisible: false
- type: Appearance
- type: entity - type: entity
name: retro laser gun name: retro laser gun
@@ -43,12 +42,11 @@
- type: HitscanBatteryAmmoProvider - type: HitscanBatteryAmmoProvider
proto: RedLaser proto: RedLaser
fireCost: 62.5 fireCost: 62.5
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: makeshift laser gun name: makeshift laser gun
@@ -240,12 +238,11 @@
- type: HitscanBatteryAmmoProvider - type: HitscanBatteryAmmoProvider
proto: XrayLaser proto: XrayLaser
fireCost: 100 fireCost: 100
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: taser name: taser
@@ -280,12 +277,11 @@
- type: Battery - type: Battery
maxCharge: 100 maxCharge: 100
startingCharge: 100 startingCharge: 100
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: antique laser gun name: antique laser gun
@@ -310,11 +306,10 @@
- type: HitscanBatteryAmmoProvider - type: HitscanBatteryAmmoProvider
proto: RedMediumLaser proto: RedMediumLaser
fireCost: 100 fireCost: 100
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 5 steps: 5
zeroVisible: true zeroVisible: true
- type: Appearance
- type: StaticPrice - type: StaticPrice
price: 750 price: 750

View File

@@ -39,9 +39,8 @@
- type: BallisticAmmoProvider - type: BallisticAmmoProvider
proto: CartridgeMinigun proto: CartridgeMinigun
capacity: 1000 capacity: 1000
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 4 steps: 4
zeroVisible: true zeroVisible: true
- type: Appearance

View File

@@ -60,9 +60,8 @@
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
- type: Item - type: Item
sprite: Objects/Weapons/Guns/LMGs/l6.rsi sprite: Objects/Weapons/Guns/LMGs/l6.rsi
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 4 steps: 4
zeroVisible: true zeroVisible: true
- type: Appearance

View File

@@ -69,12 +69,11 @@
capacity: 1 capacity: 1
soundInsert: soundInsert:
path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: multiple rocket launcher name: multiple rocket launcher
@@ -106,9 +105,8 @@
proto: CartridgeRocketSlow proto: CartridgeRocketSlow
soundInsert: soundInsert:
path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance

View File

@@ -42,12 +42,11 @@
containers: containers:
gun_magazine: !type:ContainerSlot gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot gun_chamber: !type:ContainerSlot
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: clarissa name: clarissa

View File

@@ -45,12 +45,11 @@
sprite: Objects/Weapons/Guns/Revolvers/deckard.rsi sprite: Objects/Weapons/Guns/Revolvers/deckard.rsi
- type: RevolverAmmoProvider - type: RevolverAmmoProvider
capacity: 5 capacity: 5
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 4 steps: 4
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: Inspector name: Inspector

View File

@@ -80,12 +80,11 @@
containers: containers:
gun_magazine: !type:ContainerSlot gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot gun_chamber: !type:ContainerSlot
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: Z8 Bulldog name: Z8 Bulldog
@@ -123,12 +122,11 @@
containers: containers:
gun_magazine: !type:ContainerSlot gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot gun_chamber: !type:ContainerSlot
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: Wintermute name: Wintermute
@@ -169,9 +167,8 @@
containers: containers:
gun_magazine: !type:ContainerSlot gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot gun_chamber: !type:ContainerSlot
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance

View File

@@ -60,12 +60,11 @@
sprite: Objects/Weapons/Guns/SMGs/atreides.rsi sprite: Objects/Weapons/Guns/SMGs/atreides.rsi
- type: Gun - type: Gun
fireRate: 10 fireRate: 10
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: C-20r sub machine gun name: C-20r sub machine gun
@@ -86,12 +85,11 @@
- type: Gun - type: Gun
- type: ChamberMagazineAmmoProvider - type: ChamberMagazineAmmoProvider
# autoEject: true # Do not set this until the PVS prediction issue is resolved # autoEject: true # Do not set this until the PVS prediction issue is resolved
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: Drozd name: Drozd
@@ -134,12 +132,11 @@
containers: containers:
gun_magazine: !type:ContainerSlot gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot gun_chamber: !type:ContainerSlot
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: WT550 name: WT550
@@ -184,12 +181,11 @@
whitelist: whitelist:
tags: tags:
- CartridgePistol - CartridgePistol
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 6 steps: 6
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: Drozd name: Drozd

View File

@@ -74,12 +74,11 @@
gun_magazine: !type:ContainerSlot gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot gun_chamber: !type:ContainerSlot
- type: MagazineAmmoProvider - type: MagazineAmmoProvider
- type: Appearance - type: MagazineVisuals
visuals:
- type: MagVisualizer
magState: mag magState: mag
steps: 1 steps: 1
zeroVisible: true zeroVisible: true
- type: Appearance
- type: entity - type: entity
name: double-barreled shotgun name: double-barreled shotgun