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 List <WorldObject> WorldObjectsUnderMouse(Vector2 mousePos) { List <WorldObject> list = new List <WorldObject>(); ExpandableWorldObjectsUtility.GetExpandedWorldObjectUnderMouse(mousePos, list); float caravanDirectClickRadius = GenWorldUI.CaravanDirectClickRadius; GenWorldUI.clickedCaravans.Clear(); List <Caravan> caravans = Find.WorldObjects.Caravans; for (int i = 0; i < caravans.Count; i++) { Caravan caravan = caravans[i]; if (caravan.DistanceToMouse(mousePos) < caravanDirectClickRadius) { GenWorldUI.clickedCaravans.Add(caravan); } } GenWorldUI.clickedCaravans.SortBy((Caravan x) => x.DistanceToMouse(mousePos)); for (int j = 0; j < GenWorldUI.clickedCaravans.Count; j++) { if (!list.Contains(GenWorldUI.clickedCaravans[j])) { list.Add(GenWorldUI.clickedCaravans[j]); } } float dynamicallyDrawnObjectDirectClickRadius = GenWorldUI.DynamicallyDrawnObjectDirectClickRadius; GenWorldUI.clickedDynamicallyDrawnObjects.Clear(); List <WorldObject> allWorldObjects = Find.WorldObjects.AllWorldObjects; for (int k = 0; k < allWorldObjects.Count; k++) { WorldObject worldObject = allWorldObjects[k]; if (worldObject.def.useDynamicDrawer && worldObject.DistanceToMouse(mousePos) < dynamicallyDrawnObjectDirectClickRadius) { GenWorldUI.clickedDynamicallyDrawnObjects.Add(worldObject); } } GenWorldUI.clickedDynamicallyDrawnObjects.SortBy((WorldObject x) => x.DistanceToMouse(mousePos)); for (int l = 0; l < GenWorldUI.clickedDynamicallyDrawnObjects.Count; l++) { if (!list.Contains(GenWorldUI.clickedDynamicallyDrawnObjects[l])) { list.Add(GenWorldUI.clickedDynamicallyDrawnObjects[l]); } } int num = GenWorld.TileAt(mousePos, false); List <WorldObject> allWorldObjects2 = Find.WorldObjects.AllWorldObjects; for (int m = 0; m < allWorldObjects2.Count; m++) { if (allWorldObjects2[m].Tile == num && !list.Contains(allWorldObjects2[m])) { list.Add(allWorldObjects2[m]); } } float caravanWideClickRadius = GenWorldUI.CaravanWideClickRadius; GenWorldUI.clickedCaravans.Clear(); List <Caravan> caravans2 = Find.WorldObjects.Caravans; for (int n = 0; n < caravans2.Count; n++) { Caravan caravan2 = caravans2[n]; if (caravan2.DistanceToMouse(mousePos) < caravanWideClickRadius) { GenWorldUI.clickedCaravans.Add(caravan2); } } GenWorldUI.clickedCaravans.SortBy((Caravan x) => x.DistanceToMouse(mousePos)); for (int num2 = 0; num2 < GenWorldUI.clickedCaravans.Count; num2++) { if (!list.Contains(GenWorldUI.clickedCaravans[num2])) { list.Add(GenWorldUI.clickedCaravans[num2]); } } GenWorldUI.clickedCaravans.Clear(); return(list); }
internal float <> m__1(WorldObject x) { return(x.DistanceToMouse(this.mousePos)); }