1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-12-21 01:23:39 +00:00

Personalities

This commit is contained in:
Yan Maniez 2019-04-09 21:52:35 +02:00
parent 62b17e8659
commit b5381891c7
1831 changed files with 8974 additions and 8799 deletions

View file

@ -1,7 +1,6 @@
namespace AideDeJeuLib
{
public class PersonalityDefectItem : Item, TableProperty
public class PersonalityDefectItem : PersonalityItem
{
public string Table { get; set; }
}
}

View file

@ -1,7 +1,6 @@
namespace AideDeJeuLib
{
public class PersonalityIdealItem : Item, TableProperty
public class PersonalityIdealItem : PersonalityItem
{
public string Table { get; set; }
}
}

View file

@ -0,0 +1,7 @@
namespace AideDeJeuLib
{
public class PersonalityItem : Item, TableProperty
{
public string Table { get; set; }
}
}

View file

@ -1,7 +1,6 @@
namespace AideDeJeuLib
{
public class PersonalityLinkItem : Item, TableProperty
public class PersonalityLinkItem : PersonalityItem
{
public string Table { get; set; }
}
}

View file

@ -1,7 +1,6 @@
namespace AideDeJeuLib
{
public class PersonalityTraitItem : Item, TableProperty
public class PersonalityTraitItem : PersonalityItem
{
public string Table { get; set; }
}
}

View file

@ -7,6 +7,19 @@ namespace AideDeJeu.ViewModels
{
public class PickerViewModel<T> : BaseViewModel where T:class
{
private string _Title = null;
public string Title
{
get
{
return _Title;
}
set
{
SetProperty(ref _Title, value);
}
}
private List<T> _Items = null;
public List<T> Items
{

View file

@ -22,6 +22,9 @@ namespace AideDeJeu.ViewModels
Backgrounds = new NotifyTaskCompletion<List<BackgroundItem>>(Task.Run(() => LoadBackgroundsAsync()));
SubBackgrounds = new NotifyTaskCompletion<List<SubBackgroundItem>>(null);
PersonalityTraits = new NotifyTaskCompletion<List<string>>(null);
PersonalityIdeals = new NotifyTaskCompletion<List<string>>(null);
PersonalityLinks = new NotifyTaskCompletion<List<string>>(null);
PersonalityDefects = new NotifyTaskCompletion<List<string>>(null);
}
#region Selected PC
@ -109,7 +112,14 @@ namespace AideDeJeu.ViewModels
SelectedPlayerCharacter.Background = Backgrounds.Result[_BackgroundSelectedIndex];
SubBackgrounds = new NotifyTaskCompletion<List<SubBackgroundItem>>(Task.Run(() => LoadSubBackgroundsAsync(SelectedPlayerCharacter.Background)));
PersonalityTraits = new NotifyTaskCompletion<List<string>>(Task.Run(() => LoadPersonalityTraitsAsync(SelectedPlayerCharacter.Background)));
PersonalityIdeals = new NotifyTaskCompletion<List<string>>(Task.Run(() => LoadPersonalityIdealsAsync(SelectedPlayerCharacter.Background)));
PersonalityLinks = new NotifyTaskCompletion<List<string>>(Task.Run(() => LoadPersonalityLinksAsync(SelectedPlayerCharacter.Background)));
PersonalityDefects = new NotifyTaskCompletion<List<string>>(Task.Run(() => LoadPersonalityDefectsAsync(SelectedPlayerCharacter.Background)));
SelectedPlayerCharacter.SubBackground = null;
SelectedPlayerCharacter.PersonalityTrait = null;
SelectedPlayerCharacter.PersonalityIdeal = null;
SelectedPlayerCharacter.PersonalityLink = null;
SelectedPlayerCharacter.PersonalityDefect = null;
}
}
@ -160,6 +170,42 @@ namespace AideDeJeu.ViewModels
SetProperty(ref _PersonalityTraits, value);
}
}
private NotifyTaskCompletion<List<string>> _PersonalityIdeals = null;
public NotifyTaskCompletion<List<string>> PersonalityIdeals
{
get
{
return _PersonalityIdeals;
}
private set
{
SetProperty(ref _PersonalityIdeals, value);
}
}
private NotifyTaskCompletion<List<string>> _PersonalityLinks = null;
public NotifyTaskCompletion<List<string>> PersonalityLinks
{
get
{
return _PersonalityLinks;
}
private set
{
SetProperty(ref _PersonalityLinks, value);
}
}
private NotifyTaskCompletion<List<string>> _PersonalityDefects = null;
public NotifyTaskCompletion<List<string>> PersonalityDefects
{
get
{
return _PersonalityDefects;
}
private set
{
SetProperty(ref _PersonalityDefects, value);
}
}
public async Task<List<BackgroundItem>> LoadBackgroundsAsync()
{
@ -170,27 +216,78 @@ namespace AideDeJeu.ViewModels
}
}
public List<string> ExtractSimpleTable(string table)
{
var lines = table.Split('\n');
var result = new List<string>();
foreach (var line in lines.Skip(2))
{
if (line.StartsWith("|"))
{
var cols = line.Split('|');
var text = cols[2].Replace("<!--br-->", " ").Replace(" ", " ");
result.Add(text);
}
}
return result;
}
public async Task<List<string>> LoadPersonalityTraitsAsync(BackgroundItem background)
{
if (background != null)
{
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
var list = await context.PersonalityTraits.Where(it => it.ParentLink.StartsWith(background.RootId)).OrderBy(b => Tools.Helpers.RemoveDiacritics(b.Name)).ToListAsync().ConfigureAwait(false);
var list = await context.PersonalityTraits.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false);
var item = list.FirstOrDefault();
var table = item.Table;
var lines = table.Split('\n');
var result = new List<string>();
foreach (var line in lines.Skip(2))
{
if (line.StartsWith("|"))
{
var cols = line.Split('|');
var text = cols[2].Replace("<!--br-->", " ").Replace(" ", " ");
result.Add(text);
}
}
return result;
return ExtractSimpleTable(item.Table);
}
}
else
{
return null;
}
}
public async Task<List<string>> LoadPersonalityIdealsAsync(BackgroundItem background)
{
if (background != null)
{
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
var list = await context.PersonalityIdeals.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false);
var item = list.FirstOrDefault();
return ExtractSimpleTable(item.Table);
}
}
else
{
return null;
}
}
public async Task<List<string>> LoadPersonalityLinksAsync(BackgroundItem background)
{
if (background != null)
{
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
var list = await context.PersonalityLinks.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false);
var item = list.FirstOrDefault();
return ExtractSimpleTable(item.Table);
}
}
else
{
return null;
}
}
public async Task<List<string>> LoadPersonalityDefectsAsync(BackgroundItem background)
{
if (background != null)
{
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
var list = await context.PersonalityDefects.Where(it => it.ParentLink.StartsWith(background.RootId)).ToListAsync().ConfigureAwait(false);
var item = list.FirstOrDefault();
return ExtractSimpleTable(item.Table);
}
}
else
@ -216,23 +313,45 @@ namespace AideDeJeu.ViewModels
}
}
public ICommand StringPickerCommand
public ICommand PersonalityTraitPickerCommand
{
get
{
return new Command<List<string>>(async (strings) => await ExecuteStringPickerCommandAsync(strings));
return new Command<List<string>>(async (strings) => SelectedPlayerCharacter.PersonalityTrait = await ExecuteStringPickerCommandAsync(strings));
}
}
public ICommand PersonalityIdealPickerCommand
{
get
{
return new Command<List<string>>(async (strings) => SelectedPlayerCharacter.PersonalityIdeal = await ExecuteStringPickerCommandAsync(strings));
}
}
public ICommand PersonalityLinkPickerCommand
{
get
{
return new Command<List<string>>(async (strings) => SelectedPlayerCharacter.PersonalityLink = await ExecuteStringPickerCommandAsync(strings));
}
}
public ICommand PersonalityDefectPickerCommand
{
get
{
return new Command<List<string>>(async (strings) => SelectedPlayerCharacter.PersonalityDefect = await ExecuteStringPickerCommandAsync(strings));
}
}
private async Task ExecuteStringPickerCommandAsync(List<string> strings)
private async Task<string> ExecuteStringPickerCommandAsync(List<string> strings)
{
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();
await Main.Navigator.Navigation.PopModalAsync(true);
SelectedPlayerCharacter.PersonalityTrait = result;
return result;
}
#endregion Background

View file

@ -67,5 +67,41 @@ namespace AideDeJeu.ViewModels
SetProperty(ref _PersonalityTrait, value);
}
}
private string _PersonalityIdeal = null;
public string PersonalityIdeal
{
get
{
return _PersonalityIdeal;
}
set
{
SetProperty(ref _PersonalityIdeal, value);
}
}
private string _PersonalityLink = null;
public string PersonalityLink
{
get
{
return _PersonalityLink;
}
set
{
SetProperty(ref _PersonalityLink, value);
}
}
private string _PersonalityDefect = null;
public string PersonalityDefect
{
get
{
return _PersonalityDefect;
}
set
{
SetProperty(ref _PersonalityDefect, value);
}
}
}
}

View file

@ -561,6 +561,9 @@ namespace AideDeJeu.ViewModels
public DbSet<BackgroundItem> Backgrounds { get; set; }
public DbSet<SubBackgroundItem> SubBackgrounds { get; set; }
public DbSet<PersonalityTraitItem> PersonalityTraits { get; set; }
public DbSet<PersonalityIdealItem> PersonalityIdeals { get; set; }
public DbSet<PersonalityLinkItem> PersonalityLinks { get; set; }
public DbSet<PersonalityDefectItem> PersonalityDefects { get; set; }
public AideDeJeuContext(string dbPath)
{

View file

@ -58,19 +58,21 @@
<StackLayout HorizontalOptions="FillAndExpand" >
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.Background.Description}" />
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.SubBackground.Description}" />
<Button Text="Trait de personnalité" Command="{Binding StringPickerCommand}" CommandParameter="{Binding PersonalityTraits.Result}" />
<mdview:MarkdownView HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityTrait}" />
<!--<ListView HorizontalOptions="FillAndExpand" ItemsSource="{Binding PersonalityTraits.Result}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<mdview:MarkdownView HorizontalOptions="FillAndExpand" Markdown="{Binding}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>-->
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.Background.Markdown}" />
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.SubBackground.Markdown}" />
<Button IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" Text="Trait de personnalité" Command="{Binding PersonalityTraitPickerCommand}" CommandParameter="{Binding PersonalityTraits.Result}" />
<mdview:MarkdownView IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityTrait}" />
<Button IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" Text="Idéal" Command="{Binding PersonalityIdealPickerCommand}" CommandParameter="{Binding PersonalityIdeals.Result}" />
<mdview:MarkdownView IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityIdeal}" />
<Button IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" Text="Lien" Command="{Binding PersonalityLinkPickerCommand}" CommandParameter="{Binding PersonalityLinks.Result}" />
<mdview:MarkdownView IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityLink}" />
<Button IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" Text="Défaut" Command="{Binding PersonalityDefectPickerCommand}" CommandParameter="{Binding PersonalityDefects.Result}" />
<mdview:MarkdownView IsVisible="{Binding SubBackgrounds.IsSuccessfullyCompleted}" HorizontalOptions="FillAndExpand" Markdown="{Binding SelectedPlayerCharacter.PersonalityDefect}" />
<!--<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.Background.Markdown}" />
<mdview:MarkdownView Markdown="{Binding SelectedPlayerCharacter.SubBackground.Markdown}" />-->
</StackLayout>
</ScrollView>
</StackLayout>

View file

@ -2,18 +2,17 @@
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mdview="clr-namespace:Xam.Forms.Markdown"
x:Class="AideDeJeu.Views.StringPicker">
x:Class="AideDeJeu.Views.StringPicker"
Title="{Binding Title}">
<ContentPage.Content>
<StackLayout>
<ListView ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<mdview:MarkdownView HorizontalOptions="FillAndExpand" Markdown="{Binding}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
<ListView ItemsSource="{Binding Items}" HasUnevenRows="True" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<mdview:MarkdownView HorizontalOptions="FillAndExpand" Markdown="{Binding}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>
</ContentPage>