public static void BeautyOnGUI() { if (!Find.PlaySettings.showBeauty) { return; } if (!Gen.MouseCell().InBounds() || Gen.MouseCell().Fogged()) { return; } BeautyDrawer.tempCountedThings.Clear(); BeautyUtility.FillBeautyRelevantCells(Gen.MouseCell()); for (int i = 0; i < BeautyUtility.beautyRelevantCells.Count; i++) { IntVec3 intVec = BeautyUtility.beautyRelevantCells[i]; float num = BeautyUtility.CellBeauty(intVec, BeautyDrawer.tempCountedThings); if (num != 0f) { Vector3 v = GenWorldUI.LabelDrawPosFor(intVec); GenWorldUI.DrawThingLabel(v, Mathf.RoundToInt(num).ToStringCached(), BeautyDrawer.BeautyColor(num)); } } Text.Font = GameFont.Medium; Rect rect = new Rect(Event.current.mousePosition.x + 19f, Event.current.mousePosition.y + 19f, 100f, 100f); float beauty = BeautyUtility.AverageBeautyPerceptible(Gen.MouseCell()); GUI.color = BeautyDrawer.BeautyColor(beauty); Widgets.Label(rect, beauty.ToString("F1")); GUI.color = Color.white; }
private GlobalTargetInfo CurrentTargetUnderMouse() { GlobalTargetInfo result; if (!this.IsTargeting) { result = GlobalTargetInfo.Invalid; } else { List <WorldObject> list = GenWorldUI.WorldObjectsUnderMouse(UI.MousePositionOnUI); if (list.Any <WorldObject>()) { result = list[0]; } else if (this.canTargetTiles) { int num = GenWorld.MouseTile(false); if (num >= 0) { result = new GlobalTargetInfo(num); } else { result = GlobalTargetInfo.Invalid; } } else { result = GlobalTargetInfo.Invalid; } } return(result); }
static void Postfix() { if (Multiplayer.Client == null || TickPatch.Simulating) { return; } foreach (var ping in Multiplayer.session.cursorAndPing.pings) { if (ping.mapId != -1) { continue; } if (Multiplayer.session.GetPlayerInfo(ping.player) is not { } player) { continue; } var tileCenter = GenWorldUI.WorldToUIPosition(Find.WorldGrid.GetTileCenter(ping.planetTile)); const float size = 30f; ping.DrawAt(tileCenter, player.color, size); } }
public override void DrawGUIOverlay() { if (Find.CameraMap.CurrentZoom == CameraZoomRange.Closest) { GenWorldUI.DrawThingLabel(this, "Deactivated".Translate() + ": " + this.Label); } }
public override void DrawGUIOverlay() { if ( (Find.CameraMap.CurrentZoom != CameraZoomRange.Closest) || (this.markerName.Trim().Equals("")) ) { return; } GenWorldUI.DrawThingLabel(this, this.markerName, Color.white); }
public bool IsTargetedNow(WorldObject o, List <WorldObject> worldObjectsUnderMouse = null) { if (!this.IsTargeting) { return(false); } if (worldObjectsUnderMouse == null) { worldObjectsUnderMouse = GenWorldUI.WorldObjectsUnderMouse(UI.MousePositionOnUI); } return(worldObjectsUnderMouse.Any <WorldObject>() && o == worldObjectsUnderMouse[0]); }
protected static void DrawGUIOverlay([NotNull] ThingStatus status, Vector3 drawPos) { if (Find.CameraMap.CurrentZoom != CameraZoomRange.Closest) { return; } drawPos.z -= 0.4f; var screenPos = Find.CameraMap.camera.WorldToScreenPoint(drawPos); screenPos.y = Screen.height - screenPos.y; GenWorldUI.DrawThingLabel(new Vector2(screenPos.x, screenPos.y), GenString.ToStringCached(status.Thing.stackCount), new Color(1f, 1f, 1f, 0.75f)); }
// Copied from DrawPawnGUIOverlay(), so we can have the overlay even without a story public override void DrawGUIOverlay() { if (!SpawnedInWorld || Find.FogGrid.IsFogged(Position) || health.Dead || Faction != Faction.OfColony) { return; } Vector3 vector = GenWorldUI.LabelDrawPosFor(this, -0.6f); //if (PawnUIOverlay.ShouldDrawOverlayOnMap(this)) { Text.Font = GameFont.Tiny; float num2 = Text.CalcSize(NameStringShort).x; if (num2 < 20f) { num2 = 20f; } Rect rect = new Rect(vector.x - num2 / 2f - 4f, vector.y, num2 + 8f, 12f); GUI.DrawTexture(rect, TexUI.GrayTextBG); if (stayHome) { Rect screenRect = rect.ContractedBy(1f); Widgets.FillableBar(screenRect, 1, StayHomeTex, BaseContent.ClearTex, false); } else if (health.summaryHealth.SummaryHealthPercent < 0.999f) { Rect screenRect = rect.ContractedBy(1f); Widgets.FillableBar(screenRect, health.summaryHealth.SummaryHealthPercent, PawnUIOverlay.HealthTex, BaseContent.ClearTex, false); } //if (!AIEnabled) //{ // Rect innerRect = rect.GetInnerRect(1f); // Widgets.FillableBar(innerRect, chipPower, PawnUIOverlay.HealthTex, false, BaseContent.ClearTex); //} GUI.color = PawnNameColorUtility.PawnNameColorOf(this); Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(new Rect(vector.x - num2 / 2f, vector.y - 2f, num2, 999f), NameStringShort); //if (!AIEnabled) //{ // Widgets.DrawLineHorizontal(new Vector2(vector.x - num2/2f, vector.y + 6f), num2); // y + 11f //} GUI.color = Color.white; Text.Anchor = TextAnchor.UpperLeft; } }
private int FindTileByScreenPos(Vector3 coords) { Find.WorldCameraDriver.JumpTo(coords); var uiPos = GenWorldUI.WorldToUIPosition(coords); var tileId = GenWorld.TileAt(uiPos); if (tileId == Tile.Invalid) { return(Tile.Invalid); } // just check that the tile isn't very far from the given coordinates var foundTileCoords = Find.WorldGrid.GetTileCenter(tileId); var dist = Vector3.Distance(foundTileCoords, coords); return(dist < _deltaVectorBig.magnitude ? tileId : Tile.Invalid); }
private GlobalTargetInfo CurrentTargetUnderMouse() { if (!IsTargeting) { return(GlobalTargetInfo.Invalid); } List <WorldObject> list = GenWorldUI.WorldObjectsUnderMouse(UI.MousePositionOnUI); if (list.Any()) { return(list[0]); } if (canTargetTiles) { int num = GenWorld.MouseTile(); if (num >= 0) { return(new GlobalTargetInfo(num)); } return(GlobalTargetInfo.Invalid); } return(GlobalTargetInfo.Invalid); }
public void DrawGUIOverlay() { if (!this.droid.SpawnedInWorld || Find.FogGrid.IsFogged(this.droid.Position)) { return; } Vector3 vector = GenWorldUI.LabelDrawPosFor(this.droid, -0.6f); float num = vector.y; if (DroidUIOverlay.ShouldDrawOverlayOnMap(this.droid)) { Text.Font = GameFont.Tiny; float num2 = Text.CalcSize(this.droid.Nickname).x; if (num2 < 20f) { num2 = 20f; } Rect rect = new Rect(vector.x - num2 / 2f - 4f, vector.y, num2 + 8f, 12f); GUI.DrawTexture(rect, TexUI.GrayTextBG); if (this.droid.health.summaryHealth.SummaryHealthPercent < 0.999f) { Rect screenRect = rect.ContractedBy(1f); Widgets.FillableBar(screenRect, this.droid.health.summaryHealth.SummaryHealthPercent, PawnUIOverlay.HealthTex, BaseContent.ClearTex, false); } GUI.color = PawnNameColorUtility.PawnNameColorOf(this.droid); Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(new Rect(vector.x - num2 / 2f, vector.y - 2f, num2, 999f), this.droid.Nickname); if (this.droid.playerController != null && this.droid.playerController.Drafted) { Widgets.DrawLineHorizontal(vector.x - num2 / 2f, vector.y + 11f, num2); } GUI.color = Color.white; Text.Anchor = TextAnchor.UpperLeft; num += 12f; } }
protected virtual GlobalTargetInfo CurrentTargetUnderMouse() { if (!IsTargeting) { return(GlobalTargetInfo.Invalid); } List <WorldObject> list = GenWorldUI.WorldObjectsUnderMouse(Verse.UI.MousePositionOnUI); if (list.Any()) { return(list[0]); } if (!canTargetTiles) { return(GlobalTargetInfo.Invalid); } int num = GenWorld.MouseTile(false); if (num >= 0) { return(new GlobalTargetInfo(num)); } return(GlobalTargetInfo.Invalid); }
private void DrawColonist(Rect rect, Pawn colonist) { float colonistRectAlpha = GetColonistRectAlpha(rect); bool colonistAlive = !colonist.Dead ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.corpse); Color color = new Color(1f, 1f, 1f, colonistRectAlpha); GUI.color = color; Color BGColor = new Color(); Need_Mood mood; if (!colonist.Dead) { mood = colonist.needs.mood; } else { mood = null; } MentalBreaker mb; if (!colonist.Dead) { mb = colonist.mindState.mentalBreaker; } else { mb = null; } if (ColBarSettings.UseMoodColors) { // draw mood border Rect moodBorderRect = new Rect(rect); switch (ColBarSettings.MoodBarPos) { case Alignment.Right: moodBorderRect.x = rect.xMax; moodBorderRect.width /= 4; break; case Alignment.Left: moodBorderRect.x = rect.xMin - rect.width / 4; moodBorderRect.width /= 4; break; case Alignment.Top: moodBorderRect.x = rect.xMin; moodBorderRect.y = rect.yMin - rect.height / 4; moodBorderRect.height /= 4; break; case Alignment.Bottom: moodBorderRect.x = rect.xMin; moodBorderRect.y = moodBorderRect.yMax + SpacingLabel; moodBorderRect.height /= 4; break; } if (mood != null && mb != null) { if (mood.CurLevelPercentage <= mb.BreakThresholdExtreme) { GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodNeutral); GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodExtremeCrossedTex); } else if (mood.CurLevelPercentage <= mb.BreakThresholdMajor) { GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodNeutral); GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodMajorCrossedTex); } else if (mood.CurLevelPercentage <= mb.BreakThresholdMinor) { GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodNeutral); GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodMinorCrossedTex); } else { GUI.DrawTexture(moodBorderRect, ColonistBarTextures.MoodNeutral); } } } if (ColBarSettings.UseGender) { if (colonist.gender == Gender.Male) { BGColor = ColBarSettings.MaleColor; } if (colonist.gender == Gender.Female) { BGColor = ColBarSettings.FemaleColor; } if (colonist.Dead) { BGColor = BGColor * Color.gray; } BGColor.a = colonistRectAlpha; GUI.color = BGColor; } GUI.DrawTexture(rect, ColBarSettings.UseGender ? ColonistBarTextures.BGTexGrey : ColonistBarTextures.BGTexVanilla); GUI.color = color; if (ColBarSettings.UseMoodColors) { // Rect moodRect = new Rect(rect.xMax, rect.y, rect.width/4, rect.height); Rect moodRect = rect.ContractedBy(2.0f); switch (ColBarSettings.MoodBarPos) { case Alignment.Right: moodRect.x = rect.xMax; moodRect.width /= 4; break; case Alignment.Left: moodRect.x = rect.xMin - rect.width / 4; moodRect.width /= 4; break; case Alignment.Top: moodRect.x = rect.xMin; moodRect.y = rect.yMin - rect.height / 4; moodRect.height /= 4; break; case Alignment.Bottom: moodRect.x = rect.xMin; moodRect.y = moodRect.yMax + SpacingLabel; moodRect.height /= 4; break; } if (mood != null && mb != null) { if (mood.CurLevelPercentage > mb.BreakThresholdMinor) { if (ColBarSettings.MoodBarPos == Alignment.Left || ColBarSettings.MoodBarPos == Alignment.Right) { GUI.DrawTexture(moodRect.BottomPart(mood.CurLevelPercentage), ColonistBarTextures.MoodTex); } else { GUI.DrawTexture(moodRect.LeftPart(mood.CurLevelPercentage), ColonistBarTextures.MoodTex); } } else if (mood.CurLevelPercentage > mb.BreakThresholdMajor) { if (ColBarSettings.MoodBarPos == Alignment.Left || ColBarSettings.MoodBarPos == Alignment.Right) { GUI.DrawTexture(moodRect.BottomPart(mood.CurLevelPercentage), ColonistBarTextures.MoodMinorCrossedTex); } else { GUI.DrawTexture(moodRect.LeftPart(mood.CurLevelPercentage), ColonistBarTextures.MoodMinorCrossedTex); } } else if (mood.CurLevelPercentage > mb.BreakThresholdExtreme) { if (ColBarSettings.MoodBarPos == Alignment.Left || ColBarSettings.MoodBarPos == Alignment.Right) { GUI.DrawTexture(moodRect.BottomPart(mood.CurLevelPercentage), ColonistBarTextures.MoodMajorCrossedTex); } else { GUI.DrawTexture(moodRect.LeftPart(mood.CurLevelPercentage), ColonistBarTextures.MoodMajorCrossedTex); } } else { GUI.DrawTexture(moodRect, ColonistBarTextures.MoodExtremeCrossedBGTex); if (ColBarSettings.MoodBarPos == Alignment.Left || ColBarSettings.MoodBarPos == Alignment.Right) { GUI.DrawTexture(moodRect.BottomPart(mood.CurLevelPercentage), ColonistBarTextures.MoodExtremeCrossedTex); } else { GUI.DrawTexture(moodRect.LeftPart(mood.CurLevelPercentage), ColonistBarTextures.MoodExtremeCrossedTex); } } DrawMentalThreshold(moodRect, mb.BreakThresholdExtreme, mood.CurLevelPercentage); DrawMentalThreshold(moodRect, mb.BreakThresholdMajor, mood.CurLevelPercentage); DrawMentalThreshold(moodRect, mb.BreakThresholdMinor, mood.CurLevelPercentage); switch (ColBarSettings.MoodBarPos) { case Alignment.Left: case Alignment.Right: GUI.DrawTexture(new Rect(moodRect.x, moodRect.yMax - moodRect.height * mood.CurInstantLevelPercentage, moodRect.width, 1), ColonistBarTextures.MoodTargetTex); GUI.DrawTexture(new Rect(moodRect.xMax + 1, moodRect.yMax - moodRect.height * mood.CurInstantLevelPercentage - 1, 2, 3), ColonistBarTextures.MoodTargetTex); break; case Alignment.Top: GUI.DrawTexture(new Rect(moodRect.x + moodRect.width * mood.CurInstantLevelPercentage, moodRect.y, 1, moodRect.height), ColonistBarTextures.MoodTargetTex); GUI.DrawTexture(new Rect(moodRect.x + moodRect.width * mood.CurInstantLevelPercentage - 1, moodRect.yMin - 1, 3, 2), ColonistBarTextures.MoodTargetTex); break; case Alignment.Bottom: GUI.DrawTexture(new Rect(moodRect.x + moodRect.width * mood.CurInstantLevelPercentage, moodRect.y, 1, moodRect.height), ColonistBarTextures.MoodTargetTex); GUI.DrawTexture(new Rect(moodRect.x + moodRect.width * mood.CurInstantLevelPercentage - 1, moodRect.yMax + 1, 3, 2), ColonistBarTextures.MoodTargetTex); break; } } } if (colonistAlive) { DrawSelectionOverlayOnGUI(colonist, rect.ContractedBy(-2f * Scale)); } GUI.DrawTexture(GetPawnTextureRect(rect.x, rect.y), PortraitsCache.Get(colonist, PawnTextureSize, PawnTextureCameraOffset, ColBarSettings.PawnTextureCameraZoom)); if (ColBarSettings.UseWeaponIcons) { DrawWeapon(rect, colonist); } GUI.color = new Color(1f, 1f, 1f, colonistRectAlpha * 0.8f); DrawIcons(rect, colonist); GUI.color = color; if (colonist.Dead) { GUI.DrawTexture(rect, ColonistBarTextures.DeadColonistTex); } // float num = 4f * Scale; Vector2 pos = new Vector2(rect.center.x, rect.yMax + 1f * Scale); GenWorldUI.DrawPawnLabel(colonist, pos, colonistRectAlpha, rect.width + SpacingHorizontal - 2f, pawnLabelsCache); GUI.color = Color.white; }
/// <summary> /// Get the position of a tile on the screen. /// </summary> /// <param name="tileId">The tile for which to get the position.</param> /// <returns>The position of the given tile on the screen.</returns> public static Vector2 ScreenPos(int tileId) { var tileCenter = Find.WorldGrid.GetTileCenter(tileId); return(GenWorldUI.WorldToUIPosition(tileCenter)); }