Runtime/SuiOutputSettings.cs
namespace SboxUiDesigner.Runtime;
/// <summary>
/// Output configuration for the compile step. Stored inside the .sui so subsequent
/// compiles do not re-prompt the user.
/// </summary>
public sealed class SuiOutputSettings
{
/// <summary>True once the user has chosen an output folder at least once.</summary>
public bool Configured { get; set; } = false;
/// <summary>
/// Project-relative output folder for generated files. e.g.
/// "Code/UI/Generated/Inventory" or "Code/UI". Final mode writes here;
/// preview mode ignores this and writes to the preview cache root.
/// </summary>
public string RootFolder { get; set; } = null;
/// <summary>C# namespace to use for generated panel components.</summary>
public string Namespace { get; set; } = "Game.UI";
/// <summary>Generated PanelComponent class name. Defaults to the document name on first compile.</summary>
public string ClassName { get; set; } = null;
public bool GenerateRazor { get; set; } = true;
public bool GenerateScss { get; set; } = true;
/// <summary>V1.5 — generate paired .generated.cs partial.</summary>
public bool GenerateGeneratedCs { get; set; } = false;
/// <summary>V1.5 — create paired .User.cs partial only if missing.</summary>
public bool GenerateUserCsIfMissing { get; set; } = false;
/// <summary>V1+ — create paired .custom.scss only if missing.</summary>
public bool GenerateCustomScssIfMissing { get; set; } = false;
public SuiOutputSettings Clone() => new()
{
Configured = Configured,
RootFolder = RootFolder,
Namespace = Namespace,
ClassName = ClassName,
GenerateRazor = GenerateRazor,
GenerateScss = GenerateScss,
GenerateGeneratedCs = GenerateGeneratedCs,
GenerateUserCsIfMissing = GenerateUserCsIfMissing,
GenerateCustomScssIfMissing = GenerateCustomScssIfMissing,
};
}