mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 06:56:10 +00:00
Refactor view models
This commit is contained in:
parent
bb89a212b6
commit
cc0f0ef161
5 changed files with 151 additions and 151 deletions
|
|
@ -0,0 +1,20 @@
|
|||
using AideDeJeuLib;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AideDeJeu.ViewModels.PlayerCharacter
|
||||
{
|
||||
public class ClassViewModel : BaseViewModel
|
||||
{
|
||||
public ClassItem Class { get; set; }
|
||||
public SubClassItem SubClass { get; set; }
|
||||
public ClassHitPointsItem HitPoints { get; set; }
|
||||
public ClassProficienciesItem Proficiencies { get; set; }
|
||||
public ClassEquipmentItem Equipment { get; set; }
|
||||
public ClassEvolutionItem Evolution { get; set; }
|
||||
public List<ClassFeatureItem> Features { get; set; }
|
||||
|
||||
public string Name { get { return Class?.Name; } }
|
||||
public string Description { get { return Class?.Description; } }
|
||||
public string Markdown { get { return Class?.Markdown; } }
|
||||
}
|
||||
}
|
||||
|
|
@ -150,95 +150,21 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
|
|||
|
||||
#region Race
|
||||
public NotifyTaskCompletion<List<RaceViewModel>> Races { get; private set; }
|
||||
private int _RaceSelectedIndex = -1;
|
||||
public int RaceSelectedIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return _RaceSelectedIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _RaceSelectedIndex, value);
|
||||
if (Races.Result.Count > _RaceSelectedIndex && _RaceSelectedIndex >= 0)
|
||||
{
|
||||
SelectedRace = Races.Result[_RaceSelectedIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
private RaceViewModel _SelectedRace = null;
|
||||
public RaceViewModel SelectedRace
|
||||
{
|
||||
get
|
||||
{
|
||||
return _SelectedRace;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _SelectedRace, value);
|
||||
//SelectedPlayerCharacter.Race = _SelectedRace;
|
||||
}
|
||||
}
|
||||
|
||||
public class RaceViewModel : BaseViewModel
|
||||
{
|
||||
public RaceItem Race { get; set; }
|
||||
public SubRaceItem SubRace { get; set; }
|
||||
//private RaceViewModel _SelectedRace = null;
|
||||
//public RaceViewModel SelectedRace
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return _SelectedRace;
|
||||
// }
|
||||
// set
|
||||
// {
|
||||
// SetProperty(ref _SelectedRace, value);
|
||||
// //SelectedPlayerCharacter.Race = _SelectedRace;
|
||||
// }
|
||||
//}
|
||||
|
||||
private RaceItem RaceOrSubRace { get { return SubRace ?? Race; } }
|
||||
public string Name { get { return RaceOrSubRace.Name; } }
|
||||
public string Description { get { return RaceOrSubRace.Description; } }
|
||||
public string NewId { get { return RaceOrSubRace.NewId; } }
|
||||
public string Id { get { return RaceOrSubRace.Id; } }
|
||||
public string RootId { get { return RaceOrSubRace.RootId; } }
|
||||
|
||||
public string AbilityScoreIncrease
|
||||
{
|
||||
get
|
||||
{
|
||||
if(SubRace?.AbilityScoreIncrease != null)
|
||||
{
|
||||
return Race.AbilityScoreIncrease + "\n\n" + SubRace.AbilityScoreIncrease;
|
||||
}
|
||||
return Race.AbilityScoreIncrease;
|
||||
}
|
||||
}
|
||||
public OrderedDictionary Attributes
|
||||
{
|
||||
get
|
||||
{
|
||||
if(SubRace == null)
|
||||
{
|
||||
return Race.Attributes;
|
||||
}
|
||||
var dico = new OrderedDictionary();
|
||||
foreach(DictionaryEntry attr in Race.Attributes)
|
||||
{
|
||||
dico[attr.Key] = attr.Value;
|
||||
}
|
||||
foreach (DictionaryEntry attr in SubRace.Attributes)
|
||||
{
|
||||
dico[attr.Key] = attr.Value;
|
||||
}
|
||||
return dico;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual OrderedDictionary AttributesKeyValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return AideDeJeuLib.ItemAttribute.ExtractKeyValues(Attributes);
|
||||
}
|
||||
}
|
||||
|
||||
public string Age { get { return Race.Age; } }
|
||||
public string Alignment { get { return Race.Alignment; } }
|
||||
public string Size { get { return Race.Size; } }
|
||||
public string Speed { get { return Race.Speed; } }
|
||||
public string Darkvision { get { return Race.Darkvision; } }
|
||||
public string Languages { get { return Race.Languages; } }
|
||||
}
|
||||
public async Task<List<RaceViewModel>> LoadRacesAsync()
|
||||
{
|
||||
using (var context = await StoreViewModel.GetLibraryContextAsync())
|
||||
|
|
@ -269,47 +195,32 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
|
|||
#region Class
|
||||
public NotifyTaskCompletion<List<ClassViewModel>> Classes { get; private set; }
|
||||
|
||||
private int _ClassSelectedIndex = -1;
|
||||
public int ClassSelectedIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ClassSelectedIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _ClassSelectedIndex, value);
|
||||
SelectedClass = Classes.Result[_ClassSelectedIndex];
|
||||
}
|
||||
}
|
||||
private ClassViewModel _SelectedClass = null;
|
||||
public ClassViewModel SelectedClass
|
||||
{
|
||||
get
|
||||
{
|
||||
return _SelectedClass;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _SelectedClass, value);
|
||||
//SelectedPlayerCharacter.Class = _SelectedClass;
|
||||
}
|
||||
}
|
||||
|
||||
public class ClassViewModel : BaseViewModel
|
||||
{
|
||||
public ClassItem Class { get; set; }
|
||||
public SubClassItem SubClass { get; set; }
|
||||
public ClassHitPointsItem HitPoints { get; set; }
|
||||
public ClassProficienciesItem Proficiencies { get; set; }
|
||||
public ClassEquipmentItem Equipment { get; set; }
|
||||
public ClassEvolutionItem Evolution { get; set; }
|
||||
public List<ClassFeatureItem> Features { get; set; }
|
||||
|
||||
public string Name { get { return Class?.Name; } }
|
||||
public string Description { get { return Class?.Description; } }
|
||||
public string Markdown { get { return Class?.Markdown; } }
|
||||
}
|
||||
//private int _ClassSelectedIndex = -1;
|
||||
//public int ClassSelectedIndex
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return _ClassSelectedIndex;
|
||||
// }
|
||||
// set
|
||||
// {
|
||||
// SetProperty(ref _ClassSelectedIndex, value);
|
||||
// SelectedClass = Classes.Result[_ClassSelectedIndex];
|
||||
// }
|
||||
//}
|
||||
//private ClassViewModel _SelectedClass = null;
|
||||
//public ClassViewModel SelectedClass
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return _SelectedClass;
|
||||
// }
|
||||
// set
|
||||
// {
|
||||
// SetProperty(ref _SelectedClass, value);
|
||||
// //SelectedPlayerCharacter.Class = _SelectedClass;
|
||||
// }
|
||||
//}
|
||||
|
||||
public async Task<List<ClassViewModel>> LoadClassesAsync()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
|
|||
SetProperty(ref _Alignment, value);
|
||||
}
|
||||
}
|
||||
private RaceItem _Race = null;
|
||||
public RaceItem Race
|
||||
private RaceViewModel _Race = null;
|
||||
public RaceViewModel Race
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
@ -31,8 +31,8 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
|
|||
SetProperty(ref _Race, value);
|
||||
}
|
||||
}
|
||||
private ClassItem _Class = null;
|
||||
public ClassItem Class
|
||||
private ClassViewModel _Class = null;
|
||||
public ClassViewModel Class
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,69 @@
|
|||
using AideDeJeuLib;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Text;
|
||||
|
||||
namespace AideDeJeu.ViewModels.PlayerCharacter
|
||||
{
|
||||
public class RaceViewModel : BaseViewModel
|
||||
{
|
||||
public RaceItem Race { get; set; }
|
||||
public SubRaceItem SubRace { get; set; }
|
||||
|
||||
private RaceItem RaceOrSubRace { get { return SubRace ?? Race; } }
|
||||
public string Name { get { return RaceOrSubRace.Name; } }
|
||||
public string Description { get { return RaceOrSubRace.Description; } }
|
||||
public string NewId { get { return RaceOrSubRace.NewId; } }
|
||||
public string Id { get { return RaceOrSubRace.Id; } }
|
||||
public string RootId { get { return RaceOrSubRace.RootId; } }
|
||||
|
||||
public string AbilityScoreIncrease
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SubRace?.AbilityScoreIncrease != null)
|
||||
{
|
||||
return Race.AbilityScoreIncrease + "\n\n" + SubRace.AbilityScoreIncrease;
|
||||
}
|
||||
return Race.AbilityScoreIncrease;
|
||||
}
|
||||
}
|
||||
public OrderedDictionary Attributes
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SubRace == null)
|
||||
{
|
||||
return Race.Attributes;
|
||||
}
|
||||
var dico = new OrderedDictionary();
|
||||
foreach (DictionaryEntry attr in Race.Attributes)
|
||||
{
|
||||
dico[attr.Key] = attr.Value;
|
||||
}
|
||||
foreach (DictionaryEntry attr in SubRace.Attributes)
|
||||
{
|
||||
dico[attr.Key] = attr.Value;
|
||||
}
|
||||
return dico;
|
||||
}
|
||||
}
|
||||
public virtual OrderedDictionary AttributesKeyValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return AideDeJeuLib.ItemAttribute.ExtractKeyValues(Attributes);
|
||||
}
|
||||
}
|
||||
|
||||
public string Age { get { return Race.Age; } }
|
||||
public string Alignment { get { return Race.Alignment; } }
|
||||
public string Size { get { return Race.Size; } }
|
||||
public string Speed { get { return Race.Speed; } }
|
||||
public string Darkvision { get { return Race.Darkvision; } }
|
||||
public string Languages { get { return Race.Languages; } }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -22,31 +22,31 @@
|
|||
<ContentPage Title="Race">
|
||||
<ScrollView Orientation="Vertical">
|
||||
<StackLayout>
|
||||
<views:ItemPickerView BindingContext="{Binding}" Title="Race" ItemsSource="{Binding Races.Result}" SelectedItem="{Binding SelectedRace, Mode=TwoWay}" IsEnabled="{Binding Races.IsSuccessfullyCompleted}" />
|
||||
<views:ItemPickerView BindingContext="{Binding}" Title="Race" ItemsSource="{Binding Races.Result}" SelectedItem="{Binding SelectedPlayerCharacter.Race, Mode=TwoWay}" IsEnabled="{Binding Races.IsSuccessfullyCompleted}" />
|
||||
<!--<Picker Title="Race" HorizontalOptions="FillAndExpand" IsEnabled="{Binding Races.IsSuccessfullyCompleted}" ItemsSource="{Binding Races.Result}" ItemDisplayBinding="{Binding Name}" SelectedIndex="{Binding RaceSelectedIndex, Mode=TwoWay}" />-->
|
||||
|
||||
<Frame BorderColor="Black" Padding="2" Margin="10" IsVisible="{Binding SelectedRace, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" >
|
||||
<Frame BorderColor="Black" Padding="2" Margin="10" IsVisible="{Binding SelectedPlayerCharacter.Race, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" >
|
||||
<StackLayout Padding="0">
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Augmentation de caractéristiques" IsVisible="{Binding SelectedRace.AbilityScoreIncrease, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.AbilityScoreIncrease}" IsVisible="{Binding SelectedRace.AbilityScoreIncrease, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Augmentation de caractéristiques" IsVisible="{Binding SelectedPlayerCharacter.Race.AbilityScoreIncrease, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.AbilityScoreIncrease}" IsVisible="{Binding SelectedPlayerCharacter.Race.AbilityScoreIncrease, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Âge" IsVisible="{Binding SelectedRace.Age, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Age}" IsVisible="{Binding SelectedRace.Age, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Âge" IsVisible="{Binding SelectedPlayerCharacter.Race.Age, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.Age}" IsVisible="{Binding SelectedPlayerCharacter.Race.Age, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Alignement" IsVisible="{Binding SelectedRace.Alignment, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Alignment}" IsVisible="{Binding SelectedRace.Alignment, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Alignement" IsVisible="{Binding SelectedPlayerCharacter.Race.Alignment, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.Alignment}" IsVisible="{Binding SelectedPlayerCharacter.Race.Alignment, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Taille" IsVisible="{Binding SelectedRace.Size, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Size}" IsVisible="{Binding SelectedRace.Size, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Taille" IsVisible="{Binding SelectedPlayerCharacter.Race.Size, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.Size}" IsVisible="{Binding SelectedPlayerCharacter.Race.Size, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Vitesse" IsVisible="{Binding SelectedRace.Speed, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Speed}" IsVisible="{Binding SelectedRace.Speed, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Vitesse" IsVisible="{Binding SelectedPlayerCharacter.Race.Speed, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.Speed}" IsVisible="{Binding SelectedPlayerCharacter.Race.Speed, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Vision dans le noir" IsVisible="{Binding SelectedRace.Darkvision, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Darkvision}" IsVisible="{Binding SelectedRace.Darkvision, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Vision dans le noir" IsVisible="{Binding SelectedPlayerCharacter.Race.Darkvision, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.Darkvision}" IsVisible="{Binding SelectedPlayerCharacter.Race.Darkvision, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<StackLayout BindableLayout.ItemsSource="{Binding SelectedRace.AttributesKeyValue}">
|
||||
<StackLayout BindableLayout.ItemsSource="{Binding SelectedPlayerCharacter.Race.AttributesKeyValue}">
|
||||
<BindableLayout.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackLayout>
|
||||
|
|
@ -57,8 +57,8 @@
|
|||
</BindableLayout.ItemTemplate>
|
||||
</StackLayout>
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Langues" IsVisible="{Binding SelectedRace.Languages, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Languages}" IsVisible="{Binding SelectedRace.Languages, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Langues" IsVisible="{Binding SelectedPlayerCharacter.Race.Languages, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Race.Languages}" IsVisible="{Binding SelectedPlayerCharacter.Race.Languages, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
</StackLayout>
|
||||
</Frame>
|
||||
|
|
@ -69,9 +69,9 @@
|
|||
<ContentPage Title="Classe">
|
||||
<ScrollView Orientation="Vertical">
|
||||
<StackLayout>
|
||||
<views:ItemPickerView BindingContext="{Binding}" Title="Classe" ItemsSource="{Binding Classes.Result}" SelectedItem="{Binding SelectedClass, Mode=TwoWay}" />
|
||||
<views:ItemPickerView BindingContext="{Binding}" Title="Classe" ItemsSource="{Binding Classes.Result}" SelectedItem="{Binding SelectedPlayerCharacter.Class, Mode=TwoWay}" />
|
||||
<!--<Picker Title="Classe" HorizontalOptions="FillAndExpand" IsEnabled="{Binding Classes.IsSuccessfullyCompleted}" ItemsSource="{Binding Classes.Result}" ItemDisplayBinding="{Binding Name}" SelectedIndex="{Binding ClassSelectedIndex, Mode=TwoWay}" />-->
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedClass.Markdown}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Class.Markdown}" />
|
||||
</StackLayout>
|
||||
</ScrollView>
|
||||
</ContentPage>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue