mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-12-23 02:23:22 +00:00
Attributes
This commit is contained in:
parent
c7d5783b0b
commit
38fd06e8ca
3356 changed files with 661831 additions and 11695 deletions
|
|
@ -3,8 +3,10 @@ using AideDeJeu.ViewModels;
|
|||
using SQLite;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text.RegularExpressions;
|
||||
|
|
@ -343,19 +345,35 @@ namespace AideDeJeuLib
|
|||
return $"{Name} ({NewId})";
|
||||
}
|
||||
|
||||
public class Attribute
|
||||
{
|
||||
public Attribute(string key, string value)
|
||||
{
|
||||
Key = key;
|
||||
Value = value;
|
||||
}
|
||||
public string Key { get; set; }
|
||||
public string Value { get; set; }
|
||||
}
|
||||
[NotMapped]
|
||||
[IgnoreDataMember]
|
||||
public Dictionary<string, string> Attributes { get; set; } = new Dictionary<string, string>();
|
||||
public OrderedDictionary Attributes { get; set; } = new OrderedDictionary();
|
||||
|
||||
public Dictionary<string, KeyValuePair<string, string>> AttributesKeyValue
|
||||
public OrderedDictionary AttributesKeyValue
|
||||
{
|
||||
get
|
||||
{
|
||||
var keys = Attributes.Keys.Where(a => a.EndsWith("Key") && Attributes.Keys.Contains(a.Substring(0, a.Length - 3) + "Value")).Select(a => a.Substring(0, a.Length - 3)).ToList();
|
||||
var dico = new Dictionary<string, KeyValuePair<string, string>>();
|
||||
foreach (var key in keys)
|
||||
var dico = new OrderedDictionary();
|
||||
foreach (string akey in Attributes.Keys)
|
||||
{
|
||||
dico[key] = new KeyValuePair<string, string>(Attributes[key + "Key"], Attributes[key + "Value"]);
|
||||
if (akey.EndsWith("Key"))
|
||||
{
|
||||
var key = akey.Substring(0, akey.Length - 3);
|
||||
if (Attributes.Contains(key + "Value"))
|
||||
{
|
||||
dico[key] = new Attribute(Attributes[key + "Key"] as string, Attributes[key + "Value"] as string);
|
||||
}
|
||||
}
|
||||
}
|
||||
return dico;
|
||||
}
|
||||
|
|
@ -378,20 +396,35 @@ namespace AideDeJeuLib
|
|||
var deserializer = builder
|
||||
.WithNamingConvention(new PascalCaseNamingConvention())
|
||||
.Build();
|
||||
Attributes = deserializer.Deserialize<Dictionary<string, string>>(value);
|
||||
Attributes = deserializer.Deserialize<OrderedDictionary>(value);
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetAttribute(string name)
|
||||
{
|
||||
if (name != null)
|
||||
{
|
||||
var prop = this.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
|
||||
if (null != prop && prop.CanWrite)
|
||||
{
|
||||
prop.SetValue(this, null, null);
|
||||
}
|
||||
if (this.Attributes.Contains(name))
|
||||
{
|
||||
this.Attributes.Remove(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
public void SetAttribute(string name, string value)
|
||||
{
|
||||
var prop = this.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
|
||||
if (null != prop && prop.CanWrite)
|
||||
if (name != null && value != null)
|
||||
{
|
||||
prop.SetValue(this, prop.GetValue(this) + value, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.Attributes.ContainsKey(name))
|
||||
var prop = this.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
|
||||
if (null != prop && prop.CanWrite)
|
||||
{
|
||||
prop.SetValue(this, prop.GetValue(this) + value, null);
|
||||
}
|
||||
if (this.Attributes.Contains(name))
|
||||
{
|
||||
this.Attributes[name] += value;
|
||||
}
|
||||
|
|
@ -401,6 +434,15 @@ namespace AideDeJeuLib
|
|||
}
|
||||
}
|
||||
}
|
||||
public string GetAttribute(string name)
|
||||
{
|
||||
if (this.Attributes.Contains(name))
|
||||
{
|
||||
return this.Attributes[name].ToString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
[DataMember]
|
||||
public string Description { get; set; }
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ namespace AideDeJeuLib
|
|||
[DataMember]
|
||||
public string AnyAbilityBonus { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string AbilityScoreIncrease { get; set; }
|
||||
[DataMember]
|
||||
public string Age { get; set; }
|
||||
[DataMember]
|
||||
|
|
@ -37,17 +39,6 @@ namespace AideDeJeuLib
|
|||
public string Darkvision { get; set; }
|
||||
[DataMember]
|
||||
public string Languages { get; set; }
|
||||
[DataMember]
|
||||
public string AbilityScoreIncrease { get; set; }
|
||||
[DataMember]
|
||||
public string CelestialResistance { get; set; }
|
||||
[DataMember]
|
||||
public string DraconicAncestry { get; set; }
|
||||
[DataMember]
|
||||
public string BreathWeapon { get; set; }
|
||||
[DataMember]
|
||||
public string DamageResistance { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,20 +24,40 @@
|
|||
<StackLayout>
|
||||
<views:ItemPickerView BindingContext="{Binding}" Title="Race" ItemsSource="{Binding Races.Result}" SelectedItem="{Binding SelectedRace, Mode=TwoWay}" />
|
||||
<!--<Picker Title="Race" HorizontalOptions="FillAndExpand" IsEnabled="{Binding Races.IsSuccessfullyCompleted}" ItemsSource="{Binding Races.Result}" ItemDisplayBinding="{Binding Name}" SelectedIndex="{Binding RaceSelectedIndex, Mode=TwoWay}" />-->
|
||||
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Augmentation de caractéristiques" IsVisible="{Binding SelectedRace.AbilityScoreIncrease, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.AbilityScoreIncrease}" IsVisible="{Binding SelectedRace.AbilityScoreIncrease, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Âge" IsVisible="{Binding SelectedRace.Age, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Age}" IsVisible="{Binding SelectedRace.Age, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Alignement" IsVisible="{Binding SelectedRace.Alignment, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Alignment}" IsVisible="{Binding SelectedRace.Alignment, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Taille" IsVisible="{Binding SelectedRace.Size, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Size}" IsVisible="{Binding SelectedRace.Size, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Vitesse" IsVisible="{Binding SelectedRace.Speed, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Speed}" IsVisible="{Binding SelectedRace.Speed, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Vision dans le noir" IsVisible="{Binding SelectedRace.Darkvision, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Darkvision}" IsVisible="{Binding SelectedRace.Darkvision, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<StackLayout BindableLayout.ItemsSource="{Binding SelectedRace.AttributesKeyValue}">
|
||||
<BindableLayout.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackLayout Orientation="Horizontal">
|
||||
<Label Text="{Binding Key}" />
|
||||
<Label Text="{Binding Value.Key}" />
|
||||
<Label Text="{Binding Value.Value}" />
|
||||
<StackLayout>
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Value.Key, StringFormat='#### {0}'}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Value.Value}" />
|
||||
</StackLayout>
|
||||
</DataTemplate>
|
||||
</BindableLayout.ItemTemplate>
|
||||
</StackLayout>
|
||||
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Markdown}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="#### Langues" IsVisible="{Binding SelectedRace.Languages, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Languages}" IsVisible="{Binding SelectedRace.Languages, Converter={StaticResource NullToFalseConverter}, FallbackValue=False}" />
|
||||
|
||||
<!--<mdview:MarkdownView Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding SelectedRace.Markdown}" />-->
|
||||
</StackLayout>
|
||||
</ScrollView>
|
||||
</ContentPage>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue