mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 15:06:06 +00:00
Attributs race
This commit is contained in:
parent
1b3b101b6e
commit
893019a4d7
3 changed files with 153 additions and 46 deletions
|
|
@ -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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue