Files
textdecalURP/Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/PackageContent.cs
Kirill Chikalin 275dc598c7 update libs
2025-02-13 17:48:12 +03:00

68 lines
1.9 KiB
C#

using AssetStoreTools.Uploader.Data.Serialization;
using AssetStoreTools.Uploader.Services;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AssetStoreTools.Uploader.Data
{
internal class PackageContent : IPackageContent
{
private IWorkflow _activeWorkflow;
private List<IWorkflow> _workflows;
private WorkflowStateData _workflowStateData;
private ICachingService _cachingService;
public event Action<IWorkflow> OnActiveWorkflowChanged;
public PackageContent(List<IWorkflow> workflows, WorkflowStateData workflowStateData, ICachingService cachingService)
{
_workflows = workflows;
_workflowStateData = workflowStateData;
_cachingService = cachingService;
foreach (var workflow in _workflows)
{
workflow.OnChanged += Serialize;
}
Deserialize();
}
public IWorkflow GetActiveWorkflow()
{
return _activeWorkflow;
}
public void SetActiveWorkflow(IWorkflow workflow)
{
_activeWorkflow = workflow;
OnActiveWorkflowChanged?.Invoke(_activeWorkflow);
Serialize();
}
public List<IWorkflow> GetAvailableWorkflows()
{
return _workflows;
}
private void Serialize()
{
_workflowStateData.SetActiveWorkflow(_activeWorkflow.Name);
_cachingService.CacheWorkflowStateData(_workflowStateData);
}
private void Deserialize()
{
var serializedWorkflow = _workflowStateData.GetActiveWorkflow();
var workflow = _workflows.FirstOrDefault(x => x.Name == serializedWorkflow);
if (workflow != null)
_activeWorkflow = workflow;
else
_activeWorkflow = _workflows[0];
}
}
}