1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 06:56:10 +00:00

Spécialisation Monster VO/HD

This commit is contained in:
Yan Maniez 2018-07-01 22:51:34 +02:00
parent 4274033d16
commit 8dfdc06710
8 changed files with 143 additions and 26 deletions

View file

@ -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<string> Reactions { get; set; }
public IEnumerable<string> LegendaryActions { get; set; }
public override string Markdown
{
get
{
return "";
}
}
}
}

View file

@ -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 "";
}
}
}
}

View file

@ -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 "";
}
}
}
}

View file

@ -21,11 +21,11 @@ namespace AideDeJeu.Tools
return document.ToSpells<TSpell>();
}
public static IEnumerable<Monster> MarkdownToMonsters(string md)
public static IEnumerable<Monster> MarkdownToMonsters<TMonster>(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<TMonster>();
}
public static string MarkdownToHtml(string md)
@ -200,10 +200,10 @@ namespace AideDeJeu.Tools
return spells;
}
public static IEnumerable<Monster> ToMonsters(this Markdig.Syntax.MarkdownDocument document)
public static IEnumerable<TMonster> ToMonsters<TMonster>(this Markdig.Syntax.MarkdownDocument document) where TMonster : Monster, new()
{
var monsters = new List<Monster>();
Monster monster = null;
var monsters = new List<TMonster>();
TMonster monster = null;
List<string> features = null;
List<string> specialFeatures = null;
List<string> 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);
}

View file

@ -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<MonsterVO>(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<MonsterHD>(md);
}
break;
case ItemSourceType.SpellVO:

View file

@ -16,10 +16,11 @@
<ScrollView Orientation="Vertical" BackgroundColor="#fdf1dc">
<StackLayout Orientation="Vertical" Padding="15">
<skia:SKCanvasView PaintSurface="PaintHeaderBar" HorizontalOptions="FillAndExpand" HeightRequest="8" />
<mdview:MarkdownView x:Name="mdMarkdown" Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Item.Markdown}" />
<!--<skia:SKCanvasView PaintSurface="PaintHeaderBar" HorizontalOptions="FillAndExpand" HeightRequest="8" />
<Label Text="{Binding Item.Name}" Style="{StaticResource Key=subsection}" />
<mdview:MarkdownView x:Name="mdNameVO" Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Item.NameVO}" />
<mdview:MarkdownView x:Name="mdNameVO" Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Item.Markdown}" />
<Label FormattedText="{Binding TypeSizeAlignment}" />
@ -88,7 +89,7 @@
<Label Text="{Binding Item.Description}" Style="{StaticResource Key=content}" />
<Label Text="{Binding Item.Legendary}" Style="{StaticResource Key=content}" />
<Label Text="{Binding Item.Source}" Style="{StaticResource Key=content}" />
<Label Text="{Binding Item.Source}" Style="{StaticResource Key=content}" />-->
</StackLayout>
</ScrollView>

View file

@ -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 = "",

View file

@ -48,7 +48,7 @@ namespace AideDeJeuCmd
var document = Markdig.Parsers.MarkdownParser.Parse(md, pipeline);
//DumpMarkdownDocument(document);
var monsters = document.ToMonsters();
var monsters = document.ToMonsters<MonsterHD>();
document.Dump();
Console.WriteLine("ok");
//var md2 = monsters.ToMarkdownString();