diff --git a/AideDeJeu/AideDeJeu/Tools/Comparers.cs b/AideDeJeu/AideDeJeu/Tools/Comparers.cs index 6141d6c1..3552e982 100644 --- a/AideDeJeu/AideDeJeu/Tools/Comparers.cs +++ b/AideDeJeu/AideDeJeu/Tools/Comparers.cs @@ -19,6 +19,9 @@ namespace AideDeJeu.Tools { public override int Compare(string x, string y) { + if (string.IsNullOrEmpty(x) && string.IsNullOrEmpty(y)) return 0; + if (string.IsNullOrEmpty(x)) return 1; + if (string.IsNullOrEmpty(y)) return -1; var regex = new Regex(@"\((?\d*?) (PX|XP)\)"); int xpx = int.Parse(regex.Match(x).Groups["xp"].Value); int xpy = int.Parse(regex.Match(y).Groups["xp"].Value); diff --git a/AideDeJeu/AideDeJeu/Tools/Converters.cs b/AideDeJeu/AideDeJeu/Tools/Converters.cs index 7c0527fb..c46adc24 100644 --- a/AideDeJeu/AideDeJeu/Tools/Converters.cs +++ b/AideDeJeu/AideDeJeu/Tools/Converters.cs @@ -90,58 +90,6 @@ namespace AideDeJeu.Tools } } - public class ItemsTypeTemplateConverter : IValueConverter - { - public ControlTemplate SpellsTemplate { get; set; } - public ControlTemplate MonstersTemplate { get; set; } - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - var itemType = value as ItemType?; - if (itemType == ItemType.Spell) - { - return SpellsTemplate; - } - if (itemType == ItemType.Monster) - { - return MonstersTemplate; - } - return null; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - return null; - } - } - - public class ItemTypeConverter : IValueConverter - { - public T Spells { get; set; } - public T Monsters { get; set; } - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - var itemType = value as ItemType?; - if (itemType == ItemType.Spell) - { - return Spells; - } - if (itemType == ItemType.Monster) - { - return Monsters; - } - return null; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - return null; - } - } - - public class ItemTypeToStringConverter : ItemTypeConverter { } - public class ItemSourceTypeConverter : IValueConverter { @@ -154,31 +102,31 @@ namespace AideDeJeu.Tools public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - //var itemType = value as ItemSourceType?; - //if (itemType == ItemSourceType.SpellVF) - //{ - // return SpellVF; - //} - //if (itemType == ItemSourceType.SpellVO) - //{ - // return SpellVO; - //} - //if (itemType == ItemSourceType.SpellHD) - //{ - // return SpellHD; - //} - //if (itemType == ItemSourceType.MonsterVF) - //{ - // return MonsterVF; - //} - //if (itemType == ItemSourceType.MonsterVO) - //{ - // return MonsterVO; - //} - //if (itemType == ItemSourceType.MonsterHD) - //{ - // return MonsterHD; - //} + var itemType = value as ItemSourceType?; + if (itemType == ItemSourceType.SpellVF) + { + return SpellVF; + } + if (itemType == ItemSourceType.SpellVO) + { + return SpellVO; + } + if (itemType == ItemSourceType.SpellHD) + { + return SpellHD; + } + if (itemType == ItemSourceType.MonsterVF) + { + return MonsterVF; + } + if (itemType == ItemSourceType.MonsterVO) + { + return MonsterVO; + } + if (itemType == ItemSourceType.MonsterHD) + { + return MonsterHD; + } return null; } @@ -188,6 +136,8 @@ namespace AideDeJeu.Tools } } + public class ItemSourceTypeToStringConverter : ItemSourceTypeConverter { } + public class ItemSourceTypeToItemsConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) diff --git a/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs index ff5bcd0a..6ce98f7d 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs @@ -4,6 +4,7 @@ using AideDeJeuLib.Monsters; using AideDeJeuLib.Spells; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Windows.Input; @@ -52,7 +53,7 @@ namespace AideDeJeu.ViewModels public FilterKeys Key { get; set; } public string Name { get; set; } public List> KeyValues { get; set; } - private int _Index; + public int _Index; public int Index { get @@ -73,7 +74,11 @@ namespace AideDeJeu.ViewModels { get { - return KeyValues[Index].Key; + if(Index >= 0 && Index < KeyValues.Count) + { + return KeyValues[Index].Key; + } + return null; } } } @@ -90,12 +95,12 @@ namespace AideDeJeu.ViewModels { _Filters = new List() { - new Filter() { Key = FilterKeys.Class, Name = "Classe", KeyValues = Classes, Index = 0 }, - new Filter() { Key = FilterKeys.MinLevel, Name = "Niveau Min", KeyValues = Niveaux, Index = 0 }, - new Filter() { Key = FilterKeys.MaxLevel, Name = "Niveau Max", KeyValues = Niveaux, Index = 9 }, - new Filter() { Key = FilterKeys.School, Name = "Ecole", KeyValues = Ecoles, Index = 0 }, - new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, Index = 0 }, - new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, Index = 0 }, + new Filter() { Key = FilterKeys.Class, Name = "Classe", KeyValues = Classes, _Index = 0 }, + new Filter() { Key = FilterKeys.MinLevel, Name = "Niveau Minimum", KeyValues = Niveaux, _Index = 0 }, + new Filter() { Key = FilterKeys.MaxLevel, Name = "Niveau Maximum", KeyValues = Niveaux, _Index = 9 }, + new Filter() { Key = FilterKeys.School, Name = "École", KeyValues = Ecoles, _Index = 0 }, + new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, _Index = 0 }, + new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 }, }; } return _Filters; @@ -105,12 +110,12 @@ namespace AideDeJeu.ViewModels public override IEnumerable FilterItems(IEnumerable items) { - var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey; - var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey; - var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey; - var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey; - var rituel = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey; - var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey; + var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? ""; + var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0"; + var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9"; + var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? ""; + var rituel = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? ""; + var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; return items .Where(item => @@ -322,13 +327,13 @@ namespace AideDeJeu.ViewModels { _Filters = new List() { - new Filter() { Key = FilterKeys.Category, Name = "Catégories", KeyValues = Categories, Index = 0 }, - new Filter() { Key = FilterKeys.Type, Name = "Type", KeyValues = Types, Index = 0 }, - new Filter() { Key = FilterKeys.MinPower, Name = "Challenge Min", KeyValues = Powers, Index = 0 }, - new Filter() { Key = FilterKeys.MaxPower, Name = "Challenge Max", KeyValues = Powers, Index = 28 }, - new Filter() { Key = FilterKeys.Size, Name = "Taille", KeyValues = Sizes, Index = 0 }, - new Filter() { Key = FilterKeys.Legendary, Name = "Légendaire", KeyValues = Legendaries, Index = 0 }, - new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, Index = 0 }, + //new Filter() { Key = FilterKeys.Category, Name = "Catégories", KeyValues = Categories, _Index = 0 }, + new Filter() { Key = FilterKeys.Type, Name = "Type", KeyValues = Types, _Index = 0 }, + new Filter() { Key = FilterKeys.MinPower, Name = "FP Minimum", KeyValues = Powers, _Index = 0 }, + new Filter() { Key = FilterKeys.MaxPower, Name = "FP Maximum", KeyValues = Powers, _Index = 28 }, + new Filter() { Key = FilterKeys.Size, Name = "Taille", KeyValues = Sizes, _Index = 0 }, + //new Filter() { Key = FilterKeys.Legendary, Name = "Légendaire", KeyValues = Legendaries, _Index = 0 }, + new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 }, }; } return _Filters; @@ -339,13 +344,13 @@ namespace AideDeJeu.ViewModels { var powerComparer = new PowerComparer(); - var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey; - var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey; - var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey; - var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey; - var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey; - var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey; - var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey; + //var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey ?? ""; + var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; + var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)"; + var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)"; + var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? ""; + //var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey ?? ""; + var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; return items.Where(item => { diff --git a/AideDeJeu/AideDeJeu/ViewModels/MainViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/MainViewModel.cs index 849efd61..220786a4 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/MainViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/MainViewModel.cs @@ -46,9 +46,7 @@ namespace AideDeJeu.ViewModels } set { - //CurrentViewModel.SearchText = ""; SetProperty(ref _ItemSourceType, value); - //CurrentViewModel.SearchText = ""; LoadItemsCommand.Execute(null); OnPropertyChanged(nameof(Items)); } @@ -115,10 +113,9 @@ namespace AideDeJeu.ViewModels public Command SearchCommand { get; private set; } public Navigator Navigator { get; set; } + public MainViewModel() { - //Spells = new SpellsViewModel(navigator, Items); - //Monsters = new MonstersViewModel(navigator, Items); LoadItemsCommand = new Command(() => { GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommand(); @@ -129,7 +126,7 @@ namespace AideDeJeu.ViewModels SwitchToVF = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VO & ~ItemSourceType.HD) | ItemSourceType.VF); SwitchToVO = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VF & ~ItemSourceType.HD) | ItemSourceType.VO); SwitchToHD = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VF & ~ItemSourceType.VO) | ItemSourceType.HD); - //AboutCommand = new Command(async() => await navigator.GotoAboutPageAsync()); + AboutCommand = new Command(async() => await Main.Navigator.GotoAboutPageAsync()); SearchCommand = new Command((text) => { GetFilterViewModel(ItemSourceType).SearchText = text; diff --git a/AideDeJeu/AideDeJeu/Views/MainPage.xaml b/AideDeJeu/AideDeJeu/Views/MainPage.xaml index 7fce2726..0cb01c7c 100644 --- a/AideDeJeu/AideDeJeu/Views/MainPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/MainPage.xaml @@ -6,68 +6,18 @@ x:Class="AideDeJeu.Views.MainPage" x:Name="This" IsPresented="False" - Title="{Binding ItemsType,Converter={StaticResource ItemTypeToStringConverter}}"> + Title="{Binding ItemSourceType,Converter={StaticResource ItemSourceTypeToTitleConverter}}"> - - - - - - - - - - - - - - - - +