Ejemplo n.º 1
0
        public static IEnumerable <WorldObject> MultiSelectableWorldObjectsInScreenRectDistinct(Rect rect)
        {
            List <WorldObject> allObjects = Find.WorldObjects.AllWorldObjects;

            for (int i = 0; i < allObjects.Count; i++)
            {
                if (!allObjects[i].NeverMultiSelect)
                {
                    if (!allObjects[i].HiddenBehindTerrainNow())
                    {
                        if (ExpandableWorldObjectsUtility.IsExpanded(allObjects[i]))
                        {
                            if (rect.Overlaps(ExpandableWorldObjectsUtility.ExpandedIconScreenRect(allObjects[i])))
                            {
                                yield return(allObjects[i]);
                            }
                        }
                        else if (rect.Contains(allObjects[i].ScreenPos()))
                        {
                            yield return(allObjects[i]);
                        }
                    }
                }
            }
            yield break;
        }
        public static IEnumerable <WorldObject> MultiSelectableWorldObjectsInScreenRectDistinct(Rect rect)
        {
            List <WorldObject> allObjects = Find.WorldObjects.AllWorldObjects;
            int i = 0;

            while (true)
            {
                if (i < allObjects.Count)
                {
                    if (!allObjects[i].NeverMultiSelect && !allObjects[i].HiddenBehindTerrainNow())
                    {
                        if (ExpandableWorldObjectsUtility.IsExpanded(allObjects[i]))
                        {
                            if (rect.Overlaps(ExpandableWorldObjectsUtility.ExpandedIconScreenRect(allObjects[i])))
                            {
                                yield return(allObjects[i]);

                                /*Error: Unable to find new state assignment for yield return*/;
                            }
                        }
                        else if (rect.Contains(allObjects[i].ScreenPos()))
                        {
                            break;
                        }
                    }
                    i++;
                    continue;
                }
                yield break;
            }
            yield return(allObjects[i]);

            /*Error: Unable to find new state assignment for yield return*/;
        }
Ejemplo n.º 3
0
        public static void GetExpandedWorldObjectUnderMouse(Vector2 mousePos, List <WorldObject> outList)
        {
            outList.Clear();
            Vector2 point = mousePos;

            point.y = (float)UI.screenHeight - point.y;
            List <WorldObject> allWorldObjects = Find.WorldObjects.AllWorldObjects;

            for (int i = 0; i < allWorldObjects.Count; i++)
            {
                WorldObject worldObject = allWorldObjects[i];
                if (ExpandableWorldObjectsUtility.IsExpanded(worldObject))
                {
                    if (ExpandableWorldObjectsUtility.ExpandedIconScreenRect(worldObject).Contains(point))
                    {
                        if (!worldObject.HiddenBehindTerrainNow())
                        {
                            outList.Add(worldObject);
                        }
                    }
                }
            }
            ExpandableWorldObjectsUtility.SortByExpandingIconPriority(outList);
            outList.Reverse();
        }