aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs
blob: e2ac49504a1b17ebf59e314baa6ab6a3dfacea9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using static Ryujinx.Ui.Common.Configuration.ConfigurationState.UiSection;

namespace Ryujinx.Ui.Common
{
    public static class FileTypesExtensions
    {
        /// <summary>
        /// Gets the current <see cref="ShownFileTypeSettings"/> value for the correlating FileType name.
        /// </summary>
        /// <param name="type">The name of the <see cref="ShownFileTypeSettings"/> parameter to get the value of.</param>
        /// <param name="config">The config instance to get the value from.</param>
        /// <returns>The current value of the setting. Value is <see langword="true"/> if the file type is the be shown on the games list, <see langword="false"/> otherwise.</returns>
        public static bool GetConfigValue(this FileTypes type, ShownFileTypeSettings config) => type switch
        {
            FileTypes.NSP => config.NSP.Value,
            FileTypes.PFS0 => config.PFS0.Value,
            FileTypes.XCI => config.XCI.Value,
            FileTypes.NCA => config.NCA.Value,
            FileTypes.NRO => config.NRO.Value,
            FileTypes.NSO => config.NSO.Value,
            _ => throw new ArgumentOutOfRangeException(nameof(type), type, null)
        };
    }
}