mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-31 07:26:09 +00:00 
			
		
		
		
	Abilities
This commit is contained in:
		
							parent
							
								
									80e6ebad44
								
							
						
					
					
						commit
						42f3fa0604
					
				
					 6 changed files with 361 additions and 44 deletions
				
			
		|  | @ -61,6 +61,40 @@ namespace AideDeJeu.Tools | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public class ComparerToValueConverter<C, T> : IValueConverter where C : IComparable | ||||
|     { | ||||
|         public T GreaterThan { get; set; } | ||||
|         public T EqualsTo { get; set; } | ||||
|         public T SmallerThan { get; set; } | ||||
|         public T Default { get; set; } | ||||
| 
 | ||||
|         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | ||||
|         { | ||||
|             var valueC = (C)value; | ||||
|             var compare = valueC.CompareTo(parameter); | ||||
|             if(EqualsTo != null && compare == 0) | ||||
|             { | ||||
|                 return EqualsTo; | ||||
|             } | ||||
|             if (GreaterThan != null && compare > 0) | ||||
|             { | ||||
|                 return GreaterThan; | ||||
|             } | ||||
|             if (SmallerThan != null && compare < 0) | ||||
|             { | ||||
|                 return SmallerThan; | ||||
|             } | ||||
|             return Default; | ||||
|         } | ||||
| 
 | ||||
|         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public class IntComparerToBooleanConverter : ComparerToValueConverter<int, bool> { } | ||||
| 
 | ||||
|     public class IntToValueConverter<T> : IValueConverter | ||||
|     { | ||||
|         public T NullOrZeroValue { get; set; } | ||||
|  |  | |||
|  | @ -6,6 +6,163 @@ namespace AideDeJeu.ViewModels.PlayerCharacter | |||
| { | ||||
|     public class AbilitiesViewModel : BaseViewModel | ||||
|     { | ||||
|         public AbilitiesViewModel() | ||||
|         { | ||||
|             Listen(); | ||||
|         } | ||||
| 
 | ||||
|         public bool _Listening = false; | ||||
|         public void Listen() | ||||
|         { | ||||
|             if (!_Listening) | ||||
|             { | ||||
|                 _Listening = true; | ||||
|                 Strength.PropertyChanged += Strength_PropertyChanged; | ||||
|                 Dexterity.PropertyChanged += Dexterity_PropertyChanged; | ||||
|                 Constitution.PropertyChanged += Constitution_PropertyChanged; | ||||
|                 Intelligence.PropertyChanged += Intelligence_PropertyChanged; | ||||
|                 Wisdom.PropertyChanged += Wisdom_PropertyChanged; | ||||
|                 Charisma.PropertyChanged += Charisma_PropertyChanged; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void Unlisten() | ||||
|         { | ||||
|             if (_Listening) | ||||
|             { | ||||
|                 _Listening = false; | ||||
|                 Strength.PropertyChanged -= Strength_PropertyChanged; | ||||
|                 Dexterity.PropertyChanged -= Dexterity_PropertyChanged; | ||||
|                 Constitution.PropertyChanged -= Constitution_PropertyChanged; | ||||
|                 Intelligence.PropertyChanged -= Intelligence_PropertyChanged; | ||||
|                 Wisdom.PropertyChanged -= Wisdom_PropertyChanged; | ||||
|                 Charisma.PropertyChanged -= Charisma_PropertyChanged; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void Charisma_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) | ||||
|         { | ||||
|             CheckRacialDispatchedBonus(e.PropertyName, Charisma, () => | ||||
|             { | ||||
|                 var list = new LinkedList<AbilityViewModel>(); | ||||
|                 list.AddLast(Strength); | ||||
|                 list.AddLast(Dexterity); | ||||
|                 list.AddLast(Constitution); | ||||
|                 list.AddLast(Intelligence); | ||||
|                 list.AddLast(Wisdom); | ||||
|                 return list; | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         private void Wisdom_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) | ||||
|         { | ||||
|             CheckRacialDispatchedBonus(e.PropertyName, Wisdom, () => | ||||
|             { | ||||
|                 var list = new LinkedList<AbilityViewModel>(); | ||||
|                 list.AddLast(Charisma); | ||||
|                 list.AddLast(Strength); | ||||
|                 list.AddLast(Dexterity); | ||||
|                 list.AddLast(Constitution); | ||||
|                 list.AddLast(Intelligence); | ||||
|                 return list; | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         private void Intelligence_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) | ||||
|         { | ||||
|             CheckRacialDispatchedBonus(e.PropertyName, Intelligence, () => | ||||
|             { | ||||
|                 var list = new LinkedList<AbilityViewModel>(); | ||||
|                 list.AddLast(Wisdom); | ||||
|                 list.AddLast(Charisma); | ||||
|                 list.AddLast(Strength); | ||||
|                 list.AddLast(Dexterity); | ||||
|                 list.AddLast(Constitution); | ||||
|                 return list; | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         private void Constitution_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) | ||||
|         { | ||||
|             CheckRacialDispatchedBonus(e.PropertyName, Constitution, () => | ||||
|             { | ||||
|                 var list = new LinkedList<AbilityViewModel>(); | ||||
|                 list.AddLast(Intelligence); | ||||
|                 list.AddLast(Wisdom); | ||||
|                 list.AddLast(Charisma); | ||||
|                 list.AddLast(Strength); | ||||
|                 list.AddLast(Dexterity); | ||||
|                 return list; | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         private void Dexterity_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) | ||||
|         { | ||||
|             CheckRacialDispatchedBonus(e.PropertyName, Dexterity, () => | ||||
|             { | ||||
|                 var list = new LinkedList<AbilityViewModel>(); | ||||
|                 list.AddLast(Constitution); | ||||
|                 list.AddLast(Intelligence); | ||||
|                 list.AddLast(Wisdom); | ||||
|                 list.AddLast(Charisma); | ||||
|                 list.AddLast(Strength); | ||||
|                 return list; | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         private void Strength_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) | ||||
|         { | ||||
|             CheckRacialDispatchedBonus(e.PropertyName, Strength, () =>  | ||||
|             { | ||||
|                 var list = new LinkedList<AbilityViewModel>(); | ||||
|                 list.AddLast(Dexterity); | ||||
|                 list.AddLast(Constitution); | ||||
|                 list.AddLast(Intelligence); | ||||
|                 list.AddLast(Wisdom); | ||||
|                 list.AddLast(Charisma); | ||||
|                 return list; | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         private void CheckRacialDispatchedBonus(string propertyName, AbilityViewModel ability, Func<LinkedList<AbilityViewModel>> funcList) | ||||
|         { | ||||
|             if (propertyName == nameof(AbilityViewModel.RacialDispatchedBonus)) | ||||
|             { | ||||
|                 if (ability.RacialDispatchedBonus > 0 && SumRacialDispatchedBonus > MaxRacialDispatchedBonus) | ||||
|                 { | ||||
|                     DecrementNext(funcList()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|             private void DecrementNext(LinkedList<AbilityViewModel> list) | ||||
|         { | ||||
|             var ability = list.First; | ||||
|             while (ability != null) | ||||
|             { | ||||
|                 if (ability.Value.RacialDispatchedBonus > 0) | ||||
|                 { | ||||
|                     ability.Value.RacialDispatchedBonus--; | ||||
|                     break; | ||||
|                 } | ||||
|                 ability = ability.Next; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private int SumRacialDispatchedBonus | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return | ||||
|                     Strength.RacialDispatchedBonus + | ||||
|                     Dexterity.RacialDispatchedBonus + | ||||
|                     Constitution.RacialDispatchedBonus + | ||||
|                     Intelligence.RacialDispatchedBonus + | ||||
|                     Wisdom.RacialDispatchedBonus + | ||||
|                     Charisma.RacialDispatchedBonus; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private AbilityViewModel _Strength = new AbilityViewModel(); | ||||
|         public AbilityViewModel Strength { get { return _Strength; } set { SetProperty(ref _Strength, value); } } | ||||
| 
 | ||||
|  | @ -23,6 +180,10 @@ namespace AideDeJeu.ViewModels.PlayerCharacter | |||
| 
 | ||||
|         private AbilityViewModel _Charisma = new AbilityViewModel(); | ||||
|         public AbilityViewModel Charisma { get { return _Charisma; } set { SetProperty(ref _Charisma, value); } } | ||||
| 
 | ||||
|         private int _MaxRacialDispatchedBonus = 0; | ||||
|         public int MaxRacialDispatchedBonus { get { return _MaxRacialDispatchedBonus; } set { SetProperty(ref _MaxRacialDispatchedBonus, value); OnPropertyChanged(nameof(HasRacialDispatchedBonus)); } } | ||||
|         public bool HasRacialDispatchedBonus { get { return _MaxRacialDispatchedBonus > 0; } } | ||||
|     } | ||||
| 
 | ||||
|     public class AbilityViewModel : BaseViewModel | ||||
|  | @ -66,6 +227,26 @@ namespace AideDeJeu.ViewModels.PlayerCharacter | |||
|                 OnPropertyChanged(nameof(ModString)); | ||||
|             } | ||||
|         } | ||||
|         private int _MaxRacialDispatchedBonus = 0; | ||||
|         public int MaxRacialDispatchedBonus | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return _MaxRacialDispatchedBonus; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 SetProperty(ref _MaxRacialDispatchedBonus, value); | ||||
|                 OnPropertyChanged(nameof(HasRacialDispatchedBonus)); | ||||
|             } | ||||
|         } | ||||
|         public bool HasRacialDispatchedBonus | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return _MaxRacialDispatchedBonus > 0; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public int? Value { get { return BaseValue != null ? BaseValue + RacialBonus + RacialDispatchedBonus : null; } } | ||||
|         public string ValueString { get { return Value != null ? Value.ToString() : null; } } | ||||
|  |  | |||
|  | @ -56,12 +56,36 @@ namespace AideDeJeu.ViewModels.PlayerCharacter | |||
|             switch(e.PropertyName) | ||||
|             { | ||||
|                 case nameof(SelectedPlayerCharacter.Race): | ||||
|                     SelectedPlayerCharacter.Abilities.Strength.RacialBonus = int.Parse(SelectedPlayerCharacter.Race.Race.StrengthBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Dexterity.RacialBonus = int.Parse(SelectedPlayerCharacter.Race.Race.DexterityBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Constitution.RacialBonus = int.Parse(SelectedPlayerCharacter.Race.Race.ConstitutionBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Intelligence.RacialBonus = int.Parse(SelectedPlayerCharacter.Race.Race.IntelligenceBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Wisdom.RacialBonus = int.Parse(SelectedPlayerCharacter.Race.Race.WisdomBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Charisma.RacialBonus = int.Parse(SelectedPlayerCharacter.Race.Race.CharismaBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Unlisten(); | ||||
| 
 | ||||
|                     SelectedPlayerCharacter.Abilities.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.DispatchedBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Strength.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.MaxDispatchedStrengthBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Dexterity.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.MaxDispatchedDexterityBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Constitution.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.MaxDispatchedConstitutionBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Intelligence.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.MaxDispatchedIntelligenceBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Wisdom.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.MaxDispatchedWisdomBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Charisma.MaxRacialDispatchedBonus = int.Parse(SelectedPlayerCharacter.Race.Race.MaxDispatchedCharismaBonus ?? "0"); | ||||
| 
 | ||||
|                     SelectedPlayerCharacter.Abilities.Strength.RacialBonus =  | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.Race?.StrengthBonus ?? "0") + | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.SubRace?.StrengthBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Dexterity.RacialBonus =  | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.Race?.DexterityBonus ?? "0") + | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.SubRace?.DexterityBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Constitution.RacialBonus =  | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.Race?.ConstitutionBonus ?? "0") + | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.SubRace?.ConstitutionBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Intelligence.RacialBonus =  | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.Race?.IntelligenceBonus ?? "0") + | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.SubRace?.IntelligenceBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Wisdom.RacialBonus =  | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.Race?.WisdomBonus ?? "0") + | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.SubRace?.WisdomBonus ?? "0"); | ||||
|                     SelectedPlayerCharacter.Abilities.Charisma.RacialBonus =  | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.Race?.CharismaBonus ?? "0") + | ||||
|                         int.Parse(SelectedPlayerCharacter.Race.SubRace?.CharismaBonus ?? "0"); | ||||
| 
 | ||||
|                     SelectedPlayerCharacter.Abilities.Listen(); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|  | @ -917,13 +941,14 @@ namespace AideDeJeu.ViewModels.PlayerCharacter | |||
|                 maxs = null; | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
|             SelectedPlayerCharacter.Abilities.Unlisten(); | ||||
|             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"); | ||||
|             SelectedPlayerCharacter.Abilities.Listen(); | ||||
| 
 | ||||
|             //await GeneratePdfAsync(); | ||||
|             //await OpenPdfAsync(); | ||||
|  |  | |||
|  | @ -8,11 +8,24 @@ | |||
|         <ResourceDictionary> | ||||
|             <tools:MonsterMarkdownTheme x:Key="MonsterMarkdownTheme" /> | ||||
|             <tools:NullToFalseConverter x:Key="NullToFalseConverter" /> | ||||
|             <tools:IntComparerToBooleanConverter  | ||||
|                 x:Key="GreaterToTrueConverter" | ||||
|                 GreaterThan="True" | ||||
|                 Default="False" | ||||
|                 /> | ||||
|         </ResourceDictionary> | ||||
|     </ContentView.Resources> | ||||
|     <ContentView.Content> | ||||
|       <StackLayout Orientation="Horizontal"> | ||||
|             <Picker Title="{Binding Title, Source={x:Reference this}}" SelectedItem="{Binding Ability.BaseValue, Source={x:Reference this}, Mode=TwoWay}"> | ||||
|       <Grid> | ||||
|             <Grid.ColumnDefinitions> | ||||
|                 <ColumnDefinition Width="100" /> | ||||
|                 <ColumnDefinition Width="80" /> | ||||
|                 <ColumnDefinition Width="80" /> | ||||
|                 <ColumnDefinition Width="80" /> | ||||
|                 <ColumnDefinition Width="80" /> | ||||
|             </Grid.ColumnDefinitions> | ||||
|             <Label Grid.Column="0" Text="{Binding Title, Source={x:Reference this}}" /> | ||||
|             <Picker Grid.Column="1" SelectedItem="{Binding Ability.BaseValue, Source={x:Reference this}, Mode=TwoWay}"> | ||||
|                 <Picker.ItemsSource> | ||||
|                     <x:Array Type="{x:Type x:Int32}"> | ||||
|                         <x:Int32>3</x:Int32> | ||||
|  | @ -34,11 +47,55 @@ | |||
|                     </x:Array> | ||||
|                 </Picker.ItemsSource> | ||||
|             </Picker> | ||||
|             <Label Text="{Binding Ability.RacialBonus, Source={x:Reference this}, StringFormat='Bonus : {0}', FallbackValue=''}" /> | ||||
|             <Label Text="{Binding Ability.DispatchedRacialBonus, Source={x:Reference this}, StringFormat='Bonus : {0}', FallbackValue=''}" /> | ||||
|             <Stepper Minimum="0" Maximum="1" Value="{Binding Ability.DispatchedRacialBonus, Source={x:Reference this}, Mode=TwoWay}" /> | ||||
|             <Label Text="{Binding Ability.Value, Source={x:Reference this}, StringFormat='Value : {0}', FallbackValue=''}" /> | ||||
|             <Label Text="{Binding Ability.Mod, Source={x:Reference this}, StringFormat='Mod : {0}', FallbackValue=''}" /> | ||||
|         </StackLayout> | ||||
|             <Label Grid.Column="2" Text="{Binding Ability.RacialBonus, Source={x:Reference this}, StringFormat='{}{0:+0;-#}', FallbackValue=''}"> | ||||
|                 <Label.IsVisible> | ||||
|                     <Binding Source="{x:Reference this}" Path="Ability.RacialBonus"> | ||||
|                         <Binding.Converter> | ||||
|                             <tools:IntComparerToBooleanConverter  | ||||
|                                 GreaterThan="True" | ||||
|                                 Default="False" | ||||
|                                 /> | ||||
|                         </Binding.Converter> | ||||
|                         <Binding.ConverterParameter> | ||||
|                             <x:Int32>0</x:Int32> | ||||
|                         </Binding.ConverterParameter> | ||||
|                     </Binding> | ||||
|                 </Label.IsVisible> | ||||
|             </Label> | ||||
|             <Grid Grid.Column="2" IsVisible="{Binding Ability.HasRacialDispatchedBonus, Source={x:Reference this}}"> | ||||
|                 <Label Grid.Column="0" Text="{Binding Ability.RacialDispatchedBonus, Source={x:Reference this}, StringFormat='{}{0:+0;-#}', FallbackValue=''}"> | ||||
|                     <Label.IsVisible> | ||||
|                         <Binding Source="{x:Reference this}" Path="Ability.RacialBonus"> | ||||
|                             <Binding.Converter> | ||||
|                                 <tools:IntComparerToBooleanConverter  | ||||
|                                 EqualsTo="True" | ||||
|                                 Default="False" | ||||
|                                 /> | ||||
|                             </Binding.Converter> | ||||
|                             <Binding.ConverterParameter> | ||||
|                                 <x:Int32>0</x:Int32> | ||||
|                             </Binding.ConverterParameter> | ||||
|                         </Binding> | ||||
|                     </Label.IsVisible> | ||||
|                 </Label> | ||||
|                 <Stepper Grid.Column="1" Minimum="0" Maximum="1" Value="{Binding Ability.RacialDispatchedBonus, Source={x:Reference this}, Mode=TwoWay}"> | ||||
|                     <Stepper.IsVisible> | ||||
|                         <Binding Source="{x:Reference this}" Path="Ability.RacialBonus"> | ||||
|                             <Binding.Converter> | ||||
|                                 <tools:IntComparerToBooleanConverter  | ||||
|                                 EqualsTo="True" | ||||
|                                 Default="False" | ||||
|                                 /> | ||||
|                             </Binding.Converter> | ||||
|                             <Binding.ConverterParameter> | ||||
|                                 <x:Int32>0</x:Int32> | ||||
|                             </Binding.ConverterParameter> | ||||
|                         </Binding> | ||||
|                     </Stepper.IsVisible> | ||||
|                 </Stepper> | ||||
|             </Grid> | ||||
|             <Label Grid.Column="3" Text="{Binding Ability.Value, Source={x:Reference this}, FallbackValue=''}" /> | ||||
|             <Label Grid.Column="4" Text="{Binding Ability.Mod, Source={x:Reference this}, StringFormat='{}{0:+0;-#}', FallbackValue=''}" /> | ||||
|         </Grid> | ||||
|   </ContentView.Content> | ||||
| </ContentView> | ||||
|  | @ -39,26 +39,6 @@ namespace AideDeJeu.Views.Pickers | |||
|             typeof(AbilityViewModel), | ||||
|             typeof(AbilityPickerView), | ||||
|             defaultValue: default(AbilityViewModel)); | ||||
|         /*public int RacialBonus | ||||
|         { | ||||
|             get { return (int)GetValue(RacialBonusProperty); } | ||||
|             set { SetValue(RacialBonusProperty, value); } | ||||
|         } | ||||
|         public static readonly BindableProperty RacialBonusProperty = BindableProperty.Create( | ||||
|             nameof(RacialBonus), | ||||
|             typeof(int), | ||||
|             typeof(AbilityPickerView), | ||||
|             defaultValue: default(int)); | ||||
|         public int DispatchedRacialBonus | ||||
|         { | ||||
|             get { return (int)GetValue(DispatchedRacialBonusProperty); } | ||||
|             set { SetValue(DispatchedRacialBonusProperty, value); } | ||||
|         } | ||||
|         public static readonly BindableProperty DispatchedRacialBonusProperty = BindableProperty.Create( | ||||
|             nameof(DispatchedRacialBonus), | ||||
|             typeof(int), | ||||
|             typeof(AbilityPickerView), | ||||
|             defaultValue: default(int));*/ | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -206,20 +206,60 @@ | |||
|                 <Frame BorderColor="Black" Padding="2" Margin="10"> | ||||
|                     <ImageButton Source="rolling_dice_cup.png" Command="{Binding RollDicesCommand}" /> | ||||
|                 </Frame> | ||||
|                 <Frame BorderColor="Black" Padding="2" Margin="10"> | ||||
|                     <StackLayout> | ||||
|                     <Grid> | ||||
|                         <Grid.ColumnDefinitions> | ||||
|                             <ColumnDefinition Width="100" /> | ||||
|                             <ColumnDefinition Width="80" /> | ||||
|                             <ColumnDefinition Width="80" /> | ||||
|                             <ColumnDefinition Width="80" /> | ||||
|                             <ColumnDefinition Width="80" /> | ||||
|                         </Grid.ColumnDefinitions> | ||||
|                         <Label Grid.Column="1" Text="Base" /> | ||||
|                         <Label Grid.Column="2" Text="Bonus" /> | ||||
|                         <Label Grid.Column="3" Text="Valeur" /> | ||||
|                         <Label Grid.Column="4" Text="Mod" /> | ||||
|                     </Grid> | ||||
|                     <pickers:AbilityPickerView  | ||||
|                         BindingContext="{Binding}"  | ||||
|                         Title="Force"  | ||||
|                         Ability="{Binding SelectedPlayerCharacter.Abilities.Strength}"  | ||||
|                         /> | ||||
|                     <pickers:AbilityPickerView  | ||||
|                         BindingContext="{Binding}"  | ||||
|                         Title="Dextérité"  | ||||
|                         Ability="{Binding SelectedPlayerCharacter.Abilities.Dexterity}"  | ||||
|                         /> | ||||
|                     <pickers:AbilityPickerView  | ||||
|                         BindingContext="{Binding}"  | ||||
|                         Title="Constitution"  | ||||
|                         Ability="{Binding SelectedPlayerCharacter.Abilities.Constitution}"  | ||||
|                         /> | ||||
|                     <pickers:AbilityPickerView  | ||||
|                         BindingContext="{Binding}"  | ||||
|                         Title="Intelligence"  | ||||
|                         Ability="{Binding SelectedPlayerCharacter.Abilities.Intelligence}"  | ||||
|                         /> | ||||
|                     <pickers:AbilityPickerView  | ||||
|                         BindingContext="{Binding}"  | ||||
|                         Title="Sagesse"  | ||||
|                         Ability="{Binding SelectedPlayerCharacter.Abilities.Wisdom}"  | ||||
|                         /> | ||||
|                     <pickers:AbilityPickerView  | ||||
|                         BindingContext="{Binding}"  | ||||
|                         Title="Charisme"  | ||||
|                         Ability="{Binding SelectedPlayerCharacter.Abilities.Charisma}"  | ||||
|                         /> | ||||
|                     </StackLayout> | ||||
|                 </Frame> | ||||
| 
 | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Force" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Strength.BaseValue, Mode=TwoWay}" /> | ||||
|                 <Stepper></Stepper> | ||||
|                  | ||||
|                 <!--<pickers:StringPickerView BindingContext="{Binding}" Title="Force" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Strength.BaseValue, Mode=TwoWay}" /> | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Dextérité" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Dexterity.BaseValue, Mode=TwoWay}" /> | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Constitution" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Constitution.BaseValue, Mode=TwoWay}" /> | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Intelligence" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Intelligence.BaseValue, Mode=TwoWay}" /> | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Sagesse" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Wisdom.BaseValue, Mode=TwoWay}" /> | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Charisme" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Charisma.BaseValue, Mode=TwoWay}" /> | ||||
|                 <pickers:StringPickerView BindingContext="{Binding}" Title="Charisme" ItemsSource="{Binding Abilities}" SelectedItem="{Binding SelectedPlayerCharacter.Abilities.Charisma.BaseValue, Mode=TwoWay}" />--> | ||||
|             </StackLayout> | ||||
|         </ScrollView> | ||||
|     </ContentPage> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez