private void LoadOverlayBlocks(XmlNode node) { foreach (XmlNode overlayBlockNode in node.ChildNodes) { if (SkipNode(overlayBlockNode)) { continue; } LinkDefinition.LinkWrapper wrapper = new LinkDefinition.LinkWrapper(); if (overlayBlockNode.Name == "link") { LinkDefinition link = LinkDefinition.LoadLink(overlayBlockNode); wrapper.Link = link; } if (overlayBlockNode.Name == "conditional") { ConditionalDefinition conditional = ConditionalDefinition.LoadConditional(overlayBlockNode); wrapper.Conditional = conditional; } if (overlayBlockNode.Name == "artoverlay") { BlockDefinition b = SpecialBlockDefinition.LoadSectionDefinition(null, overlayBlockNode); wrapper.CardArtCrop = b; } OverlayBlocks.Add(wrapper); } }
private List <LinkDefinition> ResolveCase(Dictionary <string, string> values, XmlNode node, string property, out bool breakValue) { List <LinkDefinition> ret = new List <LinkDefinition>(); string value = null; string contains = null; breakValue = true; if (node.Attributes["value"] != null) { value = node.Attributes["value"].Value; } if (node.Attributes["contains"] != null) { contains = node.Attributes["contains"].Value; } if (node.Attributes["break"] != null) { breakValue = bool.Parse(node.Attributes["break"].Value); } if (value != null) { if (values.ContainsKey(property) && values[property] == value) { foreach (XmlNode subNode in node.ChildNodes) { if (TemplateDefinition.SkipNode(subNode)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(subNode); ret.Add(link); } } } if (contains != null) { if (values.ContainsKey(property) && values[property].Contains(contains)) { foreach (XmlNode subNode in node.ChildNodes) { if (TemplateDefinition.SkipNode(subNode)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(subNode); ret.Add(link); } } } return(ret); }
internal List <LinkDefinition> LoadLinksFromNode(XmlNode node) { List <LinkDefinition> ret = new List <LinkDefinition>(); foreach (XmlNode subNode in node.ChildNodes) { if (TemplateDefinition.SkipNode(subNode)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(subNode); ret.Add(link); } return(ret); }
internal List <LinkDefinition> ResolveSwitch(Dictionary <string, string> values) { List <LinkDefinition> ret = new List <LinkDefinition>(); string property = switchNode.Attributes["property"].Value; bool currentBreak = true; bool foundMatch = false; foreach (XmlNode childNode in switchNode.ChildNodes) { if (TemplateDefinition.SkipNode(childNode)) { continue; } if (childNode.Name == "case") { List <LinkDefinition> list = ResolveCase(values, childNode, property, out currentBreak); foundMatch = (list.Count > 0); ret.AddRange(list); } if ((!foundMatch || !currentBreak) && childNode.Name == "default") { foreach (XmlNode node in childNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } foundMatch = true; currentBreak = true; } if (foundMatch && currentBreak) { break; } } return(ret); }
private void LoadTextBlocks(XmlNode node) { foreach (XmlNode textBlocksNode in node.ChildNodes) { if (SkipNode(textBlocksNode)) { continue; } LinkDefinition.LinkWrapper wrapper = new LinkDefinition.LinkWrapper(); if (textBlocksNode.Name == "link") { LinkDefinition link = LinkDefinition.LoadLink(textBlocksNode); wrapper.Link = link; } if (textBlocksNode.Name == "conditional") { ConditionalDefinition conditional = ConditionalDefinition.LoadConditional(textBlocksNode); wrapper.Conditional = conditional; } TextBlocks.Add(wrapper); } }
internal List <LinkDefinition> ResolveIf(Dictionary <string, string> values) { List <LinkDefinition> ret = new List <LinkDefinition>(); string property = ifNode.Attributes["property"].Value; string value = null; string contains = null; bool loadElse = false; bool foundMatch = false; if (ifNode.Attributes["value"] != null) { value = ifNode.Attributes["value"].Value; } if (ifNode.Attributes["contains"] != null) { contains = ifNode.Attributes["contains"].Value; } if (value != null) { if (values.ContainsKey(property) && values[property] == value) { foreach (XmlNode node in ifNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } foundMatch = true; } else { if (elseifNodeList.Count == 0 && ret.Count == 0) { loadElse = true; } } } if (!foundMatch) { foreach (XmlNode elseIfNode in elseifNodeList) { string elseIfValue = null; if (elseIfNode.Attributes["value"] != null) { elseIfValue = elseIfNode.Attributes["value"].Value; } if (elseIfValue != null && !foundMatch) { if (values.ContainsKey(property) && values[property] == elseIfValue) { foreach (XmlNode node in elseIfNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } loadElse = false; foundMatch = true; } } } } if (value != null && loadElse) { if (elseNode != null) { foreach (XmlNode node in elseNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } } } if (foundMatch) { return(ret); } if (contains != null) { if (values.ContainsKey(property) && values[property].Contains(contains)) { foreach (XmlNode node in ifNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } foundMatch = true; } else { if (elseifNodeList.Count == 0 && ret.Count == 0) { loadElse = true; } } } if (!foundMatch) { foreach (XmlNode elseIfNode in elseifNodeList) { string elseIfContains = null; if (elseIfNode.Attributes["value"] != null) { elseIfContains = elseIfNode.Attributes["value"].Value; } if (elseIfContains != null && !foundMatch) { if (values.ContainsKey(property) && values[property].Contains(elseIfContains)) { foreach (XmlNode node in elseIfNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } loadElse = false; foundMatch = true; } } } } if (contains != null && loadElse) { if (elseNode != null) { foreach (XmlNode node in elseNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } } } return(ret); }
private List <LinkDefinition> IfValue(Dictionary <string, string> values, string property, string value, out bool foundMatch) { List <LinkDefinition> ret = new List <LinkDefinition>(); bool loadElse = false; foundMatch = false; if (value != null) { if (values.ContainsKey(property) && values[property] == value) { foreach (XmlNode node in ifNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } foundMatch = true; } else { if (elseifNodeList.Count == 0 && ret.Count == 0) { loadElse = true; } } if (value.Equals(NullConstant) && CheckNullConstant(values, property)) { foreach (XmlNode node in ifNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } foundMatch = true; loadElse = false; } } if (!foundMatch) { string elseIfProperty = property; foreach (XmlNode elseIfNode in elseifNodeList) { if (elseIfNode.Attributes["property"] != null) { elseIfProperty = elseIfNode.Attributes["property"].Value; } string elseIfValue = null; if (elseIfNode.Attributes["value"] != null) { elseIfValue = elseIfNode.Attributes["value"].Value; } if (elseIfValue != null && !foundMatch) { if (values.ContainsKey(elseIfProperty) && values[elseIfProperty] == elseIfValue) { foreach (XmlNode node in elseIfNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } loadElse = false; foundMatch = true; } if (value.Equals(NullConstant) && CheckNullConstant(values, elseIfProperty)) { foreach (XmlNode node in elseIfNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } foundMatch = true; loadElse = false; } } } } if (value != null && loadElse) { if (elseNode != null) { foreach (XmlNode node in elseNode.ChildNodes) { if (TemplateDefinition.SkipNode(node)) { continue; } LinkDefinition link = LinkDefinition.LoadLink(node); ret.Add(link); } } } return(ret); }