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; } }
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; }