1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-31 07:26:09 +00:00
This commit is contained in:
Yan Maniez 2018-05-28 20:24:09 +02:00
parent cd365b69b5
commit a6a1c53e9b
4 changed files with 83 additions and 162 deletions

View file

@ -1,5 +1,10 @@
using AideDeJeuLib; using AideDeJeuLib;
using AideDeJeuLib.Monsters;
using AideDeJeuLib.Spells;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using Xamarin.Forms; using Xamarin.Forms;
@ -8,39 +13,87 @@ namespace AideDeJeu.ViewModels
{ {
public abstract class ItemsViewModel : BaseViewModel public abstract class ItemsViewModel : BaseViewModel
{ {
public ItemsViewModel() public ItemsViewModel(ItemSourceType itemSourceType)
{ {
this.ItemSourceType = itemSourceType;
LoadItemsCommand = new Command(() => ExecuteLoadItemsCommand()); LoadItemsCommand = new Command(() => ExecuteLoadItemsCommand());
} }
public ICommand LoadItemsCommand { get; protected set; } public ICommand LoadItemsCommand { get; protected set; }
public abstract void ExecuteLoadItemsCommand(); //public abstract void ExecuteLoadItemsCommand();
public abstract Task ExecuteGotoItemCommandAsync(Item item); public abstract Task ExecuteGotoItemCommandAsync(Item item);
protected ItemSourceType ItemSourceType;
//private string _SearchText = "";
//public string SearchText
//{
// get
// {
// return _SearchText;
// }
// set
// {
// SetProperty(ref _SearchText, value);
// FilterItems();
// }
//}
//public void FilterItems() private IEnumerable<Item> _AllItems = null;
//{ public IEnumerable<Item> AllItems
// Items.Clear(); {
// foreach (var item in AllItems) get
// { {
// if (item.NamePHB.ToLower().Contains(SearchText.ToLower())) if (_AllItems == null)
// { {
// Items.Add(item); string resourceName = null;
// } switch (ItemSourceType)
// } {
//} case ItemSourceType.MonsterVF:
resourceName = "AideDeJeu.Data.monsters_vf.json";
break;
case ItemSourceType.MonsterVO:
resourceName = "AideDeJeu.Data.monsters_vo.json";
break;
case ItemSourceType.MonsterHD:
resourceName = "AideDeJeu.Data.monsters_hd.json";
break;
case ItemSourceType.SpellVF:
resourceName = "AideDeJeu.Data.spells_vf.json";
break;
case ItemSourceType.SpellVO:
resourceName = "AideDeJeu.Data.spells_vo.json";
break;
case ItemSourceType.SpellHD:
resourceName = "AideDeJeu.Data.spells_hd.json";
break;
}
if (ItemSourceType.HasFlag(ItemSourceType.Spell))
{
_AllItems = Tools.Helpers.GetResourceObject<IEnumerable<Spell>>(resourceName);
}
else if (ItemSourceType.HasFlag(ItemSourceType.Monster))
{
_AllItems = Tools.Helpers.GetResourceObject<IEnumerable<Monster>>(resourceName);
}
}
return _AllItems;
}
}
public void ExecuteLoadItemsCommand()
{
if (IsBusy)
return;
IsBusy = true;
try
{
Main.Items.Clear();
var filterViewModel = Main.GetFilterViewModel(ItemSourceType);
var items = filterViewModel.FilterItems(AllItems);
foreach (var item in items)
{
Main.Items.Add(item);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
IsBusy = false;
}
}
} }

View file

@ -15,73 +15,13 @@ namespace AideDeJeu.ViewModels
{ {
public class MonstersViewModel : ItemsViewModel public class MonstersViewModel : ItemsViewModel
{ {
ItemSourceType ItemSourceType; public MonstersViewModel(ItemSourceType itemSourceType) : base(itemSourceType)
public MonstersViewModel(ItemSourceType itemSourceType)
{ {
this.ItemSourceType = itemSourceType;
}
private IEnumerable<Monster> _AllMonsters = null;
private IEnumerable<Monster> AllMonsters
{
get
{
if (_AllMonsters == null)
{
string resourceName = null;
switch (ItemSourceType)
{
case ItemSourceType.MonsterVF:
resourceName = "AideDeJeu.Data.monsters_vf.json";
break;
case ItemSourceType.MonsterVO:
resourceName = "AideDeJeu.Data.monsters_vo.json";
break;
case ItemSourceType.MonsterHD:
resourceName = "AideDeJeu.Data.monsters_hd.json";
break;
}
_AllMonsters = Tools.Helpers.GetResourceObject<IEnumerable<Monster>>(resourceName);
}
return _AllMonsters;
}
}
public override void ExecuteLoadItemsCommand()
{
if (IsBusy)
return;
IsBusy = true;
try
{
Main.Items.Clear();
var filterViewModel = Main.GetFilterViewModel(ItemSourceType);
var items = filterViewModel.FilterItems(AllMonsters);
foreach (var item in items)
{
Main.Items.Add(item);
}
//FilterItems();
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
IsBusy = false;
}
} }
public override async Task ExecuteGotoItemCommandAsync(Item item) public override async Task ExecuteGotoItemCommandAsync(Item item)
{ {
await Main.Navigator.GotoMonsterDetailPageAsync(item as Monster); await Main.Navigator.GotoMonsterDetailPageAsync(item as Monster);
} }
} }
} }

