Added profile deserialization

This commit is contained in:
Robert committed 2019-11-19 17:31:17 +01:00
1 parent e18195c277
commit 296414001b
9 files changed
+132 -73

No files matched your search

+52 -23
View File
@@ -1,54 +1,83 @@
using System.Collections.Generic;
using System.Drawing;
using Artemis.Core.Models.Profile.Interfaces;
using Artemis.Core.Models.Profile.Abstract;
using Artemis.Core.Services.Interfaces;
using Artemis.Storage.Entities;
namespace Artemis.Core.Models.Profile
{
public class Folder : IProfileElement
public class Folder : ProfileElement
{
public Folder(Profile profile)
public Folder(Profile profile, Folder folder, string name)
{
FolderEntity = new FolderEntity();
Guid = System.Guid.NewGuid().ToString();
Profile = profile;
Children = new List<IProfileElement>();
ParentFolder = folder;
Name = name;
Children = new List<ProfileElement>();
}
public Profile Profile { get; }
public List<IProfileElement> Children { get; set; }
public int Order { get; set; }
public string Name { get; set; }
public Folder(Profile profile, Folder folder, FolderEntity folderEntity, IPluginService pluginService)
{
FolderEntity = folderEntity;
Guid = folderEntity.Guid;
public void Update(double deltaTime)
Profile = profile;
ParentFolder = folder;
Children = new List<ProfileElement>();
// Load child folders
foreach (var childFolder in folderEntity.Folders)
folder.Children.Add(new Folder(profile, this, childFolder, pluginService));
// Load child layers
foreach (var childLayer in folderEntity.Layers)
folder.Children.Add(new Layer(profile, this, childLayer, pluginService));
}
internal FolderEntity FolderEntity { get; set; }
internal string Guid { get; set; }
public Profile Profile { get; }
public Folder ParentFolder { get; }
public override void Update(double deltaTime)
{
// Folders don't update but their children do
foreach (var profileElement in Children)
profileElement.Update(deltaTime);
}
public void Render(double deltaTime, Surface.Surface surface, Graphics graphics)
public override void Render(double deltaTime, Surface.Surface surface, Graphics graphics)
{
// Folders don't render but their children do
foreach (var profileElement in Children)
profileElement.Render(deltaTime, surface, graphics);
}
public static Folder FromFolderEntity(Profile profile, FolderEntity folderEntity, IPluginService pluginService)
internal override void ApplyToEntity()
{
var folder = new Folder(profile)
FolderEntity.Guid = Guid;
FolderEntity.Order = Order;
FolderEntity.Name = Name;
foreach (var profileElement in Children)
{
Name = folderEntity.Name,
Order = folderEntity.Order
};
profileElement.ApplyToEntity();
// Add missing children
if (profileElement is Folder folder)
{
// TODO
}
else if (profileElement is Layer layer)
{
// TODO
}
// Load child folders
foreach (var childFolder in folderEntity.Folders)
folder.Children.Add(FromFolderEntity(profile, childFolder, pluginService));
// Load child layers
foreach (var childLayer in folderEntity.Layers)
folder.Children.Add(Layer.FromLayerEntity(profile, childLayer, pluginService));
return folder;
// Remove extra childen
}
}
public override string ToString()