diff --git a/AideDeJeu/AideDeJeu/Models/Items/Item.cs b/AideDeJeu/AideDeJeu/Models/Items/Item.cs index 6acc1644..f56aa82d 100644 --- a/AideDeJeu/AideDeJeu/Models/Items/Item.cs +++ b/AideDeJeu/AideDeJeu/Models/Items/Item.cs @@ -354,41 +354,58 @@ namespace AideDeJeuLib static IDeserializer _Deserializer = new DeserializerBuilder().WithNamingConvention(new PascalCaseNamingConvention()).Build(); static ISerializer _Serializer = new SerializerBuilder().WithNamingConvention(new PascalCaseNamingConvention()).Build(); - [NotMapped] - [IgnoreDataMember] - public virtual OrderedDictionary Attributes + protected OrderedDictionary Attributes { get; private set; } = new OrderedDictionary(); + //[NotMapped] + //[IgnoreDataMember] + //protected virtual OrderedDictionary Attributes + //{ + // get + // { + // if (string.IsNullOrEmpty(AttributesDictionary)) + // { + // return new OrderedDictionary(); + // } + // else + // { + // //var builder = new DeserializerBuilder(); + // //var deserializer = builder + // // .WithNamingConvention(new PascalCaseNamingConvention()) + // // .Build(); + // return _Deserializer.Deserialize(AttributesDictionary); + // } + // } + //}// = new OrderedDictionary(); + public void SaveAttributes() { - get + if (Attributes == null) { - if (string.IsNullOrEmpty(AttributesDictionary)) - { - return new OrderedDictionary(); - } - else - { - //var builder = new DeserializerBuilder(); - //var deserializer = builder - // .WithNamingConvention(new PascalCaseNamingConvention()) - // .Build(); - return _Deserializer.Deserialize(AttributesDictionary); - } + AttributesDictionary = null; } - set + else { - if (value == null) - { - AttributesDictionary = null; - } - else - { - //var builder = new SerializerBuilder(); - //var serializer = builder - // .WithNamingConvention(new PascalCaseNamingConvention()) - // .Build(); - AttributesDictionary = _Serializer.Serialize(value); - } + //var builder = new SerializerBuilder(); + //var serializer = builder + // .WithNamingConvention(new PascalCaseNamingConvention()) + // .Build(); + AttributesDictionary = _Serializer.Serialize(Attributes); } - }// = new OrderedDictionary(); + } + public void LoadAttributes() + { + Attributes = GetAttributes(); + } + + public OrderedDictionary GetAttributes() + { + if (string.IsNullOrEmpty(AttributesDictionary)) + { + return new OrderedDictionary(); + } + else + { + return _Deserializer.Deserialize(AttributesDictionary); + } + } public virtual OrderedDictionary AttributesKeyValue { @@ -432,6 +449,7 @@ namespace AideDeJeuLib { this.Attributes.Remove(name); } + SaveAttributes(); } } public virtual void SetAttribute(string name, string value) @@ -451,10 +469,12 @@ namespace AideDeJeuLib { this.Attributes[name] = value; } + SaveAttributes(); } } public virtual string GetAttribute(string name) { + LoadAttributes(); if (this.Attributes.Contains(name)) { return this.Attributes[name].ToString(); diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/RaceViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/RaceViewModel.cs index 83ef9dc6..fc9c74b9 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/RaceViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/RaceViewModel.cs @@ -39,14 +39,14 @@ namespace AideDeJeu.ViewModels.PlayerCharacter { if (SubRace == null) { - return Race.Attributes; + return Race.GetAttributes(); } var dico = new OrderedDictionary(); - foreach (DictionaryEntry attr in Race.Attributes) + foreach (DictionaryEntry attr in Race.GetAttributes()) { dico[attr.Key] = attr.Value; } - foreach (DictionaryEntry attr in SubRace.Attributes) + foreach (DictionaryEntry attr in SubRace.GetAttributes()) { dico[attr.Key] = attr.Value; } diff --git a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs index 57eb793c..fd99e0e2 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs @@ -475,7 +475,8 @@ namespace AideDeJeu.ViewModels } else { - item.Attributes[attribute.Key] = attribute.Value; + item.SetAttribute(attribute.Key, attribute.Value); + //item.Attributes[attribute.Key] = attribute.Value; } } return item;