public static Feat Parse(WikiPage page, WikiExport export, ILog log = null) { var feat = new Feat(); var parser = new FeatParser(feat, page, export); parser.Execute(log); return feat; }
public static bool TryParse(WikiPage page, WikiExport export, out Feat feat, ILog log = null) { feat = null; try { feat = Parse(page, export, log); return true; } catch (ParseException e) { log.Error("{0}: {1}", page.Title, e.Message); return false; } }
public void Should_Serialize_Prerequisites() { var feat = new Feat { Name = "Sample Feat", Benefit = "Sample Benefit", Description = "Sample Description", Id = "sample-feat", Normal = "Normal", Source = new ElementSource { Id = "sample-source", References = new List <ElementReference> { new ElementReference { HrefString = "http://example.com", Name = "Example" }, new ElementReference { HrefString = "http://example.com", Name = "Example" } } }, Special = "Special", Summary = "Summary", Types = new[] { FeatType.General, FeatType.Combat }, Prerequisites = new object[] { new FeatPrerequisite(), new FeatPrerequisiteChoice { Items = new[] { new FeatPrerequisite() } } } }; using (var writer = new StringWriter()) { serializer.Serialize(writer, feat); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(writer.ToString()); } }
public void Should_Serialize_Prerequisites() { var feat = new Feat { Name = "Sample Feat", Benefit = "Sample Benefit", Description = "Sample Description", Id = "sample-feat", Normal = "Normal", Source = new ElementSource { Id = "sample-source", References = new List<ElementReference> { new ElementReference { HrefString = "http://example.com", Name = "Example" }, new ElementReference { HrefString = "http://example.com", Name = "Example" } } }, Special = "Special", Summary = "Summary", Types = new[] { FeatType.General, FeatType.Combat }, Prerequisites = new object[] { new FeatPrerequisite(), new FeatPrerequisiteChoice { Items = new[] { new FeatPrerequisite() } } } }; using (var writer = new StringWriter()) { serializer.Serialize(writer, feat); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(writer.ToString()); } }
public FeatParser(Feat feat, WikiPage wikiPage, WikiExport export) { this.feat = feat; this.wikiPage = wikiPage; this.export = export; }
public bool RunOn(Feat feat) { if (feat.Prerequisites == null || feat.Prerequisites.Length == 0) { return true; } foreach (var item in feat.Prerequisites) { var prereq = item as FeatPrerequisite; if (prereq != null) { if (!this.ValidatePrereq(prereq)) { // Si au moins un des prerequis n'est pas satisfait c'est une erreur return false; } } else { var choice = item as FeatPrerequisiteChoice; if (choice != null) { var validated = false; foreach (var subPrereq in choice.Items) { if (this.ValidatePrereq(subPrereq)) { // On a satisfait au moins un prerequis, on s'arrête validated = true; break; } } if (!validated) { // Ca n'est pas satisfait si aucun des prerequis optionel n'est satisfait return false; } } } } return true; }
public FeatWrapper(Feat feat) { this.feat = feat; }