예제 #1
0
        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(),
            });
        }
예제 #2
0
        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,
            });
        }