public override void Draw() { if (!this.HiddenBehindTerrainNow()) { float averageTileSize = Find.WorldGrid.averageTileSize; float transitionPct = ExpandableWorldObjectsUtility.TransitionPct; if (transitionSize < 1) { transitionSize += TransitionTakeoff * (int)Find.TickManager.CurTimeSpeed; } float drawPct = (1 + (transitionPct * Find.WorldCameraDriver.AltitudePercent * ExpandingResize)) * transitionSize; if (directionFacing == default) { InitializeFacing(); } bool rotateTexture = vehicle.CompVehicleLauncher.Props.faceDirectionOfTravel; if (transitionPct <= 0) { Vector3 normalized = DrawPos.normalized; Vector3 direction = Vector3.Cross(normalized, rotateTexture ? directionFacing : Vector3.down); Quaternion quat = Quaternion.LookRotation(direction, normalized) * Quaternion.Euler(0f, 90f, 0f); Vector3 s = new Vector3(averageTileSize * 0.7f * drawPct, 1, averageTileSize * 0.7f * drawPct); Matrix4x4 matrix = default; matrix.SetTRS(DrawPos + normalized * TransitionTakeoff, quat, s); int layer = WorldCameraManager.WorldLayer; Graphics.DrawMesh(MeshPool.plane10, matrix, VehicleMat, layer); } else { Rect rect = ExpandableWorldObjectsUtility.ExpandedIconScreenRect(this); if (ExpandingIconFlipHorizontal) { rect.x = rect.xMax; rect.width *= -1f; } if (Event.current.type != EventType.Repaint) { return; } Matrix4x4 matrix = GUI.matrix; if (rotateTexture) { Verse.UI.RotateAroundPivot(Quaternion.LookRotation(Find.WorldGrid.GetTileCenter(flightPath.First.tile) - position).eulerAngles.y, rect.center); } GenUI.DrawTextureWithMaterial(rect, VehicleTex.VehicleTexture(vehicle.VehicleDef, Rot8.North), VehicleMatLit); GUI.matrix = matrix; } } }
public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth) { Text.Font = GameFont.Tiny; Rect rect = new Rect(topLeft.x, topLeft.y, this.GetWidth(maxWidth), GizmoSize); bool flag = false; if (Mouse.IsOver(rect)) { flag = true; if (!this.disabled) { GUI.color = GenUI.MouseoverColor; } } Texture2D badTex = this.icon; if (badTex == null) { badTex = BaseContent.BadTex; } Material material = (!this.disabled) ? null : TexUI.GrayscaleGUI; GenUI.DrawTextureWithMaterial(rect, Command.BGTex, material, default(Rect)); MouseoverSounds.DoRegion(rect, SoundDefOf.Mouseover_Command); Rect outerRect = rect; outerRect.position += new Vector2(this.iconOffset.x * outerRect.size.x, this.iconOffset.y * outerRect.size.y); GUI.color = this.IconDrawColor; Widgets.DrawTextureFitted(outerRect, badTex, this.iconDrawScale * 0.85f, this.iconProportions, this.iconTexCoords, this.iconAngle, material); GUI.color = Color.white; bool flag2 = false; KeyCode keyCode = (this.hotKey != null) ? this.hotKey.MainKey : KeyCode.None; if (keyCode != KeyCode.None && !GizmoGridDrawer.drawnHotKeys.Contains(keyCode)) { Rect rect2 = new Rect(rect.x + 5f, rect.y + 5f, rect.width - 10f, 18f); Widgets.Label(rect2, keyCode.ToStringReadable()); GizmoGridDrawer.drawnHotKeys.Add(keyCode); if (this.hotKey.KeyDownEvent) { flag2 = true; Event.current.Use(); } } if (Widgets.ButtonInvisible(rect, false)) { flag2 = true; } string labelCap = this.LabelCap; if (!labelCap.NullOrEmpty()) { float num = Text.CalcHeight(labelCap, rect.width); Rect rect3 = new Rect(rect.x, rect.yMax - num + 12f, rect.width, num); GUI.DrawTexture(rect3, TexUI.GrayTextBG); GUI.color = Color.white; Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(rect3, labelCap); Text.Anchor = TextAnchor.UpperLeft; GUI.color = Color.white; } GUI.color = Color.white; if (this.DoTooltip) { TipSignal tip = this.Desc; if (this.disabled && !this.disabledReason.NullOrEmpty()) { string text = tip.text; tip.text = string.Concat(new string[] { text, "\n\n", "DisabledCommand".Translate(), ": ", this.disabledReason }); } TooltipHandler.TipRegion(rect, tip); } if (this.cannon.cooldownTicks > 0) { float percent = (float)this.cannon.cooldownTicks / (float)this.cannon.MaxTicks; SPExtended.VerticalFillableBar(rect, percent, FillableBar, ClearBar); } if (!this.HighlightTag.NullOrEmpty() && (Find.WindowStack.FloatMenu == null || !Find.WindowStack.FloatMenu.windowRect.Overlaps(rect))) { UIHighlighter.HighlightOpportunity(rect, this.HighlightTag); } Text.Font = GameFont.Small; if (flag2) { if (this.disabled) { if (!this.disabledReason.NullOrEmpty()) { Messages.Message(this.disabledReason, MessageTypeDefOf.RejectInput, false); } return(new GizmoResult(GizmoState.Mouseover, null)); } if (!TutorSystem.AllowAction(this.TutorTagSelect)) { return(new GizmoResult(GizmoState.Mouseover, null)); } var result = new GizmoResult(GizmoState.Interacted, Event.current); TutorSystem.Notify_Event(this.TutorTagSelect); return(result); } if (flag) { return(new GizmoResult(GizmoState.Mouseover, null)); } return(new GizmoResult(GizmoState.Clear, null)); }
public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth) { Text.Font = GameFont.Tiny; Rect rect = new Rect(topLeft.x, topLeft.y, GetWidth(maxWidth), GizmoSize); bool flag = false; Rect gizmoRect = new Rect(rect.x + 3.5f, rect.y, rect.width / 2, rect.height).ContractedBy(7); Texture2D badTex = icon; if (badTex == null) { badTex = BaseContent.BadTex; } var gizmoColor = GUI.color; var ammoColor = GUI.color; var reloadColor = GUI.color; Material material = (!disabled) ? null : TexUI.GrayscaleGUI; GenUI.DrawTextureWithMaterial(rect, AmmoBG, material, default); Rect ammoRect = new Rect(gizmoRect.x + gizmoRect.width + 7, gizmoRect.y, gizmoRect.width, (gizmoRect.height / 2) - 3.5f); Rect reloadRect = new Rect(gizmoRect.x + gizmoRect.width + 7, ammoRect.y + ammoRect.height + 7, gizmoRect.width, (gizmoRect.height / 2) - 3.5f); MouseoverSounds.DoRegion(gizmoRect, SoundDefOf.Mouseover_Command); MouseoverSounds.DoRegion(ammoRect, SoundDefOf.Mouseover_Command); MouseoverSounds.DoRegion(reloadRect, SoundDefOf.Mouseover_Command); if (Mouse.IsOver(gizmoRect)) { flag = true; if (!disabled) { GUI.color = GenUI.MouseoverColor; } } GenUI.DrawTextureWithMaterial(gizmoRect, BGTex, material, default); GUI.color = gizmoColor; if (cannon.cannonDef.ammoAllowed?.Any() ?? false) { if (Mouse.IsOver(ammoRect)) { flag = true; if (!disabled) { GUI.color = GenUI.MouseoverColor; } } GenUI.DrawTextureWithMaterial(ammoRect, BGTex, material, default); GUI.color = ammoColor; if (Mouse.IsOver(reloadRect)) { flag = true; if (!disabled) { GUI.color = GenUI.MouseoverColor; } } GenUI.DrawTextureWithMaterial(reloadRect, BGTex, material, default); GUI.color = reloadColor; Rect reloadLabel = new Rect(reloadRect.x + 10, reloadRect.y + reloadRect.height / 4, reloadRect.width - 10, reloadRect.height / 1.5f); Widgets.Label(reloadLabel, "Extract".Translate()); } GUI.color = IconDrawColor; Widgets.DrawTextureFitted(gizmoRect, badTex, iconDrawScale * 0.85f, iconProportions, iconTexCoords, iconAngle, material); GUI.color = Color.white; bool flag2 = false; bool flag3 = false; bool flag4 = false; KeyCode keyCode = (hotKey != null) ? hotKey.MainKey : KeyCode.None; if (keyCode != KeyCode.None && !GizmoGridDrawer.drawnHotKeys.Contains(keyCode)) { Rect rect2 = new Rect(rect.x + 5f, rect.y + 5f, rect.width - 10f, 18f); Widgets.Label(rect2, keyCode.ToStringReadable()); GizmoGridDrawer.drawnHotKeys.Add(keyCode); if (hotKey.KeyDownEvent) { flag2 = true; Event.current.Use(); } } if (Widgets.ButtonInvisible(gizmoRect, false)) { flag2 = true; } if (Widgets.ButtonInvisible(ammoRect, false)) { flag3 = true; } if (Widgets.ButtonInvisible(reloadRect, false)) { flag4 = false; } string labelCap = LabelCap; if (!labelCap.NullOrEmpty()) { float num = Text.CalcHeight(labelCap, rect.width); Rect rect3 = new Rect(rect.x, rect.yMax - num + 12f, rect.width, num); GUI.DrawTexture(rect3, TexUI.GrayTextBG); GUI.color = Color.white; Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(rect3, labelCap); Text.Anchor = TextAnchor.UpperLeft; GUI.color = Color.white; } GUI.color = Color.white; if (DoTooltip) { TipSignal tip = Desc; if (disabled && !disabledReason.NullOrEmpty()) { string text = tip.text; tip.text = string.Concat(new string[] { text, "\n\n", "DisabledCommand".Translate(), ": ", disabledReason }); } TooltipHandler.TipRegion(gizmoRect, tip); } if (cannon.cooldownTicks > 0) { float percent = cannon.cooldownTicks / (float)cannon.MaxTicks; SPExtra.VerticalFillableBar(gizmoRect, percent, FillableBar, ClearBar); } if (!HighlightTag.NullOrEmpty() && (Find.WindowStack.FloatMenu == null || !Find.WindowStack.FloatMenu.windowRect.Overlaps(gizmoRect))) { UIHighlighter.HighlightOpportunity(gizmoRect, HighlightTag); } Text.Font = GameFont.Small; if (flag2) { if (disabled) { if (!disabledReason.NullOrEmpty()) { Messages.Message(disabledReason, MessageTypeDefOf.RejectInput, false); } return(new GizmoResult(GizmoState.Mouseover, null)); } if (!TutorSystem.AllowAction(TutorTagSelect)) { return(new GizmoResult(GizmoState.Mouseover, null)); } var result = new GizmoResult(GizmoState.Interacted, Event.current); TutorSystem.Notify_Event(TutorTagSelect); return(result); } if (flag3) { //Change later cannon.ReloadCannon(cannon.pawn.inventory.innerContainer.FirstOrDefault(x => cannon.cannonDef.ammoAllowed.Contains(x.def)).def); } if (flag4) { cannon.TryRemoveShell(); } if (flag) { return(new GizmoResult(GizmoState.Mouseover, null)); } return(new GizmoResult(GizmoState.Clear, null)); }
// copy paste from Command.GizmoOnGUI public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth) { Text.Font = GameFont.Tiny; Rect rect = new Rect(topLeft.x, topLeft.y, GetWidth(maxWidth), 75f); bool flag = false; if (Mouse.IsOver(rect)) { flag = true; if (!disabled) { GUI.color = GenUI.MouseoverColor; } } Material material = (!disabled) ? null : TexUI.GrayscaleGUI; GenUI.DrawTextureWithMaterial(rect, BGTex, material); MouseoverSounds.DoRegion(rect, SoundDefOf.Mouseover_Command); // BEGIN EDIT GUI.color = IconDrawColor; DrawToolbarIcon(rect); // END EDIT GUI.color = UnityEngine.Color.white; bool flag2 = false; KeyCode keyCode = (hotKey != null) ? hotKey.MainKey : KeyCode.None; if (keyCode != 0 && !GizmoGridDrawer.drawnHotKeys.Contains(keyCode)) { Rect rect2 = new Rect(rect.x + 5f, rect.y + 5f, rect.width - 10f, 18f); Widgets.Label(rect2, keyCode.ToStringReadable()); GizmoGridDrawer.drawnHotKeys.Add(keyCode); if (hotKey.KeyDownEvent) { flag2 = true; Event.current.Use(); } } if (Widgets.ButtonInvisible(rect)) { flag2 = true; } string labelCap = LabelCap; if (!labelCap.NullOrEmpty()) { float num = Text.CalcHeight(labelCap, rect.width); Rect rect3 = new Rect(rect.x, rect.yMax - num + 12f, rect.width, num); GUI.DrawTexture(rect3, TexUI.GrayTextBG); GUI.color = UnityEngine.Color.white; Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(rect3, labelCap); Text.Anchor = TextAnchor.UpperLeft; GUI.color = UnityEngine.Color.white; } GUI.color = UnityEngine.Color.white; if (DoTooltip) { TipSignal tip = Desc; if (disabled && !disabledReason.NullOrEmpty()) { string text = tip.text; tip.text = text + "\n\n" + "DisabledCommand".Translate() + ": " + disabledReason; } TooltipHandler.TipRegion(rect, tip); } if (!HighlightTag.NullOrEmpty() && (Find.WindowStack.FloatMenu == null || !Find.WindowStack.FloatMenu.windowRect.Overlaps(rect))) { UIHighlighter.HighlightOpportunity(rect, HighlightTag); } Text.Font = GameFont.Small; if (flag2) { if (disabled) { if (!disabledReason.NullOrEmpty()) { Messages.Message(disabledReason, MessageTypeDefOf.RejectInput, false); } return(new GizmoResult(GizmoState.Mouseover, null)); } GizmoResult result; if (Event.current.button == 1) { result = new GizmoResult(GizmoState.OpenedFloatMenu, Event.current); } else { if (!TutorSystem.AllowAction(TutorTagSelect)) { return(new GizmoResult(GizmoState.Mouseover, null)); } result = new GizmoResult(GizmoState.Interacted, Event.current); TutorSystem.Notify_Event(TutorTagSelect); } return(result); } if (flag) { return(new GizmoResult(GizmoState.Mouseover, null)); } return(new GizmoResult(GizmoState.Clear, null)); }
// copy paste from Command.GizmoOnGUI public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth) { Text.Font = GameFont.Tiny; Rect rect = new Rect(topLeft.x, topLeft.y, GetWidth(maxWidth), 75f); bool flag = false; if (Mouse.IsOver(rect)) { flag = true; if (!disabled) { GUI.color = GenUI.MouseoverColor; } } Texture2D badTex = icon; if (badTex == null) { badTex = BaseContent.BadTex; } Material material = (!disabled) ? null : TexUI.GrayscaleGUI; GenUI.DrawTextureWithMaterial(rect, BGTex, material); MouseoverSounds.DoRegion(rect, SoundDefOf.Mouseover_Command); Rect outerRect = rect; Vector2 position = outerRect.position; float x = iconOffset.x; Vector2 size = outerRect.size; float x2 = x * size.x; float y = iconOffset.y; Vector2 size2 = outerRect.size; outerRect.position = position + new Vector2(x2, y * size2.y); GUI.color = IconDrawColor; // BEGIN EDIT //Widgets.DrawTextureFitted(outerRect, badTex, iconDrawScale * 0.85f, iconProportions, iconTexCoords, iconAngle, material); { Rect positionColor = new Rect(0f, 0f, iconProportions.x, iconProportions.y); float num; if (positionColor.width / positionColor.height < rect.width / rect.height) { num = rect.height / positionColor.height; } else { num = rect.width / positionColor.width; } num *= iconDrawScale * 0.85f; positionColor.width *= num; positionColor.height *= num; positionColor.x = rect.x + rect.width / 2f - positionColor.width / 2f; positionColor.y = rect.y + rect.height / 2f - positionColor.height / 2f; Widgets.DrawBoxSolid(positionColor, PlanColorManager.PlanColor[Color]); Widgets.DrawTextureFitted(outerRect, MorePlanningMod.Instance.SelectedColor == Color ? Resources.ToolBoxColorSelected : Resources.ToolBoxColor, iconDrawScale * 0.85f, iconProportions, iconTexCoords); } // END EDIT GUI.color = UnityEngine.Color.white; bool flag2 = false; KeyCode keyCode = (hotKey != null) ? hotKey.MainKey : KeyCode.None; if (keyCode != 0 && !GizmoGridDrawer.drawnHotKeys.Contains(keyCode)) { Rect rect2 = new Rect(rect.x + 5f, rect.y + 5f, rect.width - 10f, 18f); Widgets.Label(rect2, keyCode.ToStringReadable()); GizmoGridDrawer.drawnHotKeys.Add(keyCode); if (hotKey.KeyDownEvent) { flag2 = true; Event.current.Use(); } } if (Widgets.ButtonInvisible(rect)) { flag2 = true; } string labelCap = LabelCap; if (!labelCap.NullOrEmpty()) { float num = Text.CalcHeight(labelCap, rect.width); Rect rect3 = new Rect(rect.x, rect.yMax - num + 12f, rect.width, num); GUI.DrawTexture(rect3, TexUI.GrayTextBG); GUI.color = UnityEngine.Color.white; Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(rect3, labelCap); Text.Anchor = TextAnchor.UpperLeft; GUI.color = UnityEngine.Color.white; } GUI.color = UnityEngine.Color.white; if (DoTooltip) { TipSignal tip = Desc; if (disabled && !disabledReason.NullOrEmpty()) { string text = tip.text; tip.text = text + "\n\n" + "DisabledCommand".Translate() + ": " + disabledReason; } TooltipHandler.TipRegion(rect, tip); } if (!HighlightTag.NullOrEmpty() && (Find.WindowStack.FloatMenu == null || !Find.WindowStack.FloatMenu.windowRect.Overlaps(rect))) { UIHighlighter.HighlightOpportunity(rect, HighlightTag); } Text.Font = GameFont.Small; if (flag2) { if (disabled) { if (!disabledReason.NullOrEmpty()) { Messages.Message(disabledReason, MessageTypeDefOf.RejectInput, false); } return(new GizmoResult(GizmoState.Mouseover, null)); } GizmoResult result; if (Event.current.button == 1) { result = new GizmoResult(GizmoState.OpenedFloatMenu, Event.current); } else { if (!TutorSystem.AllowAction(TutorTagSelect)) { return(new GizmoResult(GizmoState.Mouseover, null)); } result = new GizmoResult(GizmoState.Interacted, Event.current); TutorSystem.Notify_Event(TutorTagSelect); } return(result); } if (flag) { return(new GizmoResult(GizmoState.Mouseover, null)); } return(new GizmoResult(GizmoState.Clear, null)); }
public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth) { Rect rect = new Rect(topLeft.x, topLeft.y, GetWidth(maxWidth), 75f); Rect rect2 = rect.ContractedBy(6f); Command_Psycast command_Psycast = ((MainTabWindow_Inspect)MainButtonDefOf.Inspect.TabWindow)?.LastMouseoverGizmo as Command_Psycast; float num = Mathf.Repeat(Time.time, 0.85f); float num2 = 1f; if (num < 0.1f) { num2 = num / 0.1f; } else if (num >= 0.25f) { num2 = 1f - (num - 0.25f) / 0.6f; } Widgets.DrawWindowBackground(rect); Text.Font = GameFont.Small; Rect rect3 = rect2; rect3.y += 6f; rect3.height = Text.LineHeight; Widgets.Label(rect3, "PsychicEntropyShort".Translate()); Rect rect4 = rect2; rect4.y += 38f; rect4.height = Text.LineHeight; Widgets.Label(rect4, "PsyfocusLabelGizmo".Translate()); Rect rect5 = rect2; rect5.x += 63f; rect5.y += 6f; rect5.width = 100f; rect5.height = 22f; float entropyRelativeValue = tracker.EntropyRelativeValue; Widgets.FillableBar(rect5, Mathf.Min(entropyRelativeValue, 1f), EntropyBarTex, EmptyBarTex, doBorder: true); if (tracker.EntropyValue > tracker.MaxEntropy) { Widgets.FillableBar(rect5, Mathf.Min(entropyRelativeValue - 1f, 1f), OverLimitBarTex, EntropyBarTex, doBorder: true); } if (command_Psycast != null) { Ability ability = command_Psycast.Ability; if (ability.def.EntropyGain > float.Epsilon) { Rect rect6 = rect5.ContractedBy(3f); float width = rect6.width; float num3 = tracker.EntropyToRelativeValue(tracker.EntropyValue + ability.def.EntropyGain); float num4 = entropyRelativeValue; if (num4 > 1f) { num4 -= 1f; num3 -= 1f; } rect6.xMin = Widgets.AdjustCoordToUIScalingFloor(rect6.xMin + num4 * width); rect6.width = Widgets.AdjustCoordToUIScalingFloor(Mathf.Max(Mathf.Min(num3, 1f) - num4, 0f) * width); GUI.color = new Color(1f, 1f, 1f, num2 * 0.7f); GenUI.DrawTextureWithMaterial(rect6, EntropyBarTexAdd, null); GUI.color = Color.white; } } if (tracker.EntropyValue > tracker.MaxEntropy) { foreach (KeyValuePair <PsychicEntropySeverity, float> entropyThreshold in Pawn_PsychicEntropyTracker.EntropyThresholds) { if (entropyThreshold.Value > 1f && entropyThreshold.Value < 2f) { DrawThreshold(rect5, entropyThreshold.Value - 1f, entropyRelativeValue); } } } string label = tracker.EntropyValue.ToString("F0") + " / " + tracker.MaxEntropy.ToString("F0"); Text.Font = GameFont.Small; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(rect5, label); Text.Anchor = TextAnchor.UpperLeft; Text.Font = GameFont.Tiny; GUI.color = Color.white; Rect rect7 = rect2; rect7.width = 175f; rect7.height = 38f; TooltipHandler.TipRegion(rect7, delegate { float f = tracker.EntropyValue / tracker.RecoveryRate; return(string.Format("PawnTooltipPsychicEntropyStats".Translate(), Mathf.Round(tracker.EntropyValue), Mathf.Round(tracker.MaxEntropy), tracker.RecoveryRate.ToString("0.#"), Mathf.Round(f)) + "\n\n" + "PawnTooltipPsychicEntropyDesc".Translate()); }, Gen.HashCombineInt(tracker.GetHashCode(), 133858)); Rect rect8 = rect2; rect8.x += 63f; rect8.y += 38f; rect8.width = 100f; rect8.height = 22f; bool flag = Mouse.IsOver(rect8); Widgets.FillableBar(rect8, Mathf.Min(tracker.CurrentPsyfocus, 1f), flag ? PsyfocusBarHighlightTex : PsyfocusBarTex, EmptyBarTex, doBorder: true); if (command_Psycast != null) { float min = command_Psycast.Ability.def.PsyfocusCostRange.min; if (min > float.Epsilon) { Rect rect9 = rect8.ContractedBy(3f); float num5 = Mathf.Max(tracker.CurrentPsyfocus - min, 0f); float width2 = rect9.width; rect9.xMin = Widgets.AdjustCoordToUIScalingFloor(rect9.xMin + num5 * width2); rect9.width = Widgets.AdjustCoordToUIScalingCeil((tracker.CurrentPsyfocus - num5) * width2); GUI.color = new Color(1f, 1f, 1f, num2); GenUI.DrawTextureWithMaterial(rect9, PsyfocusBarTexReduce, null); GUI.color = Color.white; } } for (int i = 1; i < Pawn_PsychicEntropyTracker.PsyfocusBandPercentages.Count - 1; i++) { DrawThreshold(rect8, Pawn_PsychicEntropyTracker.PsyfocusBandPercentages[i], tracker.CurrentPsyfocus); } float num6 = Mathf.Clamp(Mathf.Round((Event.current.mousePosition.x - (rect8.x + 3f)) / (rect8.width - 8f) * 16f) / 16f, 0f, 1f); Event current2 = Event.current; if (current2.type == EventType.MouseDown && current2.button == 0 && flag) { selectedPsyfocusTarget = num6; draggingPsyfocusBar = true; PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.MeditationDesiredPsyfocus, KnowledgeAmount.Total); SoundDefOf.DragSlider.PlayOneShotOnCamera(); current2.Use(); } if (current2.type == EventType.MouseDrag && current2.button == 0 && draggingPsyfocusBar && flag) { if (Math.Abs(num6 - selectedPsyfocusTarget) > float.Epsilon) { SoundDefOf.DragSlider.PlayOneShotOnCamera(); } selectedPsyfocusTarget = num6; current2.Use(); } if (current2.type == EventType.MouseUp && current2.button == 0 && draggingPsyfocusBar) { if (selectedPsyfocusTarget >= 0f) { tracker.SetPsyfocusTarget(selectedPsyfocusTarget); } selectedPsyfocusTarget = -1f; draggingPsyfocusBar = false; current2.Use(); } UIHighlighter.HighlightOpportunity(rect8, "PsyfocusBar"); DrawPsyfocusTarget(rect8, draggingPsyfocusBar ? selectedPsyfocusTarget : tracker.TargetPsyfocus); GUI.color = Color.white; Rect rect10 = rect2; rect10.y += 38f; rect10.width = 175f; rect10.height = 38f; TooltipHandler.TipRegion(rect10, () => tracker.PsyfocusTipString_NewTemp(selectedPsyfocusTarget), Gen.HashCombineInt(tracker.GetHashCode(), 133873)); if (tracker.Pawn.IsColonistPlayerControlled) { float num7 = 32f; float num8 = 4f; float num9 = rect2.height / 2f - num7 + num8; float num10 = rect2.width - num7; Rect rect11 = new Rect(rect2.x + num10, rect2.y + num9, num7, num7); if (Widgets.ButtonImage(rect11, tracker.limitEntropyAmount ? LimitedTex : UnlimitedTex)) { tracker.limitEntropyAmount = !tracker.limitEntropyAmount; if (tracker.limitEntropyAmount) { SoundDefOf.Tick_Low.PlayOneShotOnCamera(); } else { SoundDefOf.Tick_High.PlayOneShotOnCamera(); } } TooltipHandler.TipRegionByKey(rect11, "PawnTooltipPsychicEntropyLimit"); } if (tracker.PainMultiplier > 1f) { Text.Font = GameFont.Small; Text.Anchor = TextAnchor.MiddleCenter; string recoveryBonus = (tracker.PainMultiplier - 1f).ToStringPercent("F0"); string text = recoveryBonus; float widthCached = text.GetWidthCached(); Rect rect12 = rect2; rect12.x += rect2.width - widthCached / 2f - 16f; rect12.y += 38f; rect12.width = widthCached; rect12.height = Text.LineHeight; GUI.color = PainBoostColor; Widgets.Label(rect12, text); GUI.color = Color.white; Text.Font = GameFont.Tiny; Text.Anchor = TextAnchor.UpperLeft; TooltipHandler.TipRegion(rect12.ContractedBy(-1f), () => "PawnTooltipPsychicEntropyPainFocus".Translate(tracker.Pawn.health.hediffSet.PainTotal.ToStringPercent("F0"), recoveryBonus), Gen.HashCombineInt(tracker.GetHashCode(), 133878)); } return(new GizmoResult(GizmoState.Clear)); }