mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Added profile hierarchy creation and editing (doesn't save yet)
This commit is contained in:
1 parent
ee61d6f33b
commit
d8b0b2d4b6
43 files changed
+676
-241
No files matched your search
@@ -10,40 +10,41 @@ namespace Artemis.Core.Models.Profile
|
||||
{
|
||||
public sealed class Folder : ProfileElement
|
||||
{
|
||||
public Folder(Profile profile, Folder folder, string name)
|
||||
public Folder(Profile profile, ProfileElement parent, string name)
|
||||
{
|
||||
FolderEntity = new FolderEntity();
|
||||
EntityId = Guid.NewGuid();
|
||||
|
||||
Profile = profile;
|
||||
ParentFolder = folder;
|
||||
Parent = parent;
|
||||
Name = name;
|
||||
Children = new List<ProfileElement>();
|
||||
}
|
||||
|
||||
public Folder(Profile profile, Folder folder, FolderEntity folderEntity, IPluginService pluginService)
|
||||
public Folder(Profile profile, ProfileElement parent, FolderEntity folderEntity, IPluginService pluginService)
|
||||
{
|
||||
FolderEntity = folderEntity;
|
||||
EntityId = folderEntity.Id;
|
||||
|
||||
Profile = profile;
|
||||
ParentFolder = folder;
|
||||
Children = new List<ProfileElement>();
|
||||
Parent = parent;
|
||||
|
||||
// Load child folders
|
||||
foreach (var childFolder in Profile.ProfileEntity.Folders.Where(f => f.ParentId == EntityId))
|
||||
folder.Children.Add(new Folder(profile, this, childFolder, pluginService));
|
||||
_children.Add(new Folder(profile, this, childFolder, pluginService));
|
||||
// Load child layers
|
||||
foreach (var childLayer in Profile.ProfileEntity.Layers.Where(f => f.ParentId == EntityId))
|
||||
folder.Children.Add(new Layer(profile, this, childLayer, pluginService));
|
||||
_children.Add(new Layer(profile, this, childLayer, pluginService));
|
||||
|
||||
// Ensure order integrity, should be unnecessary but no one is perfect specially me
|
||||
_children = _children.OrderBy(c => c.Order).ToList();
|
||||
for (var index = 0; index < _children.Count; index++)
|
||||
{
|
||||
var profileElement = _children[index];
|
||||
profileElement.Order = index + 1;
|
||||
}
|
||||
}
|
||||
|
||||
internal FolderEntity FolderEntity { get; set; }
|
||||
internal Guid EntityId { get; set; }
|
||||
|
||||
public Profile Profile { get; }
|
||||
public Folder ParentFolder { get; }
|
||||
|
||||
|
||||
public override void Update(double deltaTime)
|
||||
{
|
||||
@@ -59,10 +60,24 @@ namespace Artemis.Core.Models.Profile
|
||||
profileElement.Render(deltaTime, surface, graphics);
|
||||
}
|
||||
|
||||
public Folder AddFolder(string name)
|
||||
{
|
||||
var folder = new Folder(Profile, this, name) {Order = Children.LastOrDefault()?.Order ?? 1};
|
||||
AddChild(folder);
|
||||
return folder;
|
||||
}
|
||||
|
||||
public Layer AddLayer(string name)
|
||||
{
|
||||
var layer = new Layer(Profile, this, name) {Order = Children.LastOrDefault()?.Order ?? 1};
|
||||
AddChild(layer);
|
||||
return layer;
|
||||
}
|
||||
|
||||
internal override void ApplyToEntity()
|
||||
{
|
||||
FolderEntity.Id = EntityId;
|
||||
FolderEntity.ParentId = ParentFolder?.EntityId ?? new Guid();
|
||||
FolderEntity.ParentId = Parent?.EntityId ?? new Guid();
|
||||
|
||||
FolderEntity.Order = Order;
|
||||
FolderEntity.Name = Name;
|
||||
@@ -74,7 +89,7 @@ namespace Artemis.Core.Models.Profile
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{nameof(Profile)}: {Profile}, {nameof(Order)}: {Order}, {nameof(Name)}: {Name}";
|
||||
return $"Folder - {nameof(Name)}: {Name}, {nameof(Order)}: {Order}";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user