using CtrEditor.ObjetosSim; using Newtonsoft.Json; using System; using System.Collections.Generic; namespace CtrEditor.Serialization { /// /// Almacena datos locales para un objeto global /// public class DatosLocales { /// /// ID del objeto global al que pertenecen estos datos locales /// public UniqueId Id_GlobalObject { get; set; } /// /// Posición vertical local /// public float? Top { get; set; } /// /// Posición horizontal local /// public float? Left { get; set; } /// /// Ancho local /// public float? Ancho { get; set; } /// /// Alto local /// public float? Alto { get; set; } /// /// Diccionario para almacenar propiedades dinámicas adicionales /// public Dictionary PropiedadesAdicionales { get; set; } /// /// Constructor por defecto necesario para deserialización /// public DatosLocales() { PropiedadesAdicionales = new Dictionary(); } /// /// Constructor con ID del objeto global /// public DatosLocales(UniqueId idGlobalObject) { Id_GlobalObject = idGlobalObject; PropiedadesAdicionales = new Dictionary(); } /// /// Copia los datos relevantes desde un objeto global /// 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 } /// /// Aplica los datos locales al objeto global /// 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 } } }