public IEnumerable <WorldObject> SelectableObjectsUnderMouse(out bool clickedDirectlyOnCaravan, out bool usedColonistBar)
        {
            Vector2 mousePositionOnUIInverted = UI.MousePositionOnUIInverted;

            if (Current.ProgramState == ProgramState.Playing)
            {
                Caravan caravan = Find.ColonistBar.CaravanMemberCaravanAt(mousePositionOnUIInverted);
                if (caravan != null)
                {
                    clickedDirectlyOnCaravan = true;
                    usedColonistBar          = true;
                    return(Gen.YieldSingle((WorldObject)caravan));
                }
            }
            List <WorldObject> list = GenWorldUI.WorldObjectsUnderMouse(UI.MousePositionOnUI);

            clickedDirectlyOnCaravan = false;
            if (list.Count > 0 && list[0] is Caravan && list[0].DistanceToMouse(UI.MousePositionOnUI) < GenWorldUI.CaravanDirectClickRadius)
            {
                clickedDirectlyOnCaravan = true;
                for (int num = list.Count - 1; num >= 0; num--)
                {
                    WorldObject worldObject = list[num];
                    if (worldObject is Caravan && worldObject.DistanceToMouse(UI.MousePositionOnUI) > GenWorldUI.CaravanDirectClickRadius)
                    {
                        list.Remove(worldObject);
                    }
                }
            }
            usedColonistBar = false;
            return(list);
        }
 public static void ExpandableWorldObjectsOnGUI()
 {
     if (TransitionPct != 0f)
     {
         tmpWorldObjects.Clear();
         tmpWorldObjects.AddRange(Find.WorldObjects.AllWorldObjects);
         SortByExpandingIconPriority(tmpWorldObjects);
         WorldTargeter      worldTargeter          = Find.WorldTargeter;
         List <WorldObject> worldObjectsUnderMouse = null;
         if (worldTargeter.IsTargeting)
         {
             worldObjectsUnderMouse = GenWorldUI.WorldObjectsUnderMouse(UI.MousePositionOnUI);
         }
         for (int i = 0; i < tmpWorldObjects.Count; i++)
         {
             WorldObject worldObject = tmpWorldObjects[i];
             if (worldObject.def.expandingIcon && !worldObject.HiddenBehindTerrainNow())
             {
                 Color expandingIconColor = worldObject.ExpandingIconColor;
                 expandingIconColor.a = TransitionPct;
                 if (worldTargeter.IsTargetedNow(worldObject, worldObjectsUnderMouse))
                 {
                     float num = GenMath.LerpDouble(-1f, 1f, 0.7f, 1f, Mathf.Sin(Time.time * 8f));
                     expandingIconColor.r *= num;
                     expandingIconColor.g *= num;
                     expandingIconColor.b *= num;
                 }
                 GUI.color = expandingIconColor;
                 GUI.DrawTexture(ExpandedIconScreenRect(worldObject), worldObject.ExpandingIcon);
             }
         }
         tmpWorldObjects.Clear();
         GUI.color = Color.white;
     }
 }
Пример #3
0
        public static List <FloatMenuOption> ChoicesAtFor(Vector2 mousePos, Caravan caravan)
        {
            List <FloatMenuOption> list  = new List <FloatMenuOption>();
            List <WorldObject>     list2 = GenWorldUI.WorldObjectsUnderMouse(mousePos);

            for (int i = 0; i < list2.Count; i++)
            {
                list.AddRange(list2[i].GetFloatMenuOptions(caravan));
            }
            return(list);
        }
        public static void ExpandableWorldObjectsOnGUI()
        {
            if (TransitionPct == 0f)
            {
                return;
            }
            tmpWorldObjects.Clear();
            tmpWorldObjects.AddRange(Find.WorldObjects.AllWorldObjects);
            SortByExpandingIconPriority(tmpWorldObjects);
            WorldTargeter      worldTargeter          = Find.WorldTargeter;
            List <WorldObject> worldObjectsUnderMouse = null;

            if (worldTargeter.IsTargeting)
            {
                worldObjectsUnderMouse = GenWorldUI.WorldObjectsUnderMouse(UI.MousePositionOnUI);
            }
            for (int i = 0; i < tmpWorldObjects.Count; i++)
            {
                try
                {
                    WorldObject worldObject = tmpWorldObjects[i];
                    if (worldObject.def.expandingIcon && !worldObject.HiddenBehindTerrainNow())
                    {
                        Color expandingIconColor = worldObject.ExpandingIconColor;
                        expandingIconColor.a = TransitionPct;
                        if (worldTargeter.IsTargetedNow(worldObject, worldObjectsUnderMouse))
                        {
                            float num = GenMath.LerpDouble(-1f, 1f, 0.7f, 1f, Mathf.Sin(Time.time * 8f));
                            expandingIconColor.r *= num;
                            expandingIconColor.g *= num;
                            expandingIconColor.b *= num;
                        }
                        GUI.color = expandingIconColor;
                        Rect rect = ExpandedIconScreenRect(worldObject);
                        if (worldObject.ExpandingIconFlipHorizontal)
                        {
                            rect.x      = rect.xMax;
                            rect.width *= -1f;
                        }
                        Widgets.DrawTextureRotated(rect, worldObject.ExpandingIcon, worldObject.ExpandingIconRotation);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error("Error while drawing " + tmpWorldObjects[i].ToStringSafe() + ": " + ex);
                }
            }
            tmpWorldObjects.Clear();
            GUI.color = Color.white;
        }