diff --git a/AideDeJeu/AideDeJeu.UWP/App.xaml.cs b/AideDeJeu/AideDeJeu.UWP/App.xaml.cs index fe55c759..cde2620c 100644 --- a/AideDeJeu/AideDeJeu.UWP/App.xaml.cs +++ b/AideDeJeu/AideDeJeu.UWP/App.xaml.cs @@ -55,6 +55,7 @@ namespace AideDeJeu.UWP Rg.Plugins.Popup.Popup.Init(); //Xamarin.Forms.Forms.Init(e); + //Xamarin.Forms.SetFlags("CollectionView_Experimental"); //Xamarin.Forms.SetFlags("Shell_Experimental"); Xamarin.Forms.Forms.Init(e, Rg.Plugins.Popup.Popup.GetExtraAssemblies()); SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3()); diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs index fb6ebddb..104fd90a 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs @@ -15,10 +15,28 @@ namespace AideDeJeu.ViewModels { Races = new NotifyTaskCompletion>(Task.Run(() => LoadRacesAsync())); Classes = new NotifyTaskCompletion>(Task.Run(() => LoadClassesAsync())); + Backgrounds = new NotifyTaskCompletion>(Task.Run(() => LoadBackgroundsAsync())); SubBackgrounds = new NotifyTaskCompletion>(null); + PersonalityTraits = new NotifyTaskCompletion>(null); } + #region Selected PC + private PlayerCharacterViewModel _SelectedPlayerCharacter = new PlayerCharacterViewModel(); + public PlayerCharacterViewModel SelectedPlayerCharacter + { + get + { + return _SelectedPlayerCharacter; + } + set + { + SetProperty(ref _SelectedPlayerCharacter, value); + } + } + #endregion Selected PC + + #region Race public NotifyTaskCompletion> Races { get; private set; } private int _RaceSelectedIndex = 0; public int RaceSelectedIndex @@ -36,6 +54,17 @@ namespace AideDeJeu.ViewModels } } } + + public async Task> LoadRacesAsync() + { + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + return await context.Races.Where(r => !r.HasSubRaces).OrderBy(r => Tools.Helpers.RemoveDiacritics(r.Name)).ToListAsync().ConfigureAwait(false); + } + } + #endregion Race + + #region Class public NotifyTaskCompletion> Classes { get; private set; } private int _ClassSelectedIndex = 0; @@ -52,6 +81,16 @@ namespace AideDeJeu.ViewModels } } + public async Task> LoadClassesAsync() + { + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + return await context.Classes.Where(c => !(c is SubClassItem)).OrderBy(c => Tools.Helpers.RemoveDiacritics(c.Name)).ToListAsync().ConfigureAwait(false); + } + } + #endregion Class + + #region Background public NotifyTaskCompletion> Backgrounds { get; private set; } private int _BackgroundSelectedIndex = 0; @@ -66,6 +105,7 @@ namespace AideDeJeu.ViewModels SetProperty(ref _BackgroundSelectedIndex, value); SelectedPlayerCharacter.Background = Backgrounds.Result[_BackgroundSelectedIndex]; SubBackgrounds = new NotifyTaskCompletion>(Task.Run(() => LoadSubBackgroundsAsync(SelectedPlayerCharacter.Background))); + PersonalityTraits = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityTraitsAsync(SelectedPlayerCharacter.Background))); SelectedPlayerCharacter.SubBackground = null; } } @@ -105,47 +145,53 @@ namespace AideDeJeu.ViewModels } } - private PlayerCharacterViewModel _SelectedPlayerCharacter = new PlayerCharacterViewModel(); - public PlayerCharacterViewModel SelectedPlayerCharacter + private NotifyTaskCompletion> _PersonalityTraits = null; + public NotifyTaskCompletion> PersonalityTraits { get { - return _SelectedPlayerCharacter; + return _PersonalityTraits; } - set + private set { - SetProperty(ref _SelectedPlayerCharacter, value); + SetProperty(ref _PersonalityTraits, value); } } - public List Abilities { get; set; } = new List() - { - "2 (-4)", "3 (-4)", "4 (-3)", "5 (-3)", "6 (-2)", "7 (-2)", "8 (-1)", "9 (-1)", "10 (+0)", "11 (+0)", "12 (+1)", "13 (+1)", "14 (+2)", "15 (+2)", "16 (+3)", "17 (+3)", "18 (+4)", "19 (+4)", "20 (+5)", "21 (+5)" - }; - public List Levels { get; set; } = new List() - { - "1", //"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" - }; - - public async Task> LoadRacesAsync() - { - using (var context = await StoreViewModel.GetLibraryContextAsync()) - { - return await context.Races.Where(r => !r.HasSubRaces).OrderBy(r => Tools.Helpers.RemoveDiacritics(r.Name)).ToListAsync().ConfigureAwait(false); - } - } - public async Task> LoadClassesAsync() - { - using (var context = await StoreViewModel.GetLibraryContextAsync()) - { - return await context.Classes.Where(c => !(c is SubClassItem)).OrderBy(c => Tools.Helpers.RemoveDiacritics(c.Name)).ToListAsync().ConfigureAwait(false); - } - } public async Task> LoadBackgroundsAsync() { using (var context = await StoreViewModel.GetLibraryContextAsync()) { - return await context.Backgrounds.Where(b => b.GetType() == typeof(BackgroundItem)).OrderBy(b => Tools.Helpers.RemoveDiacritics(b.Name)).ToListAsync().ConfigureAwait(false); + var list = await context.Backgrounds.Where(b => b.GetType() == typeof(BackgroundItem)).OrderBy(b => Tools.Helpers.RemoveDiacritics(b.Name)).ToListAsync().ConfigureAwait(false); + return list; + } + } + + 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 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('|'); + result.Add(cols[2]); + } + } + return result; + } + } + else + { + return null; } } @@ -165,5 +211,21 @@ namespace AideDeJeu.ViewModels return new List(); } } + #endregion Background + + #region Abilities + public List Abilities { get; set; } = new List() + { + "2 (-4)", "3 (-4)", "4 (-3)", "5 (-3)", "6 (-2)", "7 (-2)", "8 (-1)", "9 (-1)", "10 (+0)", "11 (+0)", "12 (+1)", "13 (+1)", "14 (+2)", "15 (+2)", "16 (+3)", "17 (+3)", "18 (+4)", "19 (+4)", "20 (+5)", "21 (+5)" + }; + #endregion Abilities + + #region Level + public List Levels { get; set; } = new List() + { + "1", //"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" + }; + #endregion Level + } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs index 17ec8679..b6fa16e6 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs @@ -560,6 +560,7 @@ namespace AideDeJeu.ViewModels public DbSet SubClasses { get; set; } public DbSet Backgrounds { get; set; } public DbSet SubBackgrounds { get; set; } + public DbSet PersonalityTraits { get; set; } public AideDeJeuContext(string dbPath) { diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml index cded05d7..748f1387 100644 --- a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml @@ -54,10 +54,19 @@ - - + + + + + + + + + + +