diff --git a/AideDeJeu/AideDeJeu/Models/Monsters/Monster.cs b/AideDeJeu/AideDeJeu/Models/Monsters/Monster.cs index 6fccd42e..960434be 100644 --- a/AideDeJeu/AideDeJeu/Models/Monsters/Monster.cs +++ b/AideDeJeu/AideDeJeu/Models/Monsters/Monster.cs @@ -6,7 +6,7 @@ using System.Xml; namespace AideDeJeuLib.Monsters { - public class Monster : Item + public abstract class Monster : Item { public string Type { get; set; } public string Size { get; set; } @@ -38,12 +38,5 @@ namespace AideDeJeuLib.Monsters public IEnumerable Reactions { get; set; } public IEnumerable LegendaryActions { get; set; } - public override string Markdown - { - get - { - return ""; - } - } } } diff --git a/AideDeJeu/AideDeJeu/Models/Monsters/MonsterHD.cs b/AideDeJeu/AideDeJeu/Models/Monsters/MonsterHD.cs new file mode 100644 index 00000000..7e5f7e11 --- /dev/null +++ b/AideDeJeu/AideDeJeu/Models/Monsters/MonsterHD.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AideDeJeuLib.Monsters +{ + public class MonsterHD : Monster + { + public override string Markdown + { + get + { + return + $"# {Name}\n" + + $"{NameVO}\n" + + $"{Type} de taille {Size}, {Alignment}\n" + + $"**Classe d'armure** {ArmorClass}\n" + + $"**Points de vie** {HitPoints}\n" + + $"**Vitesse** {Speed}\n\n" + + $"|FOR|DEX|CON|INT|SAG|CHA|\n" + + $"|---|---|---|---|---|---|\n" + + $"|{Strength}|{Dexterity}|{Constitution}|{Intelligence}|{Wisdom}|{Charisma}|\n\n" + + $"**Compétences** {Skills}\n" + + $"**Sens** {Senses}\n" + + $"**Langues** {Languages}\n" + + $"**Dangerosité** {Challenge}\n\n" + + (SpecialFeatures != null ? $"## Capacités\n\n" + SpecialFeatures.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") + + (Actions != null ? $"## Actions\n\n" + Actions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") + + (Reactions != null ? $"## Réactions\n\n" + Reactions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") + + (LegendaryActions != null ? $"## Actions Légendaires\n\n" + LegendaryActions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : ""); + + //public string Type { get; set; } + //public string Size { get; set; } + //public string Alignment { get; set; } + //public string Legendary { get; set; } + //public string Source { get; set; } + //public string ArmorClass { get; set; } + //public string HitPoints { get; set; } + //public string Speed { get; set; } + //public string Strength { get; set; } + //public string Dexterity { get; set; } + //public string Constitution { get; set; } + //public string Intelligence { get; set; } + //public string Wisdom { get; set; } + //public string Charisma { get; set; } + //public string SavingThrows { get; set; } + //public string Skills { get; set; } + //public string DamageVulnerabilities { get; set; } + //public string DamageImmunities { get; set; } + //public string ConditionImmunities { get; set; } + //public string DamageResistances { get; set; } + //public string Senses { get; set; } + //public string Languages { get; set; } + //public string Challenge { get; set; } + //public string Description { get; set; } + // return ""; + } + } + } +} \ No newline at end of file diff --git a/AideDeJeu/AideDeJeu/Models/Monsters/MonsterVO.cs b/AideDeJeu/AideDeJeu/Models/Monsters/MonsterVO.cs new file mode 100644 index 00000000..f8e3a29b --- /dev/null +++ b/AideDeJeu/AideDeJeu/Models/Monsters/MonsterVO.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AideDeJeuLib.Monsters +{ + public class MonsterVO : Monster + { + public override string Markdown + { + get + { + return + $"# {Name}\n" + + $"{NameVO}\n" + + $"{Size} {Type}, {Alignment}\n" + + $"**Armor Class** {ArmorClass}\n" + + $"**Hit Points** {HitPoints}\n" + + $"**Speed** {Speed}\n\n" + + $"|STR|DEX|CON|INT|WIS|CHA|\n" + + $"|---|---|---|---|---|---|\n" + + $"|{Strength}|{Dexterity}|{Constitution}|{Intelligence}|{Wisdom}|{Charisma}|\n\n" + + $"**Skills** {Skills}\n" + + $"**Senses** {Senses}\n" + + $"**Languages** {Languages}\n" + + $"**Challenge** {Challenge}\n\n" + + (SpecialFeatures != null ? $"## Special Features\n\n" + SpecialFeatures.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") + + (Actions != null ? $"## Actions\n\n" + Actions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") + + (Reactions != null ? $"## Reactions\n\n" + Reactions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") + + (LegendaryActions != null ? $"## Legendary Actions\n\n" + LegendaryActions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : ""); + + //public string Type { get; set; } + //public string Size { get; set; } + //public string Alignment { get; set; } + //public string Legendary { get; set; } + //public string Source { get; set; } + //public string ArmorClass { get; set; } + //public string HitPoints { get; set; } + //public string Speed { get; set; } + //public string Strength { get; set; } + //public string Dexterity { get; set; } + //public string Constitution { get; set; } + //public string Intelligence { get; set; } + //public string Wisdom { get; set; } + //public string Charisma { get; set; } + //public string SavingThrows { get; set; } + //public string Skills { get; set; } + //public string DamageVulnerabilities { get; set; } + //public string DamageImmunities { get; set; } + //public string ConditionImmunities { get; set; } + //public string DamageResistances { get; set; } + //public string Senses { get; set; } + //public string Languages { get; set; } + //public string Challenge { get; set; } + //public string Description { get; set; } + // return ""; + } + } + } +} diff --git a/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs b/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs index 8ce452a7..18f53b2c 100644 --- a/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs +++ b/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs @@ -21,11 +21,11 @@ namespace AideDeJeu.Tools return document.ToSpells(); } - public static IEnumerable MarkdownToMonsters(string md) + public static IEnumerable MarkdownToMonsters(string md) where TMonster : Monster, new() { var pipeline = new MarkdownPipelineBuilder().UsePipeTables().Build(); var document = Markdig.Parsers.MarkdownParser.Parse(md, pipeline); - return document.ToMonsters(); + return document.ToMonsters(); } public static string MarkdownToHtml(string md) @@ -200,10 +200,10 @@ namespace AideDeJeu.Tools return spells; } - public static IEnumerable ToMonsters(this Markdig.Syntax.MarkdownDocument document) + public static IEnumerable ToMonsters(this Markdig.Syntax.MarkdownDocument document) where TMonster : Monster, new() { - var monsters = new List(); - Monster monster = null; + var monsters = new List(); + TMonster monster = null; List features = null; List specialFeatures = null; List actions = null; @@ -233,7 +233,7 @@ namespace AideDeJeu.Tools monsters.Add(monster); //yield return monster; } - monster = new Monster(); + monster = new TMonster(); monster.Name = headingBlock.Inline.ToMarkdownString(); //Console.WriteLine(spell.Name); } diff --git a/AideDeJeu/AideDeJeu/ViewModels/ItemsViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/ItemsViewModel.cs index 8c864ffc..a2003b56 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/ItemsViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/ItemsViewModel.cs @@ -39,7 +39,7 @@ namespace AideDeJeu.ViewModels { resourceName = "AideDeJeu.Data.monsters_vo.md"; var md = await Tools.Helpers.GetResourceStringAsync(resourceName); - _AllItems = Tools.MarkdownExtensions.MarkdownToMonsters(md); + _AllItems = Tools.MarkdownExtensions.MarkdownToMonsters(md); } break; case ItemSourceType.MonsterHD: @@ -47,7 +47,7 @@ namespace AideDeJeu.ViewModels resourceName = "AideDeJeu.Data.monsters_hd.md"; //var md = await Tools.Helpers.GetStringFromUrl("https://raw.githubusercontent.com/Nioux/AideDeJeu/master/Data/monsters_hd.md"); var md = await Tools.Helpers.GetResourceStringAsync(resourceName); - _AllItems = Tools.MarkdownExtensions.MarkdownToMonsters(md); + _AllItems = Tools.MarkdownExtensions.MarkdownToMonsters(md); } break; case ItemSourceType.SpellVO: diff --git a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml index cbca83c4..4db697bb 100644 --- a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml @@ -16,10 +16,11 @@ - + + diff --git a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs index 52386db3..46686168 100644 --- a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs +++ b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs @@ -26,18 +26,19 @@ namespace AideDeJeu.Views BindingContext = this.viewModel = viewModel; - mdNameVO.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); - mdSpecialFeatures.NavigateToLink = async(s) => await viewModel.Main.NavigateToLink(s); - mdActions.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); - mdReactions.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); - mdLegendaryActions.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); + mdMarkdown.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); + //mdNameVO.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); + //mdSpecialFeatures.NavigateToLink = async(s) => await viewModel.Main.NavigateToLink(s); + //mdActions.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); + //mdReactions.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); + //mdLegendaryActions.NavigateToLink = async (s) => await viewModel.Main.NavigateToLink(s); } public MonsterDetailPage() { InitializeComponent(); - var item = new Monster + var item = new MonsterHD { Name = "", NameVO = "", diff --git a/AideDeJeu/AideDeJeuCmd/Program.cs b/AideDeJeu/AideDeJeuCmd/Program.cs index 64009895..65e5206c 100644 --- a/AideDeJeu/AideDeJeuCmd/Program.cs +++ b/AideDeJeu/AideDeJeuCmd/Program.cs @@ -48,7 +48,7 @@ namespace AideDeJeuCmd var document = Markdig.Parsers.MarkdownParser.Parse(md, pipeline); //DumpMarkdownDocument(document); - var monsters = document.ToMonsters(); + var monsters = document.ToMonsters(); document.Dump(); Console.WriteLine("ok"); //var md2 = monsters.ToMarkdownString();