mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 15:06:06 +00:00
Class vm
This commit is contained in:
parent
cc0f0ef161
commit
9bdd734df3
9 changed files with 216 additions and 54 deletions
|
|
@ -50,6 +50,9 @@
|
|||
<Compile Update="Views\AboutPage.xaml.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Views\ItemView.xaml.cs">
|
||||
<DependentUpon>ItemView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Views\Library\ItemDetailPage.xaml.cs">
|
||||
<DependentUpon>ItemDetailPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,33 @@
|
|||
namespace AideDeJeuLib
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace AideDeJeuLib
|
||||
{
|
||||
public class ClassEvolutionItem : Item
|
||||
{
|
||||
public string Table { get; set; }
|
||||
public List<string> BindableTable
|
||||
{
|
||||
get
|
||||
{
|
||||
return ExtractSimpleTable(Table);
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,66 @@
|
|||
using AideDeJeuLib;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
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; }
|
||||
private ClassItem _Class = null;
|
||||
public ClassItem Class { get { return _Class; } set { SetProperty(ref _Class, value); } }
|
||||
|
||||
private SubClassItem _SubClass = null;
|
||||
public SubClassItem SubClass { get { return _SubClass; } set { SetProperty(ref _SubClass, value); } }
|
||||
|
||||
private ClassHitPointsItem _HitPoints = null;
|
||||
public ClassHitPointsItem HitPoints { get { return _HitPoints; } set { SetProperty(ref _HitPoints, value); } }
|
||||
|
||||
public ClassProficienciesItem _Proficiencies = null;
|
||||
public ClassProficienciesItem Proficiencies { get { return _Proficiencies; } set { SetProperty(ref _Proficiencies, value); } }
|
||||
|
||||
public ClassEquipmentItem _Equipment = null;
|
||||
public ClassEquipmentItem Equipment { get { return _Equipment; } set { SetProperty(ref _Equipment, value); } }
|
||||
|
||||
public ClassEvolutionItem _Evolution = null;
|
||||
public ClassEvolutionItem Evolution { get { return _Evolution; } set { SetProperty(ref _Evolution, value); } }
|
||||
|
||||
public List<ClassFeatureItem> _Features = null;
|
||||
public List<ClassFeatureItem> Features { get { return _Features; } set { SetProperty(ref _Features, value); } }
|
||||
|
||||
public string Name { get { return Class?.Name; } }
|
||||
public string Description { get { return Class?.Description; } }
|
||||
public string Markdown { get { return Class?.Markdown; } }
|
||||
|
||||
public List<ClassFeatureItem> LeveledFeatures
|
||||
{
|
||||
get
|
||||
{
|
||||
var table = Evolution.ExtractSimpleTable(Evolution.Table);
|
||||
var feats = table[1];
|
||||
var leveledFeats = new List<ClassFeatureItem>();
|
||||
foreach(var feature in Features)
|
||||
{
|
||||
if(feats.Contains(feature.Name))
|
||||
{
|
||||
leveledFeats.Add(feature);
|
||||
}
|
||||
}
|
||||
return leveledFeats;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task LoadDetailsAsync()
|
||||
{
|
||||
using (var context = await StoreViewModel.GetLibraryContextAsync())
|
||||
{
|
||||
HitPoints = await context.ClassHitPoints.Where(c => c.ParentLink == Class.Id).FirstOrDefaultAsync();
|
||||
Proficiencies = await context.ClassProficiencies.Where(c => c.ParentLink == Class.Id).FirstOrDefaultAsync();
|
||||
Equipment = await context.ClassEquipments.Where(c => c.ParentLink == Class.Id).FirstOrDefaultAsync();
|
||||
Evolution = await context.ClassEvolutions.Where(c => c.ParentLink == Class.Id).FirstOrDefaultAsync();
|
||||
Features = await context.ClassFeatures.Where(c => c.ParentLink == Class.Id).ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -151,20 +151,6 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
|
|||
#region Race
|
||||
public NotifyTaskCompletion<List<RaceViewModel>> Races { get; private set; }
|
||||
|
||||
//private RaceViewModel _SelectedRace = null;
|
||||
//public RaceViewModel SelectedRace
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return _SelectedRace;
|
||||
// }
|
||||
// set
|
||||
// {
|
||||
// SetProperty(ref _SelectedRace, value);
|
||||
// //SelectedPlayerCharacter.Race = _SelectedRace;
|
||||
// }
|
||||
//}
|
||||
|
||||
public async Task<List<RaceViewModel>> LoadRacesAsync()
|
||||
{
|
||||
using (var context = await StoreViewModel.GetLibraryContextAsync())
|
||||
|
|
@ -195,33 +181,6 @@ 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 async Task<List<ClassViewModel>> LoadClassesAsync()
|
||||
{
|
||||
using (var context = await StoreViewModel.GetLibraryContextAsync())
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
|
|||
set
|
||||
{
|
||||
SetProperty(ref _Class, value);
|
||||
_Class.LoadDetailsAsync().ConfigureAwait(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -610,14 +610,21 @@ namespace AideDeJeu.ViewModels
|
|||
public DbSet<MagicItem> MagicItems { get; set; }
|
||||
public DbSet<SpellItem> Spells { get; set; }
|
||||
public DbSet<MonsterItem> Monsters { get; set; }
|
||||
//public DbSet<Spell> Spells { get; set; }
|
||||
//public DbSet<MonsterHD> MonstersHD { get; set; }
|
||||
//public DbSet<SpellVO> SpellsVO { get; set; }
|
||||
//public DbSet<MonsterVO> MonstersVO { get; set; }
|
||||
|
||||
|
||||
public DbSet<RaceItem> Races { get; set; }
|
||||
public DbSet<ClassItem> Classes { get; set; }
|
||||
public DbSet<SubRaceItem> SubRaces { get; set; }
|
||||
|
||||
|
||||
public DbSet<ClassItem> Classes { get; set; }
|
||||
public DbSet<SubClassItem> SubClasses { get; set; }
|
||||
public DbSet<ClassHitPointsItem> ClassHitPoints { get; set; }
|
||||
public DbSet<ClassProficienciesItem> ClassProficiencies { get; set; }
|
||||
public DbSet<ClassEquipmentItem> ClassEquipments { get; set; }
|
||||
public DbSet<ClassEvolutionItem> ClassEvolutions { get; set; }
|
||||
public DbSet<ClassFeatureItem> ClassFeatures { get; set; }
|
||||
|
||||
|
||||
public DbSet<BackgroundItem> Backgrounds { get; set; }
|
||||
public DbSet<SubBackgroundItem> SubBackgrounds { get; set; }
|
||||
public DbSet<PersonalityTraitItem> PersonalityTraits { get; set; }
|
||||
|
|
@ -626,6 +633,8 @@ namespace AideDeJeu.ViewModels
|
|||
public DbSet<PersonalityDefectItem> PersonalityDefects { get; set; }
|
||||
public DbSet<SkillItem> Skills { get; set; }
|
||||
public DbSet<BackgroundSpecialtyItem> BackgroundSpecialties { get; set; }
|
||||
|
||||
|
||||
public DbSet<AlignmentItem> Alignments { get; set; }
|
||||
|
||||
public AideDeJeuContext(string dbPath)
|
||||
|
|
|
|||
19
AideDeJeu/AideDeJeu/Views/ItemView.xaml
Normal file
19
AideDeJeu/AideDeJeu/Views/ItemView.xaml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<StackLayout
|
||||
xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:tools="clr-namespace:AideDeJeu.Tools"
|
||||
xmlns:mdview="clr-namespace:Xam.Forms.Markdown"
|
||||
x:Class="AideDeJeu.Views.ItemView"
|
||||
x:Name="this"
|
||||
>
|
||||
<!--IsVisible="{Binding Description, Converter={x:StaticResource NullToFalseConverter}}"-->
|
||||
<StackLayout.Resources>
|
||||
<ResourceDictionary>
|
||||
<tools:MonsterMarkdownTheme x:Key="MonsterMarkdownTheme" />
|
||||
<tools:NullToFalseConverter x:Key="NullToFalseConverter" />
|
||||
</ResourceDictionary>
|
||||
</StackLayout.Resources>
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Name, Source={x:Reference this}}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Description, Source={x:Reference this}}" />
|
||||
</StackLayout>
|
||||
82
AideDeJeu/AideDeJeu/Views/ItemView.xaml.cs
Normal file
82
AideDeJeu/AideDeJeu/Views/ItemView.xaml.cs
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
using AideDeJeu.ViewModels;
|
||||
using AideDeJeuLib;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
namespace AideDeJeu.Views
|
||||
{
|
||||
[XamlCompilation(XamlCompilationOptions.Compile)]
|
||||
public partial class ItemView : StackLayout
|
||||
{
|
||||
public MainViewModel Main
|
||||
{
|
||||
get
|
||||
{
|
||||
return DependencyService.Get<MainViewModel>();
|
||||
}
|
||||
}
|
||||
public ItemView()
|
||||
{
|
||||
InitializeComponent();
|
||||
BindingContext = this;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return (string)GetValue(NameProperty); }
|
||||
set { SetValue(NameProperty, value); }
|
||||
}
|
||||
public static readonly BindableProperty NameProperty = BindableProperty.Create(
|
||||
nameof(Name),
|
||||
typeof(string),
|
||||
typeof(ItemView),
|
||||
defaultValue: default(string));
|
||||
|
||||
public string Description
|
||||
{
|
||||
get { return (string)GetValue(DescriptionProperty); }
|
||||
set { SetValue(DescriptionProperty, value); }
|
||||
}
|
||||
public static readonly BindableProperty DescriptionProperty = BindableProperty.Create(
|
||||
nameof(Description),
|
||||
typeof(string),
|
||||
typeof(ItemView),
|
||||
defaultValue: default(string));
|
||||
|
||||
public object SelectedItem
|
||||
{
|
||||
get { return (object)GetValue(SelectedItemProperty); }
|
||||
set { SetValue(SelectedItemProperty, value); }
|
||||
}
|
||||
public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create(
|
||||
nameof(SelectedItem),
|
||||
typeof(object),
|
||||
typeof(ItemView),
|
||||
defaultValue: default(object),
|
||||
defaultBindingMode: BindingMode.TwoWay);
|
||||
|
||||
public System.Collections.IEnumerable ItemsSource
|
||||
{
|
||||
get { return (System.Collections.IEnumerable)GetValue(ItemsSourceProperty); }
|
||||
set { SetValue(ItemsSourceProperty, value); }
|
||||
}
|
||||
//public static readonly BindableProperty ItemsSourceProperty = BindableProperty.Create(
|
||||
// nameof(ItemsSource),
|
||||
// typeof(System.Collections.IList),
|
||||
// typeof(StringPickerView),
|
||||
// defaultValue: new List<string>());
|
||||
public static readonly BindableProperty ItemsSourceProperty =
|
||||
BindableProperty.Create(
|
||||
nameof(ItemsSource),
|
||||
typeof(System.Collections.IEnumerable),
|
||||
typeof(ItemView),
|
||||
default(System.Collections.IEnumerable));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -71,6 +71,22 @@
|
|||
<StackLayout>
|
||||
<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}" />-->
|
||||
|
||||
<Frame BorderColor="Black" Padding="2" Margin="10" IsVisible="{Binding SelectedPlayerCharacter.Class, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" >
|
||||
<StackLayout Padding="0">
|
||||
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Dés de vie" Description="{Binding SelectedPlayerCharacter.Class.HitPoints.HitDice}" />
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Points de vie au niveau 1" Description="{Binding SelectedPlayerCharacter.Class.HitPoints.HitPointsAt1stLevel}" />
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Points de vie aux niveaux supérieurs" Description="{Binding SelectedPlayerCharacter.Class.HitPoints.HitPointsAtHigherLevels}" />
|
||||
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Armures" Description="{Binding SelectedPlayerCharacter.Class.Proficiencies.Armor}" />
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Armes" Description="{Binding SelectedPlayerCharacter.Class.Proficiencies.Weapons}" />
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Outils" Description="{Binding SelectedPlayerCharacter.Class.Proficiencies.Tools}" />
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Jets de sauvegarde" Description="{Binding SelectedPlayerCharacter.Class.Proficiencies.SavingThrows}" />
|
||||
<views:ItemView BindingContext="{Binding}" Name="#### Compétences" Description="{Binding SelectedPlayerCharacter.Class.Proficiencies.Skills}" />
|
||||
|
||||
</StackLayout>
|
||||
</Frame>
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedPlayerCharacter.Class.Markdown}" />
|
||||
</StackLayout>
|
||||
</ScrollView>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue