コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 public override void DrawGUIOverlay()
 {
     if (Find.CameraMap.CurrentZoom == CameraZoomRange.Closest)
     {
         GenWorldUI.DrawThingLabel(this, "Deactivated".Translate() + ": " + this.Label);
     }
 }
コード例 #5
0
 public override void DrawGUIOverlay()
 {
     if (
         (Find.CameraMap.CurrentZoom != CameraZoomRange.Closest) ||
         (this.markerName.Trim().Equals(""))
         )
     {
         return;
     }
     GenWorldUI.DrawThingLabel(this, this.markerName, Color.white);
 }
コード例 #6
0
 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]);
 }
コード例 #7
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));
        }
コード例 #8
0
        // 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;
            }
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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;
            }
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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;
        }
コード例 #14
0
        /// <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));
        }