private void DoScenarioListEntry(Rect rect, Scenario scen) { bool flag = this.curScen == scen; Widgets.DrawOptionBackground(rect, flag); MouseoverSounds.DoRegion(rect); Rect rect2 = rect.ContractedBy(4f); Text.Font = GameFont.Small; Rect rect3 = rect2; rect3.height = Text.CalcHeight(scen.name, rect3.width); Widgets.Label(rect3, scen.name); Text.Font = GameFont.Tiny; Rect rect4 = rect2; rect4.yMin = rect3.yMax; Widgets.Label(rect4, scen.GetSummary()); if (scen.enabled) { WidgetRow widgetRow = new WidgetRow(rect.xMax, rect.y, UIDirection.LeftThenDown, 99999f, 4f); if (scen.Category == ScenarioCategory.CustomLocal && widgetRow.ButtonIcon(TexButton.DeleteX, "Delete".Translate(), new Color?(GenUI.SubtleMouseoverColor))) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmDelete".Translate(scen.File.Name), delegate { scen.File.Delete(); ScenarioLister.MarkDirty(); }, true, null)); } if (scen.Category == ScenarioCategory.SteamWorkshop && widgetRow.ButtonIcon(TexButton.DeleteX, "Unsubscribe".Translate(), new Color?(GenUI.SubtleMouseoverColor))) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmUnsubscribe".Translate(scen.File.Name), delegate { scen.enabled = false; if (this.curScen == scen) { this.curScen = null; this.EnsureValidSelection(); } Workshop.Unsubscribe(scen); }, true, null)); } if (scen.GetPublishedFileId() != PublishedFileId_t.Invalid) { if (widgetRow.ButtonIcon(ContentSource.SteamWorkshop.GetIcon(), "WorkshopPage".Translate(), null)) { SteamUtility.OpenWorkshopPage(scen.GetPublishedFileId()); } if (scen.CanToUploadToWorkshop()) { widgetRow.Icon(Page_SelectScenario.CanUploadIcon, "CanBeUpdatedOnWorkshop".Translate()); } } if (!flag && Widgets.ButtonInvisible(rect, false)) { this.curScen = scen; SoundDefOf.Click.PlayOneShotOnCamera(null); } } }
public void Draw(Rect canvas, int margin = 6) { var labelRect = new Rect( canvas.xMin, canvas.yMin + margin / 2, canvas.width * 2 / 3f, canvas.height - margin); var previewRect = new Rect( labelRect.xMax, canvas.yMin + margin, canvas.width / 3f, canvas.height - margin); Widgets.Label(labelRect, label.CapitalizeFirst()); if (Widgets.ButtonInvisible(previewRect)) { editMode = true; } Widgets.DrawOptionBackground(previewRect, editMode); Text.Anchor = TextAnchor.MiddleCenter; if (editMode) { Widgets.Label(previewRect, ModifierLabel(Event.current.modifiers)); if (Event.current.type == EventType.MouseDown) { type = InputType.MouseButton; button = Event.current.button; modifiers = Event.current.modifiers; editMode = false; } else if (Event.current.type == EventType.KeyDown && Event.current.keyCode != KeyCode.LeftControl && Event.current.keyCode != KeyCode.RightControl && Event.current.keyCode != KeyCode.LeftShift && Event.current.keyCode != KeyCode.RightShift && Event.current.keyCode != KeyCode.AltGr && Event.current.keyCode != KeyCode.LeftAlt && Event.current.keyCode != KeyCode.RightAlt) { type = InputType.Key; key = Event.current.keyCode; modifiers = Event.current.modifiers; editMode = false; } else if (Event.current.type == EventType.ScrollWheel) { type = InputType.ScrollWheel; scrollDirection = Event.current.delta.normalized; modifiers = Event.current.modifiers; editMode = false; } } else { Widgets.Label(previewRect, Label); } Text.Anchor = TextAnchor.UpperLeft; }
private static void DrawColumnHeader(ref Rect inRect, Column c) { Widgets.DrawOptionBackground(inRect, false); var rect = inRect.LeftPartPixels(NUMERIC_WIDTH); if (c.total != 0) { Widgets.Label(rect.TopHalf(), c.Name); Widgets.Label(rect.BottomHalf(), $"{c.total:0.000}ms"); } else { Widgets.Label(rect, (c.sortBy == SortBy.Name ? " " : "") + c.Name); } if (Analyzer.SortBy == c.sortBy) { Widgets.DrawHighlight(rect); } if (Widgets.ButtonInvisible(rect)) { if (Event.current.button == 0) // left click, change sort by { Analyzer.SortBy = Analyzer.SortBy == c.sortBy ? DEFAULT_SORTBY : c.sortBy; } } TooltipHandler.TipRegion(rect, c.Desc); if (c.sortBy != SortBy.Name) { inRect.AdjustHorizonallyBy(NUMERIC_WIDTH); GUI.color = Color.grey; Widgets.DrawLineVertical(inRect.x, rect.y, rect.height); GUI.color = Color.white; } }
private void DoScenarioListEntry(Rect rect, ChallengeDef challenge) { bool isSelected = this.selectedChallenge == challenge; bool canPick = challenge.CanStartNow; Widgets.DrawOptionBackground(rect, isSelected); Rect rect2 = rect.ContractedBy(4f); if (!canPick) { GUI.color = new Color(1f, 1f, 1f, 0.5f); } else { MouseoverSounds.DoRegion(rect); } Text.Font = GameFont.Small; Rect rect3 = rect2; rect3.height = Text.CalcHeight(challenge.LabelCap, rect3.width); Widgets.Label(rect3, challenge.LabelCap); Text.Font = GameFont.Tiny; Rect rect4 = rect2; rect4.yMin = rect3.yMax; Widgets.Label(rect4, challenge.description); GUI.color = Color.white; if (canPick) { if (!isSelected && Widgets.ButtonInvisible(rect, false)) { this.selectedChallenge = challenge; SoundDefOf.Click.PlayOneShotOnCamera(null); } } }
private void DrawPawnList(Rect rect) { Rect rect2 = rect; rect2.height = 60f; rect2 = rect2.ContractedBy(4f); int groupID = ReorderableWidget.NewGroup(delegate(int from, int to) { if (TutorSystem.AllowAction("ReorderPawn")) { Pawn item = Find.GameInitData.startingAndOptionalPawns[from]; Find.GameInitData.startingAndOptionalPawns.Insert(to, item); Find.GameInitData.startingAndOptionalPawns.RemoveAt((from < to) ? from : (from + 1)); TutorSystem.Notify_Event("ReorderPawn"); if (to < Find.GameInitData.startingPawnCount && from >= Find.GameInitData.startingPawnCount) { TutorSystem.Notify_Event("ReorderPawnOptionalToStarting"); } } }, ReorderableDirection.Vertical); rect2.y += 15f; DrawPawnListLabelAbove(rect2, "StartingPawnsSelected".Translate()); for (int i = 0; i < Find.GameInitData.startingAndOptionalPawns.Count; i++) { if (i == Find.GameInitData.startingPawnCount) { rect2.y += 30f; DrawPawnListLabelAbove(rect2, "StartingPawnsLeftBehind".Translate()); } Pawn pawn = Find.GameInitData.startingAndOptionalPawns[i]; GUI.BeginGroup(rect2); Rect rect3 = new Rect(Vector2.zero, rect2.size); Widgets.DrawOptionBackground(rect3, curPawn == pawn); MouseoverSounds.DoRegion(rect3); GUI.color = new Color(1f, 1f, 1f, 0.2f); GUI.DrawTexture(new Rect(110f - PawnSelectorPortraitSize.x / 2f, 40f - PawnSelectorPortraitSize.y / 2f, PawnSelectorPortraitSize.x, PawnSelectorPortraitSize.y), PortraitsCache.Get(pawn, PawnSelectorPortraitSize)); GUI.color = Color.white; Rect rect4 = rect3.ContractedBy(4f).Rounded(); NameTriple nameTriple = pawn.Name as NameTriple; Widgets.Label(label: (nameTriple == null) ? pawn.LabelShort : (string.IsNullOrEmpty(nameTriple.Nick) ? nameTriple.First : nameTriple.Nick), rect: rect4.TopPart(0.5f).Rounded()); if (Text.CalcSize(pawn.story.TitleCap).x > rect4.width) { Widgets.Label(rect4.BottomPart(0.5f).Rounded(), pawn.story.TitleShortCap); } else { Widgets.Label(rect4.BottomPart(0.5f).Rounded(), pawn.story.TitleCap); } if (Event.current.type == EventType.MouseDown && Mouse.IsOver(rect3)) { curPawn = pawn; SoundDefOf.Tick_Tiny.PlayOneShotOnCamera(); } GUI.EndGroup(); if (ReorderableWidget.Reorderable(groupID, rect2.ExpandedBy(4f))) { Widgets.DrawRectFast(rect2, Widgets.WindowBGFillColor * new Color(1f, 1f, 1f, 0.5f)); } if (Mouse.IsOver(rect2)) { TooltipHandler.TipRegion(rect2, new TipSignal("DragToReorder".Translate(), pawn.GetHashCode() * 3499)); } rect2.y += 60f; } }
private void DrawPawnList(Rect rect) { Rect rect2 = rect; rect2.height = 60f; rect2 = rect2.ContractedBy(4f); int groupID = ReorderableWidget.NewGroup(delegate(int from, int to) { if (TutorSystem.AllowAction("ReorderPawn")) { Pawn item = Find.GameInitData.startingPawns[from]; Find.GameInitData.startingPawns.RemoveAt(from); Find.GameInitData.startingPawns.Insert(to, item); TutorSystem.Notify_Event("ReorderPawn"); } }); rect2.y += 15f; this.DrawPawnListLabelAbove(rect2, "StartingPawnsSelected".Translate()); for (int i = 0; i < Find.GameInitData.startingPawns.Count; i++) { if (i == Find.GameInitData.startingPawnCount) { rect2.y += 30f; this.DrawPawnListLabelAbove(rect2, "StartingPawnsLeftBehind".Translate()); } Pawn pawn = Find.GameInitData.startingPawns[i]; GUI.BeginGroup(rect2); Rect rect3 = new Rect(Vector2.zero, rect2.size); Widgets.DrawOptionBackground(rect3, this.curPawn == pawn); MouseoverSounds.DoRegion(rect3); GUI.color = new Color(1f, 1f, 1f, 0.2f); Vector2 pawnSelectorPortraitSize = Page_ConfigureStartingPawns.PawnSelectorPortraitSize; double x = 110.0 - pawnSelectorPortraitSize.x / 2.0; Vector2 pawnSelectorPortraitSize2 = Page_ConfigureStartingPawns.PawnSelectorPortraitSize; double y = 40.0 - pawnSelectorPortraitSize2.y / 2.0; Vector2 pawnSelectorPortraitSize3 = Page_ConfigureStartingPawns.PawnSelectorPortraitSize; float x2 = pawnSelectorPortraitSize3.x; Vector2 pawnSelectorPortraitSize4 = Page_ConfigureStartingPawns.PawnSelectorPortraitSize; GUI.DrawTexture(new Rect((float)x, (float)y, x2, pawnSelectorPortraitSize4.y), PortraitsCache.Get(pawn, Page_ConfigureStartingPawns.PawnSelectorPortraitSize, default(Vector3), 1f)); GUI.color = Color.white; Rect rect4 = rect3.ContractedBy(4f).Rounded(); NameTriple nameTriple = pawn.Name as NameTriple; string label = (nameTriple == null) ? pawn.LabelShort : ((!string.IsNullOrEmpty(nameTriple.Nick)) ? nameTriple.Nick : nameTriple.First); Widgets.Label(rect4.TopPart(0.5f).Rounded(), label); Vector2 vector = Text.CalcSize(pawn.story.Title); if (vector.x > rect4.width) { Widgets.Label(rect4.BottomPart(0.5f).Rounded(), pawn.story.TitleShort); } else { Widgets.Label(rect4.BottomPart(0.5f).Rounded(), pawn.story.Title); } if (Event.current.type == EventType.MouseDown && Mouse.IsOver(rect3)) { this.curPawn = pawn; SoundDefOf.TickTiny.PlayOneShotOnCamera(null); } GUI.EndGroup(); if (ReorderableWidget.Reorderable(groupID, rect2.ExpandedBy(4f))) { Widgets.DrawRectFast(rect2, Widgets.WindowBGFillColor * new Color(1f, 1f, 1f, 0.5f), null); } TooltipHandler.TipRegion(rect2, new TipSignal("DragToReorder".Translate(), pawn.GetHashCode() * 3499)); rect2.y += 60f; } }
private static void DrawColumnHeader(ref Rect inRect, string name, string desc, SortBy value, float width, string totalReadout = "") { bool closed = false; if (!columns[(int)value]) // If our column is currently collapsed { if (value != SortBy.Name) { width = ARBITRARY_CLOSED_OFFSET; } closed = true; } Widgets.DrawOptionBackground(inRect, false); var rect = inRect.LeftPartPixels(width); if (closed is false) { // Text.Font = GameFont.Small; Widgets.Label(rect.TopHalf(), name); if (totalReadout != string.Empty) { // Text.Font = GameFont.Tiny; Widgets.Label(rect.BottomHalf(), totalReadout); } } if (Analyzer.SortBy == value) { Widgets.DrawHighlight(rect); } if (Widgets.ButtonInvisible(rect)) { // sort by 'max' if (Event.current.button == 0) // left click, change sort by { if (Analyzer.SortBy == value) { Analyzer.SortBy = DEFAULT_SORTBY; } else { Analyzer.SortBy = value; } } else // middle / right, close the tab { columns[(int)value] = !columns[(int)value]; } } TooltipHandler.TipRegion(rect, desc); if (value != SortBy.Name) { inRect.AdjustHorizonallyBy(width); GUI.color = Color.grey; Widgets.DrawLineVertical(inRect.x, rect.y, rect.height); GUI.color = Color.white; } }