mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 15:06:06 +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>
|
||||
<pickers:AbilityPickerView
|
||||
BindingContext="{Binding}"
|
||||
Title="Force"
|
||||
Ability="{Binding SelectedPlayerCharacter.Abilities.Strength}"
|
||||
/>
|
||||
<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