static public ISquadronUI AsSquadronUI(this UINodeInfoInTree squadronUINode) { if (!(squadronUINode?.VisibleIncludingInheritance ?? false)) { return(null); } return(new SquadronUI(squadronUINode?.AsUIElementIfVisible()) { SetAbilityIcon = squadronUINode?.MatchingNodesFromSubtreeBreadthFirst(node => node.PyObjTypNameMatchesRegexPatternIgnoreCase(AbilityIconPyTypeName)) ?.Select(AsSquadronAbilityIcon)?.WhereNotDefault()?.OrderByCenterVerticalDown()?.ToArrayIfNotEmpty(), Squadron = squadronUINode?.FirstMatchingNodeFromSubtreeBreadthFirst(node => (node?.VisibleIncludingInheritance ?? false) && node.PyObjTypNameMatchesRegexPatternIgnoreCase("SquadronCont"))?.AsSquadronContainer(), }); }
static public ISquadronAbilityIcon AsSquadronAbilityIcon(this UINodeInfoInTree squadronAbilityIconNode) { if (!(squadronAbilityIconNode?.VisibleIncludingInheritance ?? false)) { return(null); } var quantityLabel = squadronAbilityIconNode ?.FirstMatchingNodeFromSubtreeBreadthFirst(node => node.PyObjTypNameIsContainer() && (node.Name?.RegexMatchSuccessIgnoreCase("quantityParent") ?? false)) ?.LargestLabelInSubtree(); return(new SquadronAbilityIcon(squadronAbilityIconNode.AsUIElementIfVisible().WithRegionSizeBoundedMaxPivotAtCenter(new Vektor2DInt(26, 26))) { Quantity = quantityLabel?.LabelText()?.Trim()?.TryParseInt(), RampActive = squadronAbilityIconNode?.RampActive, }); }