From e9a0c94e0fffcdbd93ad9b9a19e5cbb5eeb148ad Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Sun, 5 May 2019 11:27:21 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9but=20am=C3=A9lioration=20abilities?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlayerCharacter/AbilitiesViewModel.cs | 29 +++++++++ .../PlayerCharacterEditorViewModel.cs | 62 ++++++++++++------- .../PlayerCharacterEditorPage.xaml | 12 ++-- 3 files changed, 76 insertions(+), 27 deletions(-) diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/AbilitiesViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/AbilitiesViewModel.cs index d801d0d4..1458338e 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/AbilitiesViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/AbilitiesViewModel.cs @@ -6,5 +6,34 @@ namespace AideDeJeu.ViewModels.PlayerCharacter { public class AbilitiesViewModel : BaseViewModel { + private AbilityViewModel _Strength = new AbilityViewModel(); + public AbilityViewModel Strength { get { return _Strength; } set { SetProperty(ref _Strength, value); } } + + private AbilityViewModel _Dexterity = new AbilityViewModel(); + public AbilityViewModel Dexterity { get { return _Dexterity; } set { SetProperty(ref _Dexterity, value); } } + + private AbilityViewModel _Constitution = new AbilityViewModel(); + public AbilityViewModel Constitution { get { return _Constitution; } set { SetProperty(ref _Constitution, value); } } + + private AbilityViewModel _Intelligence = new AbilityViewModel(); + public AbilityViewModel Intelligence { get { return _Intelligence; } set { SetProperty(ref _Intelligence, value); } } + + private AbilityViewModel _Wisdom = new AbilityViewModel(); + public AbilityViewModel Wisdom { get { return _Wisdom; } set { SetProperty(ref _Wisdom, value); } } + + private AbilityViewModel _Charisma = new AbilityViewModel(); + public AbilityViewModel Charisma { get { return _Charisma; } set { SetProperty(ref _Charisma, value); } } + } + + public class AbilityViewModel : BaseViewModel + { + private int? _BaseValue = null; + public int? BaseValue { get { return _BaseValue; } set { SetProperty(ref _BaseValue, value); OnPropertyChanged(nameof(Value)); OnPropertyChanged(nameof(Mod)); } } + private int _Bonus = 0; + public int Bonus { get { return _Bonus; } set { SetProperty(ref _Bonus, value); OnPropertyChanged(nameof(Value)); OnPropertyChanged(nameof(Mod)); } } + + public int? Value { get { return BaseValue != null ? BaseValue + Bonus : null; } } + public int? Mod { get { return Value != null ? Value / 2 - 5 : null; } } + } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/PlayerCharacterEditorViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/PlayerCharacterEditorViewModel.cs index 32e69f78..5ce8b021 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/PlayerCharacterEditorViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacter/PlayerCharacterEditorViewModel.cs @@ -7,6 +7,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; +using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; @@ -21,7 +22,10 @@ namespace AideDeJeu.ViewModels.PlayerCharacter { public PlayerCharacterEditorViewModel() { - SelectedPlayerCharacter = new PlayerCharacterViewModel() { Background = new BackgroundViewModel() }; + SelectedPlayerCharacter = new PlayerCharacterViewModel() { Background = new BackgroundViewModel(), Abilities = new AbilitiesViewModel() }; + SelectedPlayerCharacter.PropertyChanged += SelectedPlayerCharacter_PropertyChanged; + + ResetAlignments(); Races = new NotifyTaskCompletion>(Task.Run(() => LoadRacesAsync())); Classes = new NotifyTaskCompletion>(Task.Run(() => LoadClassesAsync())); @@ -47,6 +51,21 @@ namespace AideDeJeu.ViewModels.PlayerCharacter SubBackgroundSkill = null; } + private void SelectedPlayerCharacter_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + switch(e.PropertyName) + { + case nameof(SelectedPlayerCharacter.Race): + SelectedPlayerCharacter.Abilities.Strength.Bonus = int.Parse(SelectedPlayerCharacter.Race.Race.StrengthBonus ?? "0"); + SelectedPlayerCharacter.Abilities.Dexterity.Bonus = int.Parse(SelectedPlayerCharacter.Race.Race.DexterityBonus ?? "0"); + SelectedPlayerCharacter.Abilities.Constitution.Bonus = int.Parse(SelectedPlayerCharacter.Race.Race.ConstitutionBonus ?? "0"); + SelectedPlayerCharacter.Abilities.Intelligence.Bonus = int.Parse(SelectedPlayerCharacter.Race.Race.IntelligenceBonus ?? "0"); + SelectedPlayerCharacter.Abilities.Wisdom.Bonus = int.Parse(SelectedPlayerCharacter.Race.Race.WisdomBonus ?? "0"); + SelectedPlayerCharacter.Abilities.Charisma.Bonus = int.Parse(SelectedPlayerCharacter.Race.Race.CharismaBonus ?? "0"); + break; + } + } + #region Selected PC private PlayerCharacterViewModel _SelectedPlayerCharacter = null; public PlayerCharacterViewModel SelectedPlayerCharacter @@ -795,7 +814,7 @@ namespace AideDeJeu.ViewModels.PlayerCharacter "2 (-4)", "3 (-4)", "4 (-3)", "5 (-3)", "6 (-2)", "7 (-2)", "8 (-1)", "9 (-1)", "10 (+0)", "11 (+0)", "12 (+1)", "13 (+1)", "14 (+2)", "15 (+2)", "16 (+3)", "17 (+3)", "18 (+4)", "19 (+4)", "20 (+5)", "21 (+5)" }; - private int? _Strength = null; +/* private int? _Strength = null; public int? Strength { get @@ -872,7 +891,7 @@ namespace AideDeJeu.ViewModels.PlayerCharacter SetProperty(ref _Charisma, value); } } - + */ public ICommand RollDicesCommand { get @@ -899,12 +918,12 @@ namespace AideDeJeu.ViewModels.PlayerCharacter } - Strength = PickAbility(random, ref mins, ref maxs, "Force"); - Dexterity = PickAbility(random, ref mins, ref maxs, "Dextérité"); - Constitution = PickAbility(random, ref mins, ref maxs, "Constitution"); - Intelligence = PickAbility(random, ref mins, ref maxs, "Intelligence"); - Wisdom = PickAbility(random, ref mins, ref maxs, "Sagesse"); - Charisma = PickAbility(random, ref mins, ref maxs, "Charisme"); + SelectedPlayerCharacter.Abilities.Strength.BaseValue = PickAbility(random, ref mins, ref maxs, "Force"); + SelectedPlayerCharacter.Abilities.Dexterity.BaseValue = PickAbility(random, ref mins, ref maxs, "Dextérité"); + SelectedPlayerCharacter.Abilities.Constitution.BaseValue = PickAbility(random, ref mins, ref maxs, "Constitution"); + SelectedPlayerCharacter.Abilities.Intelligence.BaseValue = PickAbility(random, ref mins, ref maxs, "Intelligence"); + SelectedPlayerCharacter.Abilities.Wisdom.BaseValue = PickAbility(random, ref mins, ref maxs, "Sagesse"); + SelectedPlayerCharacter.Abilities.Charisma.BaseValue = PickAbility(random, ref mins, ref maxs, "Charisme"); //await GeneratePdfAsync(); //await OpenPdfAsync(); @@ -1209,18 +1228,18 @@ namespace AideDeJeu.ViewModels.PlayerCharacter (SelectedPersonalityLink ?? string.Empty) + "\n\n" + (SelectedPersonalityDefect ?? string.Empty) ); - form.SetField("For Valeur", Strength != null ? Strength.ToString() : string.Empty); - form.SetField("For MOD", Strength != null ? (Strength.Value / 2 - 5).ToString() : string.Empty); - form.SetField("Dex Valeur", Dexterity != null ? Dexterity.ToString() : string.Empty); - form.SetField("Dex MOD", Dexterity != null ? (Dexterity.Value / 2 - 5).ToString() : string.Empty); - form.SetField("Con Valeur", Constitution != null ? Constitution.ToString() : string.Empty); - form.SetField("Con MOD", Constitution != null ? (Constitution.Value / 2 - 5).ToString() : string.Empty); - form.SetField("Int Valeur", Intelligence != null ? Intelligence.ToString() : string.Empty); - form.SetField("Int MOD", Intelligence != null ? (Intelligence.Value / 2 - 5).ToString() : string.Empty); - form.SetField("Sag Valeur", Wisdom != null ? Wisdom.ToString() : string.Empty); - form.SetField("Sag MOD", Wisdom != null ? (Wisdom.Value / 2 - 5).ToString() : string.Empty); - form.SetField("Cha Valeur", Charisma != null ? Charisma.ToString() : string.Empty); - form.SetField("Cha MOD", Charisma != null ? (Charisma.Value / 2 - 5).ToString() : string.Empty); + form.SetField("For Valeur", SelectedPlayerCharacter?.Abilities?.Strength?.Value?.ToString()); + form.SetField("For MOD", SelectedPlayerCharacter?.Abilities?.Strength?.Mod?.ToString()); + form.SetField("Dex Valeur", SelectedPlayerCharacter?.Abilities?.Dexterity?.Value?.ToString()); + form.SetField("Dex MOD", SelectedPlayerCharacter?.Abilities?.Dexterity?.Mod?.ToString()); + form.SetField("Con Valeur", SelectedPlayerCharacter?.Abilities?.Constitution?.Value?.ToString()); + form.SetField("Con MOD", SelectedPlayerCharacter?.Abilities?.Constitution?.Mod?.ToString()); + form.SetField("Int Valeur", SelectedPlayerCharacter?.Abilities?.Intelligence?.Value?.ToString()); + form.SetField("Int MOD", SelectedPlayerCharacter?.Abilities?.Intelligence?.Mod?.ToString()); + form.SetField("Sag Valeur", SelectedPlayerCharacter?.Abilities?.Wisdom?.Value?.ToString()); + form.SetField("Sag MOD", SelectedPlayerCharacter?.Abilities?.Wisdom?.Mod?.ToString()); + form.SetField("Cha Valeur", SelectedPlayerCharacter?.Abilities?.Charisma?.Value?.ToString()); + form.SetField("Cha MOD", SelectedPlayerCharacter?.Abilities?.Charisma?.Mod?.ToString()); //PdfContentByte cb = stamper.GetOverContent(1); //cb.SetRGBColorFill(255, 0, 0); @@ -1389,4 +1408,5 @@ namespace AideDeJeu.ViewModels.PlayerCharacter #endregion Level } + } diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml index 2fe8604e..5a9cb40f 100644 --- a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml @@ -206,12 +206,12 @@ - - - - - - + + + + + +