1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-31 07:26:09 +00:00

Alignement

This commit is contained in:
Yan Maniez 2019-04-09 23:08:43 +02:00
parent aa3d9d1114
commit 8b33b523f5
2 changed files with 87 additions and 22 deletions

View file

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
@ -16,6 +17,7 @@ namespace AideDeJeu.ViewModels
{
public PlayerCharacterEditorViewModel()
{
ResetAlignments();
Races = new NotifyTaskCompletion<List<RaceItem>>(Task.Run(() => LoadRacesAsync()));
Classes = new NotifyTaskCompletion<List<ClassItem>>(Task.Run(() => LoadClassesAsync()));
@ -42,9 +44,59 @@ namespace AideDeJeu.ViewModels
}
#endregion Selected PC
#region Alignment
private List<string> _AllAllignments = new List<string>()
{
"Loyal Bon",
"Loyal Neutre",
"Loyal Mauvais",
"Neutre Bon",
"Neutre",
"Neutre Mauvais",
"Chaotique Bon",
"Chaotique Neutre",
"Chaotique Mauvais"
};
private List<string> _Alignments = null;
public List<string> Alignments
{
get
{
return _Alignments;
}
set
{
SetProperty(ref _Alignments, value);
}
}
private void ResetAlignments()
{
if (!string.IsNullOrEmpty(SelectedPlayerCharacter.PersonalityIdeal))
{
var regex = new Regex(".*\\((?<alignment>.*?)\\)$");
var match = regex.Match(SelectedPlayerCharacter.PersonalityIdeal);
var alignment = match.Groups["alignment"].Value;
if (!string.IsNullOrEmpty(alignment))
{
Alignments = _AllAllignments.Where(a => a.ToLower().Contains(alignment.ToLower())).ToList();
}
else
{
Alignments = _AllAllignments;
}
}
else
{
Alignments = _AllAllignments;
}
}
#endregion Alignment
#region Race
public NotifyTaskCompletion<List<RaceItem>> Races { get; private set; }
private int _RaceSelectedIndex = 0;
private int _RaceSelectedIndex = -1;
public int RaceSelectedIndex
{
get
@ -73,7 +125,7 @@ namespace AideDeJeu.ViewModels
#region Class
public NotifyTaskCompletion<List<ClassItem>> Classes { get; private set; }
private int _ClassSelectedIndex = 0;
private int _ClassSelectedIndex = -1;
public int ClassSelectedIndex
{
get
@ -99,7 +151,7 @@ namespace AideDeJeu.ViewModels
#region Background
public NotifyTaskCompletion<List<BackgroundItem>> Backgrounds { get; private set; }
private int _BackgroundSelectedIndex = 0;
private int _BackgroundSelectedIndex = -1;
public int BackgroundSelectedIndex
{
get
@ -120,6 +172,7 @@ namespace AideDeJeu.ViewModels
SelectedPlayerCharacter.PersonalityIdeal = null;
SelectedPlayerCharacter.PersonalityLink = null;
SelectedPlayerCharacter.PersonalityDefect = null;
ResetAlignments();
}
}
@ -136,7 +189,7 @@ namespace AideDeJeu.ViewModels
}
}
private int _SubBackgroundSelectedIndex = 0;
private int _SubBackgroundSelectedIndex = -1;
public int SubBackgroundSelectedIndex
{
get
@ -324,7 +377,29 @@ namespace AideDeJeu.ViewModels
{
get
{
return new Command<List<string>>(async (strings) => SelectedPlayerCharacter.PersonalityIdeal = await ExecuteStringPickerCommandAsync(strings));
return new Command<List<string>>(async (strings) =>
{
SelectedPlayerCharacter.PersonalityIdeal = await ExecuteStringPickerCommandAsync(strings);
if (!string.IsNullOrEmpty(SelectedPlayerCharacter.PersonalityIdeal))
{
var regex = new Regex(".*\\((?<alignment>.*?)\\)$");
var match = regex.Match(SelectedPlayerCharacter.PersonalityIdeal);
var alignment = match.Groups["alignment"].Value;
if (!string.IsNullOrEmpty(alignment))
{
Alignments = _AllAllignments.Where(a => a.ToLower().Contains(alignment.ToLower())).ToList();
}
else
{
Alignments = _AllAllignments;
}
}
else
{
Alignments = _AllAllignments;
}
}
);
}
}
public ICommand PersonalityLinkPickerCommand
@ -346,7 +421,6 @@ namespace AideDeJeu.ViewModels
{
var picker = new Views.StringPicker();
var vm = picker.ViewModel;
vm.Title = "Trait de personnalité";
vm.Items = strings;
await Main.Navigator.Navigation.PushModalAsync(picker, true);
var result = await vm.PickValueAsync();

View file

@ -21,16 +21,7 @@
<ContentPage Title="Généralités">
<StackLayout>
<Entry Placeholder="Nom" Text="{Binding Name}" />
<Picker Title="Genre" HorizontalOptions="FillAndExpand">
<Picker.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Autre</x:String>
<x:String>Féminin</x:String>
<x:String>Masculin</x:String>
<x:String>Non précisé</x:String>
</x:Array>
</Picker.ItemsSource>
</Picker>
<Picker Title="Alignement" HorizontalOptions="FillAndExpand" ItemsSource="{Binding Alignments}" ItemDisplayBinding="{Binding StringFormat='Alignement : {0}'}" />
<Picker Title="Niveau" HorizontalOptions="FillAndExpand" ItemsSource="{Binding Levels}" ItemDisplayBinding="{Binding StringFormat='Niveau : {0}'}" />
</StackLayout>
</ContentPage>
@ -59,20 +50,20 @@
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.Background.Description}" />
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.SubBackground.Description}" />
<Button IsVisible="{Binding PersonalityTraits.IsSuccessfullyCompleted}" Text="Trait de personnalité" Command="{Binding PersonalityTraitPickerCommand}" CommandParameter="{Binding PersonalityTraits.Result}" />
<Button Visual="Material" IsVisible="{Binding PersonalityTraits.IsSuccessfullyCompleted}" Text="Trait de personnalité" Command="{Binding PersonalityTraitPickerCommand}" CommandParameter="{Binding PersonalityTraits.Result}" />
<mdview:MarkdownView IsVisible="{Binding PersonalityTraits.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityTrait}" />
<Button IsVisible="{Binding PersonalityIdeals.IsSuccessfullyCompleted}" Text="Idéal" Command="{Binding PersonalityIdealPickerCommand}" CommandParameter="{Binding PersonalityIdeals.Result}" />
<Button Visual="Material" IsVisible="{Binding PersonalityIdeals.IsSuccessfullyCompleted}" Text="Idéal" Command="{Binding PersonalityIdealPickerCommand}" CommandParameter="{Binding PersonalityIdeals.Result}" />
<mdview:MarkdownView IsVisible="{Binding PersonalityIdeals.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityIdeal}" />
<Button IsVisible="{Binding PersonalityLinks.IsSuccessfullyCompleted}" Text="Lien" Command="{Binding PersonalityLinkPickerCommand}" CommandParameter="{Binding PersonalityLinks.Result}" />
<Button Visual="Material" IsVisible="{Binding PersonalityLinks.IsSuccessfullyCompleted}" Text="Lien" Command="{Binding PersonalityLinkPickerCommand}" CommandParameter="{Binding PersonalityLinks.Result}" />
<mdview:MarkdownView IsVisible="{Binding PersonalityLinks.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityLink}" />
<Button IsVisible="{Binding PersonalityDefects.IsSuccessfullyCompleted}" Text="Défaut" Command="{Binding PersonalityDefectPickerCommand}" CommandParameter="{Binding PersonalityDefects.Result}" />
<Button Visual="Material" IsVisible="{Binding PersonalityDefects.IsSuccessfullyCompleted}" Text="Défaut" Command="{Binding PersonalityDefectPickerCommand}" CommandParameter="{Binding PersonalityDefects.Result}" />
<mdview:MarkdownView IsVisible="{Binding PersonalityDefects.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityDefect}" />
<!--<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.Background.Markdown}" />
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.SubBackground.Markdown}" />-->
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.Background.Markdown}" />
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.SubBackground.Markdown}" />
</StackLayout>
</ScrollView>
</StackLayout>