diff --git a/AideDeJeu/AideDeJeu/Services/IDataStore.cs b/AideDeJeu/AideDeJeu/Services/IDataStore.cs index 5515318a..abe15a43 100644 --- a/AideDeJeu/AideDeJeu/Services/IDataStore.cs +++ b/AideDeJeu/AideDeJeu/Services/IDataStore.cs @@ -11,5 +11,6 @@ namespace AideDeJeu.Services Task DeleteItemAsync(T item); Task GetItemAsync(string id); Task> GetItemsAsync(bool forceRefresh = false); + Task> GetItemsAsync(string classe, int niveauMin, int niveauMax); } } diff --git a/AideDeJeu/AideDeJeu/Services/MockDataStore.cs b/AideDeJeu/AideDeJeu/Services/MockDataStore.cs index de6e65c8..82468a3a 100644 --- a/AideDeJeu/AideDeJeu/Services/MockDataStore.cs +++ b/AideDeJeu/AideDeJeu/Services/MockDataStore.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using AideDeJeu.Models; using AideDeJeuLib; +using AideDeJeuLib.Spells; [assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.Services.MockDataStore))] namespace AideDeJeu.Services @@ -68,5 +69,10 @@ namespace AideDeJeu.Services items = spells.Select(spell => new Item() { Text = spell.Title, Description = spell.DescriptionText }).ToList(); return await Task.FromResult(items); } + public async Task> GetItemsAsync(string classe, int minLevel, int maxLevel) + { + return await GetItemsAsync(); + } + } } \ No newline at end of file diff --git a/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs b/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs index fc700ee9..9e888072 100644 --- a/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs +++ b/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using AideDeJeu.Models; using AideDeJeuLib; +using AideDeJeuLib.Spells; [assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.Services.SpellDataStore))] namespace AideDeJeu.Services @@ -64,5 +65,14 @@ namespace AideDeJeu.Services //items = spells.Select(spell => new Item() { Text = spell.Title, Description = spell.DescriptionText }).ToList(); return await Task.FromResult(items); } + + public async Task> GetItemsAsync(string classe, int niveauMin, int niveauMax) + { + var scrapper = new Scrappers(); + items = (await scrapper.GetSpells(classe, niveauMin, niveauMax)).ToList(); + + return await Task.FromResult(items); + } + } } \ No newline at end of file diff --git a/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs index 53e76a48..7aaba3dd 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs @@ -8,6 +8,7 @@ using Xamarin.Forms; using AideDeJeu.Models; using AideDeJeu.Services; using AideDeJeuLib; +using AideDeJeuLib.Spells; namespace AideDeJeu.ViewModels { diff --git a/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs index 0f81975c..e8335d1c 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs @@ -1,13 +1,10 @@ -using System; +using AideDeJeu.Tools; +using AideDeJeuLib.Spells; +using System; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; -using AideDeJeu.Models; -using AideDeJeuLib; -using HtmlAgilityPack; using Xamarin.Forms; -using Xamarin.Forms.Internals; -using AideDeJeu.Tools; namespace AideDeJeu.ViewModels { @@ -48,7 +45,8 @@ namespace AideDeJeu.ViewModels { var fd = FormatedTextHelpers.FontData.FromResource("contentital"); var fs = new FormattedString(); - fs.Spans.Add(new Span() { Text = string.Format("{0} de niveau {1}", Item.Type, Item.Level), FontFamily = fd.FontFamily, FontAttributes = fd.FontAttributes, FontSize = fd.FontSize, ForegroundColor = fd.TextColor}); + var capType = Item.Type.First().ToString().ToUpper() + Item.Type.Substring(1); + fs.Spans.Add(new Span() { Text = string.Format("{0} de niveau {1}", capType, Item.Level), FontFamily = fd.FontFamily, FontAttributes = fd.FontAttributes, FontSize = fd.FontSize, ForegroundColor = fd.TextColor}); return fs; } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs index 0f8016bf..1acbcd73 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs @@ -8,12 +8,90 @@ using Xamarin.Forms; using AideDeJeu.Models; using AideDeJeu.Views; using AideDeJeuLib; +using AideDeJeuLib.Spells; +using System.Collections.Generic; namespace AideDeJeu.ViewModels { public class SpellsViewModel : BaseViewModel { public ObservableCollection Items { get; set; } + + public List> Classes { get; set; } = new List>() + { + new KeyValuePair("", "Toutes"), + new KeyValuePair("b", "Barde"), + new KeyValuePair("c", "Clerc"), + new KeyValuePair("d", "Druide"), + new KeyValuePair("s", "Ensorceleur"), + new KeyValuePair("w", "Magicien"), + new KeyValuePair("p", "Paladin"), + new KeyValuePair("r", "Rôdeur"), + new KeyValuePair("k", "Sorcier"), + }; + + public List> Niveaux { get; set; } = new List>() + { + new KeyValuePair(0, "Sorts mineurs"), + new KeyValuePair(1, "Niveau 1"), + new KeyValuePair(2, "Niveau 2"), + new KeyValuePair(3, "Niveau 3"), + new KeyValuePair(4, "Niveau 4"), + new KeyValuePair(5, "Niveau 5"), + new KeyValuePair(6, "Niveau 6"), + new KeyValuePair(7, "Niveau 7"), + new KeyValuePair(8, "Niveau 8"), + new KeyValuePair(9, "Niveau 9"), + }; + + private int _Classe = 0; + public int Classe + { + get + { + return _Classe; + } + set + { + SetProperty(ref _Classe, value); + LoadItemsCommand.Execute(null); + } + } + private int _NiveauMin = 0; + public int NiveauMin + { + get + { + return _NiveauMin; + } + set + { + SetProperty(ref _NiveauMin, value); + if (_NiveauMax < _NiveauMin) + { + SetProperty(ref _NiveauMax, value, nameof(NiveauMax)); + } + LoadItemsCommand.Execute(null); + } + } + private int _NiveauMax = 9; + public int NiveauMax + { + get + { + return _NiveauMax; + } + set + { + SetProperty(ref _NiveauMax, value); + if (_NiveauMax < _NiveauMin) + { + SetProperty(ref _NiveauMin, value, nameof(NiveauMin)); + } + LoadItemsCommand.Execute(null); + } + } + public Command LoadItemsCommand { get; set; } public SpellsViewModel() @@ -39,8 +117,18 @@ namespace AideDeJeu.ViewModels try { + // + // + // + // + // + // + // + // + + string[] classes = new string[] { "", "b", "c", "d", "s", "w", "p", "r", "k" }; Items.Clear(); - var items = await SpellDataStore.GetItemsAsync(true); + var items = await SpellDataStore.GetItemsAsync(classe: classes[Classe], niveauMin: NiveauMin, niveauMax: NiveauMax); foreach (var item in items) { Items.Add(item); diff --git a/AideDeJeu/AideDeJeu/Views/MainPage.xaml b/AideDeJeu/AideDeJeu/Views/MainPage.xaml index 9c8327e1..d345e18a 100644 --- a/AideDeJeu/AideDeJeu/Views/MainPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/MainPage.xaml @@ -27,8 +27,9 @@ -->