private Profile.Gear GetGear() { var gear = new Profile.Gear(); var cdata = _document.DescendantNodes().FirstOrDefault(node => node.NodeType == XmlNodeType.CDATA && node.Parent?.Attribute("Name")?.Value == "GearSetChange"); if (cdata == null) { return(gear); } var patterns = new [] { @"var index = (\d+);", //1.5.2+ @"ChangeGearset\((\d+)\)" //1.5.0 - 1.5.1 }; foreach (var pattern in patterns) { var match = new Regex(pattern).Match(cdata.ToString()); if (match.Success && Int32.TryParse(match.Groups[1].Value, out var number)) { gear.GearSet = number; gear.Enabled = true; return(gear); } } throw new ParsingException("Could not parse gearset"); }
private Profile.Gear GetGearSetChange() { var xGearSetChangeElements = this._xRoot.DescendantNodes().Where(n => n.NodeType == XmlNodeType.CDATA && n.Parent.Name == "CodeChunk" && n.Parent.Attribute("Name").Value == "GearSetChange"); var gearSet = new Profile.Gear(); if (xGearSetChangeElements.Any()) { string cdata = xGearSetChangeElements.First().ToString(); var match = new Regex("ff14bot\\.Managers\\.ChatManager\\.SendChat\\(\"\\/gs change (\\d+)").Match(cdata); if (match.Success) { int gearSetNr; if (Int32.TryParse(match.Groups[1].Value, out gearSetNr)) { gearSet.Enabled = true; gearSet.GearSet = gearSetNr; return(gearSet); } else { this._errorMessages.add("The profile appears to have a specified gearset but the parsing failed. Gear change: disabled."); return(gearSet); } } } return(gearSet); }