Added profile hierarchy creation and editing (doesn't save yet)

This commit is contained in:
SpoinkyNL committed 2019-11-23 23:56:07 +01:00
1 parent ee61d6f33b
commit d8b0b2d4b6
43 files changed
+676 -241

No files matched your search

+30 -15
View File
@@ -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}";
}
}
}