CtrEditor/Serialization/DatosLocales.cs

91 lines
2.6 KiB
C#

using CtrEditor.ObjetosSim;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace CtrEditor.Serialization
{
/// <summary>
/// Almacena datos locales para un objeto global
/// </summary>
public class DatosLocales
{
/// <summary>
/// ID del objeto global al que pertenecen estos datos locales
/// </summary>
public UniqueId Id_GlobalObject { get; set; }
/// <summary>
/// Posición vertical local
/// </summary>
public float? Top { get; set; }
/// <summary>
/// Posición horizontal local
/// </summary>
public float? Left { get; set; }
/// <summary>
/// Ancho local
/// </summary>
public float? Ancho { get; set; }
/// <summary>
/// Alto local
/// </summary>
public float? Alto { get; set; }
/// <summary>
/// Diccionario para almacenar propiedades dinámicas adicionales
/// </summary>
public Dictionary<string, object> PropiedadesAdicionales { get; set; }
/// <summary>
/// Constructor por defecto necesario para deserialización
/// </summary>
public DatosLocales()
{
PropiedadesAdicionales = new Dictionary<string, object>();
}
/// <summary>
/// Constructor con ID del objeto global
/// </summary>
public DatosLocales(UniqueId idGlobalObject)
{
Id_GlobalObject = idGlobalObject;
PropiedadesAdicionales = new Dictionary<string, object>();
}
/// <summary>
/// Copia los datos relevantes desde un objeto global
/// </summary>
public void CopiarDesdeObjeto(osBase objeto)
{
if (objeto == null) return;
Id_GlobalObject = objeto.Id;
Top = objeto.Top;
Left = objeto.Left;
Ancho = objeto.Ancho;
Alto = objeto.Alto;
// Aquí puedes añadir más propiedades si es necesario
}
/// <summary>
/// Aplica los datos locales al objeto global
/// </summary>
public void AplicarAObjeto(osBase objeto)
{
if (objeto == null || objeto.Id.Value != Id_GlobalObject.Value) return;
if (Left.HasValue) objeto.Left = Left.Value;
if (Top.HasValue) objeto.Top = Top.Value;
if (Ancho.HasValue) objeto.Ancho = Ancho.Value;
if (Alto.HasValue) objeto.Alto = Alto.Value;
// Aquí puedes aplicar más propiedades si es necesario
}
}
}