private void SelectFire(GunComponent component, SelectiveFire fire, EntityUid?user = null)
    {
        if (component.SelectedMode == fire)
        {
            return;
        }

        DebugTools.Assert((component.AvailableModes & fire) != 0x0);
        component.SelectedMode = fire;
        var curTime  = Timing.CurTime;
        var cooldown = TimeSpan.FromSeconds(InteractNextFire);

        if (component.NextFire < curTime)
        {
            component.NextFire = curTime + cooldown;
        }
        else
        {
            component.NextFire += cooldown;
        }

        PlaySound(component.Owner, component.SoundModeToggle?.GetSound(Random, ProtoManager), user);
        Popup(Loc.GetString("gun-selected-mode", ("mode", GetLocSelector(fire))), component.Owner, user);
        Dirty(component);
    }
 private string GetLocSelector(SelectiveFire mode)
 {
     return(Loc.GetString($"gun-{mode.ToString()}"));
 }
 public CycleModeEvent(SelectiveFire mode)
 {
     Mode = mode;
 }