View file

@ -14,80 +14,8 @@ namespace AideDeJeu.ViewModels
{ {
public class SpellsViewModel : ItemsViewModel public class SpellsViewModel : ItemsViewModel
{ {
ItemSourceType ItemSourceType; public SpellsViewModel(ItemSourceType itemSourceType) : base(itemSourceType)
public SpellsViewModel(ItemSourceType itemSourceType)
{ {
this.ItemSourceType = itemSourceType;
}
private IEnumerable<Spell> _AllSpells = null;
private IEnumerable<Spell> AllSpells
{
get
{
if(_AllSpells == null)
{
string resourceName = null;
switch(ItemSourceType)
{
case ItemSourceType.SpellVF:
resourceName = "AideDeJeu.Data.spells_vf.json";
break;
case ItemSourceType.SpellVO:
resourceName = "AideDeJeu.Data.spells_vo.json";
break;
case ItemSourceType.SpellHD:
resourceName = "AideDeJeu.Data.spells_hd.json";
break;
}
_AllSpells = Tools.Helpers.GetResourceObject<IEnumerable<Spell>>(resourceName);
}
return _AllSpells;
}
}
public IEnumerable<Spell> GetSpells(string classe, string niveauMin, string niveauMax, string ecole, string rituel, string source)
{
return AllSpells
.Where(spell =>
(int.Parse(spell.Level) >= int.Parse(niveauMin)) &&
(int.Parse(spell.Level) <= int.Parse(niveauMax)) &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
spell.Source.Contains(source) &&
spell.Source.Contains(classe) &&
spell.Type.Contains(rituel)
)
.OrderBy(spell => spell.NamePHB)
.ToList();
}
public override void ExecuteLoadItemsCommand()
{
if (IsBusy)
return;
IsBusy = true;
try
{
Main.Items.Clear();
var filterViewModel = Main.GetFilterViewModel(ItemSourceType);
var items = filterViewModel.FilterItems(AllSpells);
foreach (var item in items)
{
Main.Items.Add(item);
}
//FilterItems();
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
IsBusy = false;
}
} }
public override async Task ExecuteGotoItemCommandAsync(Item item) public override async Task ExecuteGotoItemCommandAsync(Item item)

View file

@ -6,7 +6,7 @@
x:Class="AideDeJeu.Views.MainPage" x:Class="AideDeJeu.Views.MainPage"
x:Name="This" x:Name="This"
IsPresented="False" IsPresented="False"
Title="{Binding ItemSourceType,Converter={StaticResource ItemSourceTypeToTitleConverter}}"> Title="">
<MasterDetailPage.Resources> <MasterDetailPage.Resources>
<ResourceDictionary> <ResourceDictionary>
<tools:ItemSourceTypeToStringConverter <tools:ItemSourceTypeToStringConverter
@ -45,7 +45,7 @@
<MasterDetailPage.Detail> <MasterDetailPage.Detail>
<NavigationPage> <NavigationPage>
<x:Arguments> <x:Arguments>
<ContentPage Title=""> <ContentPage Title="{Binding ItemSourceType,Converter={StaticResource ItemSourceTypeToTitleConverter}}">
<ContentPage.ToolbarItems> <ContentPage.ToolbarItems>
<ToolbarItem Name="Spells" Text="Sorts" Order="Primary" Icon="spell_book.png" Command="{Binding SwitchToSpells}" /> <ToolbarItem Name="Spells" Text="Sorts" Order="Primary" Icon="spell_book.png" Command="{Binding SwitchToSpells}" />
<ToolbarItem Name="Monsters" Text="Monstres" Order="Primary" Icon="dragon_head.png" Command="{Binding SwitchToMonsters}" /> <ToolbarItem Name="Monsters" Text="Monstres" Order="Primary" Icon="dragon_head.png" Command="{Binding SwitchToMonsters}" />