using Ubisoft.Hotel.Package.Editor; namespace Ubisoft.Hotel.PackageManager.Editor { internal abstract class BuildStep { private static BuildBatchSettings s_buildSettings; internal static BuildBatchSettings BuildSettings { get { if (s_buildSettings == null) { s_buildSettings = BuildBatchSettings.Load(); } return s_buildSettings; } } internal BuildStep(string name) { Name = name; } internal string Name { get; private set; } internal bool IsPerforming { get; private set; } internal bool IsDone { get; private set; } internal virtual void Update() { } internal void Perform() { PackageManager.BuildBatch_AddTimeDetail($"BEGIN {Name}"); IsPerforming = true; IsDone = false; ExtendedPerform(); } protected abstract void ExtendedPerform(); protected void OnDone() { PackageManager.Log($"BuildBatch: step ({Name}) done in {PackageManager.BuildBatch_TimeSpentAtStepAsString}"); PackageManager.BuildBatch_AddTimeDetail($"END {Name}"); IsPerforming = false; IsDone = true; } protected PackageManager PackageManager { get { return PackageManagerMain.Instance.PackageManager; } } protected AppSpaceBuildSuiteProvider AppSpaceBuildSuiteProvider { get { return PackageManager.AppSpaceBuildSuiteProvider; } } protected PackageSpaceBuildSuiteProvider PackageSpaceBuildSuiteProvider { get { return PackageManager.PackageSpaceBuildSuiteProvider; } } protected BuildSuite AppSpaceBuildSuite { get { return PackageManager.AppSpaceBuildSuite; } } protected BuildSuite PackageSpaceBuildSuite { get { return PackageManager.PackageSpaceBuildSuite; } } protected BuildSuite CombinedSpaceBuildSuite { get { return PackageManager.CombinedSpaceBuildSuite; } } } }