protected override void UpdateSize() { this.EnsureSpecificNeedsTabForPawnValid(); base.UpdateSize(); this.size = ITab_Ship_Passengers.GetSize(AllAboard, this.PaneTopY, true); this.size.y = Mathf.Max(this.size.y, NeedsCardUtility.FullSize.y); }
protected override void FillTab() { this.EnsureSpecificNeedsTabForPawnValid(); Text.Font = GameFont.Small; Rect rect = new Rect(0f, 0f, size.x, size.y).ContractedBy(10f); Rect viewRect = new Rect(0f, 0f, rect.width - 16f, scrollViewHeight); Widgets.BeginScrollView(rect, ref scrollPosition, viewRect, true); float num = 0f; bool flag = false; foreach (ShipHandler handler in Handlers) { if (handler.role.handlingType != HandlingTypeFlags.None) { Widgets.ListSeparator(ref num, viewRect.width, handler.role.label); foreach (Pawn pawn in handler.handlers.InnerListForReading) { ITab_Ship_Passengers.DoRow(ref num, viewRect, rect, scrollPosition, pawn, ref specificNeedsTabForPawn); } } } foreach (Pawn pawn in Passengers) { if (pawn.IsColonist) { if (!flag) { Widgets.ListSeparator(ref num, viewRect.width, "CaravanPassengers".Translate()); flag = true; } ITab_Ship_Passengers.DoRow(ref num, viewRect, rect, scrollPosition, pawn, ref specificNeedsTabForPawn); } } bool flag2 = false; foreach (Pawn pawn in Passengers) { if (!pawn.IsColonist) { if (!flag2) { Widgets.ListSeparator(ref num, viewRect.width, "CaravanPrisonersAndAnimals".Translate()); flag2 = true; } ITab_Ship_Passengers.DoRow(ref num, viewRect, rect, scrollPosition, pawn, ref specificNeedsTabForPawn); } } if (Event.current.type is EventType.Layout) { scrollViewHeight = num + 30f; } Widgets.EndScrollView(); }
private static Vector2 GetSize(List <Pawn> pawns, float paneTopY, bool doNeeds = true) { float num = 100f; if (doNeeds) { num += (float)ITab_Ship_Passengers.MaxNeedsCount(pawns) * 100f; } num += 24f; Vector2 result; result.x = 103f + num + 16f; result.y = Mathf.Min(550f, paneTopY - 30f); return(result); }