diff --git a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityDefectItem.cs b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityDefectItem.cs index 18276579..ff641255 100644 --- a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityDefectItem.cs +++ b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityDefectItem.cs @@ -1,7 +1,6 @@ namespace AideDeJeuLib { - public class PersonalityDefectItem : Item, TableProperty + public class PersonalityDefectItem : PersonalityItem { - public string Table { get; set; } } } diff --git a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityIdealItem.cs b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityIdealItem.cs index d5ff6d72..39520cdb 100644 --- a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityIdealItem.cs +++ b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityIdealItem.cs @@ -1,7 +1,6 @@ namespace AideDeJeuLib { - public class PersonalityIdealItem : Item, TableProperty + public class PersonalityIdealItem : PersonalityItem { - public string Table { get; set; } } } diff --git a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityItem.cs b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityItem.cs new file mode 100644 index 00000000..495187e1 --- /dev/null +++ b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityItem.cs @@ -0,0 +1,7 @@ +namespace AideDeJeuLib +{ + public class PersonalityItem : Item, TableProperty + { + public string Table { get; set; } + } +} diff --git a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityLinkItem.cs b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityLinkItem.cs index 9ec44eab..d83792c6 100644 --- a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityLinkItem.cs +++ b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityLinkItem.cs @@ -1,7 +1,6 @@ namespace AideDeJeuLib { - public class PersonalityLinkItem : Item, TableProperty + public class PersonalityLinkItem : PersonalityItem { - public string Table { get; set; } } } diff --git a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityTraitItem.cs b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityTraitItem.cs index 5bf3e80b..e15617c4 100644 --- a/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityTraitItem.cs +++ b/AideDeJeu/AideDeJeu/Models/Backgrounds/PersonalityTraitItem.cs @@ -1,7 +1,6 @@ namespace AideDeJeuLib { - public class PersonalityTraitItem : Item, TableProperty + public class PersonalityTraitItem : PersonalityItem { - public string Table { get; set; } } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs index 018621f8..2388ebe1 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs @@ -7,6 +7,19 @@ namespace AideDeJeu.ViewModels { public class PickerViewModel : BaseViewModel where T:class { + private string _Title = null; + public string Title + { + get + { + return _Title; + } + set + { + SetProperty(ref _Title, value); + } + } + private List _Items = null; public List Items { diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs index 2b846920..c6c320dc 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs @@ -22,6 +22,9 @@ namespace AideDeJeu.ViewModels Backgrounds = new NotifyTaskCompletion>(Task.Run(() => LoadBackgroundsAsync())); SubBackgrounds = new NotifyTaskCompletion>(null); PersonalityTraits = new NotifyTaskCompletion>(null); + PersonalityIdeals = new NotifyTaskCompletion>(null); + PersonalityLinks = new NotifyTaskCompletion>(null); + PersonalityDefects = new NotifyTaskCompletion>(null); } #region Selected PC @@ -109,7 +112,14 @@ namespace AideDeJeu.ViewModels SelectedPlayerCharacter.Background = Backgrounds.Result[_BackgroundSelectedIndex]; SubBackgrounds = new NotifyTaskCompletion>(Task.Run(() => LoadSubBackgroundsAsync(SelectedPlayerCharacter.Background))); PersonalityTraits = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityTraitsAsync(SelectedPlayerCharacter.Background))); + PersonalityIdeals = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityIdealsAsync(SelectedPlayerCharacter.Background))); + PersonalityLinks = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityLinksAsync(SelectedPlayerCharacter.Background))); + PersonalityDefects = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityDefectsAsync(SelectedPlayerCharacter.Background))); SelectedPlayerCharacter.SubBackground = null; + SelectedPlayerCharacter.PersonalityTrait = null; + SelectedPlayerCharacter.PersonalityIdeal = null; + SelectedPlayerCharacter.PersonalityLink = null; + SelectedPlayerCharacter.PersonalityDefect = null; } } @@ -160,6 +170,42 @@ namespace AideDeJeu.ViewModels SetProperty(ref _PersonalityTraits, value); } } + private NotifyTaskCompletion> _PersonalityIdeals = null; + public NotifyTaskCompletion> PersonalityIdeals + { + get + { + return _PersonalityIdeals; + } + private set + { + SetProperty(ref _PersonalityIdeals, value); + } + } + private NotifyTaskCompletion> _PersonalityLinks = null; + public NotifyTaskCompletion> PersonalityLinks + { + get + { + return _PersonalityLinks; + } + private set + { + SetProperty(ref _PersonalityLinks, value); + } + } + private NotifyTaskCompletion> _PersonalityDefects = null; + public NotifyTaskCompletion> PersonalityDefects + { + get + { + return _PersonalityDefects; + } + private set + { + SetProperty(ref _PersonalityDefects, value); + } + } public async Task> LoadBackgroundsAsync() { @@ -170,27 +216,78 @@ namespace AideDeJeu.ViewModels } } + public List ExtractSimpleTable(string table) + { + var lines = table.Split('\n'); + var result = new List(); + foreach (var line in lines.Skip(2)) + { + if (line.StartsWith("|")) + { + var cols = line.Split('|'); + var text = cols[2].Replace("", " ").Replace(" ", " "); + result.Add(text); + } + } + return result; + } public async Task> LoadPersonalityTraitsAsync(BackgroundItem background) { if (background != null) { using (var context = await StoreViewModel.GetLibraryContextAsync()) { - var list = await context.PersonalityTraits.Where(it => it.ParentLink.StartsWith(background.RootId)).OrderBy(b => Tools.Helpers.RemoveDiacritics(b.Name)).ToListAsync().ConfigureAwait(false); + var list = await context.PersonalityTraits.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false); var item = list.FirstOrDefault(); - var table = item.Table; - var lines = table.Split('\n'); - var result = new List(); - foreach (var line in lines.Skip(2)) - { - if (line.StartsWith("|")) - { - var cols = line.Split('|'); - var text = cols[2].Replace("", " ").Replace(" ", " "); - result.Add(text); - } - } - return result; + return ExtractSimpleTable(item.Table); + } + } + else + { + return null; + } + } + public async Task> LoadPersonalityIdealsAsync(BackgroundItem background) + { + if (background != null) + { + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + var list = await context.PersonalityIdeals.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false); + var item = list.FirstOrDefault(); + return ExtractSimpleTable(item.Table); + } + } + else + { + return null; + } + } + public async Task> LoadPersonalityLinksAsync(BackgroundItem background) + { + if (background != null) + { + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + var list = await context.PersonalityLinks.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false); + var item = list.FirstOrDefault(); + return ExtractSimpleTable(item.Table); + } + } + else + { + return null; + } + } + public async Task> LoadPersonalityDefectsAsync(BackgroundItem background) + { + if (background != null) + { + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + var list = await context.PersonalityDefects.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false); + var item = list.FirstOrDefault(); + return ExtractSimpleTable(item.Table); } } else @@ -216,23 +313,45 @@ namespace AideDeJeu.ViewModels } } - public ICommand StringPickerCommand + public ICommand PersonalityTraitPickerCommand { get { - return new Command>(async (strings) => await ExecuteStringPickerCommandAsync(strings)); + return new Command>(async (strings) => SelectedPlayerCharacter.PersonalityTrait = await ExecuteStringPickerCommandAsync(strings)); + } + } + public ICommand PersonalityIdealPickerCommand + { + get + { + return new Command>(async (strings) => SelectedPlayerCharacter.PersonalityIdeal = await ExecuteStringPickerCommandAsync(strings)); + } + } + public ICommand PersonalityLinkPickerCommand + { + get + { + return new Command>(async (strings) => SelectedPlayerCharacter.PersonalityLink = await ExecuteStringPickerCommandAsync(strings)); + } + } + public ICommand PersonalityDefectPickerCommand + { + get + { + return new Command>(async (strings) => SelectedPlayerCharacter.PersonalityDefect = await ExecuteStringPickerCommandAsync(strings)); } } - private async Task ExecuteStringPickerCommandAsync(List strings) + private async Task ExecuteStringPickerCommandAsync(List strings) { var picker = new Views.StringPicker(); var vm = picker.ViewModel; + vm.Title = "Trait de personnalité"; vm.Items = strings; await Main.Navigator.Navigation.PushModalAsync(picker, true); var result = await vm.PickValueAsync(); await Main.Navigator.Navigation.PopModalAsync(true); - SelectedPlayerCharacter.PersonalityTrait = result; + return result; } #endregion Background diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs index b5794fde..7dfcff48 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs @@ -67,5 +67,41 @@ namespace AideDeJeu.ViewModels SetProperty(ref _PersonalityTrait, value); } } + private string _PersonalityIdeal = null; + public string PersonalityIdeal + { + get + { + return _PersonalityIdeal; + } + set + { + SetProperty(ref _PersonalityIdeal, value); + } + } + private string _PersonalityLink = null; + public string PersonalityLink + { + get + { + return _PersonalityLink; + } + set + { + SetProperty(ref _PersonalityLink, value); + } + } + private string _PersonalityDefect = null; + public string PersonalityDefect + { + get + { + return _PersonalityDefect; + } + set + { + SetProperty(ref _PersonalityDefect, value); + } + } } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs index b6fa16e6..318e38c2 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs @@ -561,6 +561,9 @@ namespace AideDeJeu.ViewModels public DbSet Backgrounds { get; set; } public DbSet SubBackgrounds { get; set; } public DbSet PersonalityTraits { get; set; } + public DbSet PersonalityIdeals { get; set; } + public DbSet PersonalityLinks { get; set; } + public DbSet PersonalityDefects { get; set; } public AideDeJeuContext(string dbPath) { diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml index cb5fa27e..d2dfb06b 100644 --- a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml @@ -58,19 +58,21 @@ -