Aragas/Bannerlord.MBOptionScreen

View on GitHub
src/MCM.Implementation/FluentBuilder/Models/BaseDefaultSettingsPropertyBuilder.cs

Summary

Maintainability
A
0 mins
Test Coverage
using MCM.Abstractions;
using MCM.Abstractions.FluentBuilder;
using MCM.Common;

using System.Collections.Generic;

namespace MCM.Implementation.FluentBuilder.Models
{
#if !BANNERLORDMCM_INCLUDE_IN_CODE_COVERAGE
    [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage, global::System.Diagnostics.DebuggerNonUserCode]
#endif
    internal abstract class BaseDefaultSettingsPropertyBuilder<TSettingsPropertyBuilder> :
        ISettingsPropertyBuilder<TSettingsPropertyBuilder>,
        IPropertyDefinitionBase,
        IPropertyDefinitionWithId
        where TSettingsPropertyBuilder : ISettingsPropertyBuilder
    {
        protected TSettingsPropertyBuilder SettingsPropertyBuilder { get; set; } = default!;

        /// <inheritdoc/>
        public string Name { get; }
        /// <inheritdoc/>
        public string Id { get; }
        /// <inheritdoc/>
        public IRef PropertyReference { get; }

        /// <inheritdoc/>
        public string DisplayName => Name;
        /// <inheritdoc/>
        public int Order { get; private set; }
        /// <inheritdoc/>
        public bool RequireRestart { get; private set; }
        /// <inheritdoc/>
        public string HintText { get; private set; } = string.Empty;

        protected BaseDefaultSettingsPropertyBuilder(string id, string name, IRef @ref)
        {
            Id = id;
            Name = name;
            PropertyReference = @ref;
        }

        /// <inheritdoc/>
        public TSettingsPropertyBuilder SetOrder(int value) { Order = value; return SettingsPropertyBuilder; }
        /// <inheritdoc/>
        public TSettingsPropertyBuilder SetRequireRestart(bool value) { RequireRestart = value; return SettingsPropertyBuilder; }
        /// <inheritdoc/>
        public TSettingsPropertyBuilder SetHintText(string value) { HintText = value; return SettingsPropertyBuilder; }

        /// <inheritdoc/>
        public abstract IEnumerable<IPropertyDefinitionBase> GetDefinitions();
    }
}