1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 15:06:06 +00:00

Attributs race

This commit is contained in:
Yan Maniez 2019-04-15 20:30:22 +02:00
parent 1b3b101b6e
commit 893019a4d7
3 changed files with 153 additions and 46 deletions

View file

@ -38,7 +38,7 @@ namespace AideDeJeuLib
_Items = new List<Item>(); _Items = new List<Item>();
} }
public async Task<IEnumerable<Item>> GetChildrenAsync() public virtual async Task<IEnumerable<Item>> GetChildrenAsync()
{ {
return _Items; return _Items;
} }
@ -86,7 +86,7 @@ namespace AideDeJeuLib
// _Items.RemoveAt(index); // _Items.RemoveAt(index);
//} //}
public void AddChild(Item item) public virtual void AddChild(Item item)
{ {
_Items.Add(item); _Items.Add(item);
} }
@ -117,22 +117,22 @@ namespace AideDeJeuLib
[DataMember(Name = "Item_RootId", Order = 1)] [DataMember(Name = "Item_RootId", Order = 1)]
[Indexed] [Indexed]
public string RootId { get; set; } public virtual string RootId { get; set; }
[DataMember(Name = "Item_ParentLink", Order = 2)] [DataMember(Name = "Item_ParentLink", Order = 2)]
[Indexed] [Indexed]
public string ParentLink { get; set; } public virtual string ParentLink { get; set; }
[DataMember(Name = "Item_Name", Order = 3)] [DataMember(Name = "Item_Name", Order = 3)]
public string Name { get; set; } public virtual string Name { get; set; }
[DataMember(Name = "Item_ParentName", Order = 4)] [DataMember(Name = "Item_ParentName", Order = 4)]
public string ParentName { get; set; } public virtual string ParentName { get; set; }
[YamlIgnore] [YamlIgnore]
[IgnoreDataMember] [IgnoreDataMember]
[Ignore] [Ignore]
public string ParentNameLink public virtual string ParentNameLink
{ {
get get
{ {
@ -155,13 +155,13 @@ namespace AideDeJeuLib
} }
[DataMember(Name = "Item_NameLevel", Order = 5)] [DataMember(Name = "Item_NameLevel", Order = 5)]
public int NameLevel { get; set; } public virtual int NameLevel { get; set; }
[DataMember(Name = "Item_AltName", Order = 6)] [DataMember(Name = "Item_AltName", Order = 6)]
public string AltName { get; set; } public virtual string AltName { get; set; }
[YamlIgnore] [YamlIgnore]
[IgnoreDataMember] [IgnoreDataMember]
public string AltNameText public virtual string AltNameText
{ {
get get
{ {
@ -184,13 +184,13 @@ namespace AideDeJeuLib
} }
} }
[DataMember(Name = "Item_Source", Order = 7)] [DataMember(Name = "Item_Source", Order = 7)]
public string Source { get; set; } public virtual string Source { get; set; }
[YamlIgnore] [YamlIgnore]
[DataMember(Name = "Item_Markdown", Order = 8)] [DataMember(Name = "Item_Markdown", Order = 8)]
public virtual string Markdown { get; set; } public virtual string Markdown { get; set; }
[DataMember(Name = "Item_FullText", Order = 9)] [DataMember(Name = "Item_FullText", Order = 9)]
public string FullText { get; set; } public virtual string FullText { get; set; }
[IgnoreDataMember] [IgnoreDataMember]
[YamlIgnore] [YamlIgnore]
@ -234,7 +234,7 @@ namespace AideDeJeuLib
[IgnoreDataMember] [IgnoreDataMember]
[YamlIgnore] [YamlIgnore]
public string Yaml public virtual string Yaml
{ {
get get
{ {
@ -263,7 +263,7 @@ namespace AideDeJeuLib
[IgnoreDataMember] [IgnoreDataMember]
[YamlIgnore] [YamlIgnore]
public string SubMarkdown public virtual string SubMarkdown
{ {
get get
{ {
@ -306,7 +306,7 @@ namespace AideDeJeuLib
return post as Item; return post as Item;
} }
public string CleanMarkdown public virtual string CleanMarkdown
{ {
get get
{ {
@ -317,7 +317,7 @@ namespace AideDeJeuLib
} }
} }
public string NewId public virtual string NewId
{ {
get get
{ {
@ -357,9 +357,9 @@ namespace AideDeJeuLib
} }
[NotMapped] [NotMapped]
[IgnoreDataMember] [IgnoreDataMember]
public OrderedDictionary Attributes { get; set; } = new OrderedDictionary(); public virtual OrderedDictionary Attributes { get; set; } = new OrderedDictionary();
public OrderedDictionary AttributesKeyValue public virtual OrderedDictionary AttributesKeyValue
{ {
get get
{ {
@ -380,7 +380,7 @@ namespace AideDeJeuLib
} }
[DataMember] [DataMember]
public string AttributesDictionary public virtual string AttributesDictionary
{ {
get get
{ {
@ -400,7 +400,7 @@ namespace AideDeJeuLib
} }
} }
public void ResetAttribute(string name) public virtual void ResetAttribute(string name)
{ {
if (name != null) if (name != null)
{ {
@ -415,7 +415,7 @@ namespace AideDeJeuLib
} }
} }
} }
public void SetAttribute(string name, string value) public virtual void SetAttribute(string name, string value)
{ {
if (name != null && value != null) if (name != null && value != null)
{ {
@ -434,7 +434,7 @@ namespace AideDeJeuLib
} }
} }
} }
public string GetAttribute(string name) public virtual string GetAttribute(string name)
{ {
if (this.Attributes.Contains(name)) if (this.Attributes.Contains(name))
{ {
@ -445,6 +445,6 @@ namespace AideDeJeuLib
[DataMember] [DataMember]
public string Description { get; set; } public virtual string Description { get; set; }
} }
} }

View file

@ -6,39 +6,39 @@ namespace AideDeJeuLib
public class RaceItem : Item public class RaceItem : Item
{ {
[DataMember] [DataMember]
public string FullName { get; set; } public virtual string FullName { get; set; }
[DataMember] [DataMember]
public bool HasSubRaces { get; set; } public virtual bool HasSubRaces { get; set; }
[DataMember] [DataMember]
public string StrengthBonus { get; set; } public virtual string StrengthBonus { get; set; }
[DataMember] [DataMember]
public string DexterityBonus { get; set; } public virtual string DexterityBonus { get; set; }
[DataMember] [DataMember]
public string ConstitutionBonus { get; set; } public virtual string ConstitutionBonus { get; set; }
[DataMember] [DataMember]
public string IntelligenceBonus { get; set; } public virtual string IntelligenceBonus { get; set; }
[DataMember] [DataMember]
public string WisdomBonus { get; set; } public virtual string WisdomBonus { get; set; }
[DataMember] [DataMember]
public string CharismaBonus { get; set; } public virtual string CharismaBonus { get; set; }
[DataMember] [DataMember]
public string AnyAbilityBonus { get; set; } public virtual string AnyAbilityBonus { get; set; }
[DataMember] [DataMember]
public string AbilityScoreIncrease { get; set; } public virtual string AbilityScoreIncrease { get; set; }
[DataMember] [DataMember]
public string Age { get; set; } public virtual string Age { get; set; }
[DataMember] [DataMember]
public string Alignment { get; set; } public virtual string Alignment { get; set; }
[DataMember] [DataMember]
public string Size { get; set; } public virtual string Size { get; set; }
[DataMember] [DataMember]
public string Speed { get; set; } public virtual string Speed { get; set; }
[DataMember] [DataMember]
public string Darkvision { get; set; } public virtual string Darkvision { get; set; }
[DataMember] [DataMember]
public string Languages { get; set; } public virtual string Languages { get; set; }
} }
} }

View file

@ -2,7 +2,9 @@
using AideDeJeuLib; using AideDeJeuLib;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -16,7 +18,7 @@ namespace AideDeJeu.ViewModels
public PlayerCharacterEditorViewModel() public PlayerCharacterEditorViewModel()
{ {
ResetAlignments(); ResetAlignments();
Races = new NotifyTaskCompletion<List<RaceItem>>(Task.Run(() => LoadRacesAsync())); Races = new NotifyTaskCompletion<List<RaceItemExpanded>>(Task.Run(() => LoadRacesAsync()));
Classes = new NotifyTaskCompletion<List<ClassItem>>(Task.Run(() => LoadClassesAsync())); Classes = new NotifyTaskCompletion<List<ClassItem>>(Task.Run(() => LoadClassesAsync()));
Backgrounds = new NotifyTaskCompletion<List<BackgroundItem>>(Task.Run(() => LoadBackgroundsAsync())); Backgrounds = new NotifyTaskCompletion<List<BackgroundItem>>(Task.Run(() => LoadBackgroundsAsync()));
@ -147,7 +149,7 @@ namespace AideDeJeu.ViewModels
#endregion Alignment #endregion Alignment
#region Race #region Race
public NotifyTaskCompletion<List<RaceItem>> Races { get; private set; } public NotifyTaskCompletion<List<RaceItemExpanded>> Races { get; private set; }
private int _RaceSelectedIndex = -1; private int _RaceSelectedIndex = -1;
public int RaceSelectedIndex public int RaceSelectedIndex
{ {
@ -164,8 +166,8 @@ namespace AideDeJeu.ViewModels
} }
} }
} }
private RaceItem _SelectedRace = null; private RaceItemExpanded _SelectedRace = null;
public RaceItem SelectedRace public RaceItemExpanded SelectedRace
{ {
get get
{ {
@ -174,15 +176,120 @@ namespace AideDeJeu.ViewModels
set set
{ {
SetProperty(ref _SelectedRace, value); SetProperty(ref _SelectedRace, value);
SelectedPlayerCharacter.Race = _SelectedRace; //SelectedPlayerCharacter.Race = _SelectedRace;
} }
} }
public async Task<List<RaceItem>> LoadRacesAsync() public class RaceItemExpanded : RaceItem
{
public RaceItem Race { get; set; }
public SubRaceItem SubRace { get; set; }
private RaceItem RaceOrSubRace
{
get
{
return SubRace ?? Race;
}
}
public override string Name
{
get
{
return RaceOrSubRace.Name;
}
}
public override string Description
{
get
{
return RaceOrSubRace.Description;
}
}
public override string NewId
{
get
{
return RaceOrSubRace.NewId;
}
}
public override string Id
{
get
{
return RaceOrSubRace.Id;
}
}
public override string RootId
{
get
{
return RaceOrSubRace.RootId;
}
}
public override string AbilityScoreIncrease
{
get
{
if(SubRace?.AbilityScoreIncrease != null)
{
return Race.AbilityScoreIncrease + "\n\n" + SubRace.AbilityScoreIncrease;
}
return Race.AbilityScoreIncrease;
}
}
public override OrderedDictionary Attributes
{
get
{
if(SubRace == null)
{
return Race.Attributes;
}
var dico = new OrderedDictionary();
foreach(DictionaryEntry attr in Race.Attributes)
{
dico[attr.Key] = attr.Value;
}
foreach (DictionaryEntry attr in SubRace.Attributes)
{
dico[attr.Key] = attr.Value;
}
return dico;
}
}
public override string Age { get { return Race.Age; } }
public override string Alignment { get { return Race.Alignment; } }
public override string Size { get { return Race.Size; } }
public override string Speed { get { return Race.Speed; } }
public override string Darkvision { get { return Race.Darkvision; } }
public override string Languages { get { return Race.Languages; } }
}
public async Task<List<RaceItemExpanded>> LoadRacesAsync()
{ {
using (var context = await StoreViewModel.GetLibraryContextAsync()) using (var context = await StoreViewModel.GetLibraryContextAsync())
{ {
return await context.Races.Where(r => !r.HasSubRaces).OrderBy(r => Tools.Helpers.RemoveDiacritics(r.Name)).ToListAsync().ConfigureAwait(false); var expandedRaces = new List<RaceItemExpanded>();
var races = context.Races.Where(r => r.GetType() == typeof(RaceItem));
foreach(var race in races)
{
if(race.HasSubRaces)
{
var subraces = context.SubRaces.Where(sr => sr.ParentLink == race.Id);
foreach(var subrace in subraces)
{
expandedRaces.Add(new RaceItemExpanded() { Race = race, SubRace = subrace });
}
}
else
{
expandedRaces.Add(new RaceItemExpanded() { Race = race, SubRace = null });
}
}
return expandedRaces;
//return await context.Races.Where(r => !r.HasSubRaces).OrderBy(r => Tools.Helpers.RemoveDiacritics(r.Name)).ToListAsync().ConfigureAwait(false);
} }
} }
#endregion Race #endregion Race