public IList<CreatureDescriptor> ParseCreatureDatas()
{
HtmlDocument d = new HtmlDocument();
d.LoadHtml(File.ReadAllText("Data/creatures.html"));
var data = d.DocumentNode.SelectSingleNode("//table")
.Descendants("tr")
.Where(tr => tr.Elements("td").Count() > 1)
.Select(tr => tr.Elements("td").Skip(0).Select(td => td.InnerText.Trim()).ToList())
.ToArray();
var names = d.DocumentNode.SelectSingleNode("//table")
.Descendants("tr")
.First()
.Elements("th")
.Skip(1)
.Select(x => x.InnerText)
.ToArray();
return names.Select((x, i) =>
{
var res = new CreatureDescriptor(x);
foreach (var row in data)
{
res.GetType().GetProperty(CreatureDescriptor.ConvertToPopertyName(row[0]))
.SetValue(res, int.Parse(row[i + 1]));
}
return res;
}).ToArray();
}