public virtual void Sort(TabComparer sort1, TabComparer sort2) { var itemsWithValue = items.Where(x => x.MarketValueAll >= 1f); if (sort1 is TabComparer_MarketValueAll && sort2 is TabComparer_None) { items = itemsWithValue .OrderByDescending(x => x, sort1) .ToList(); return; } // sort like trade window items = itemsWithValue .OrderBy(x => x, sort1) .ThenBy(x => x, sort2) .ThenBy(x => TransferableUIUtility.DefaultListOrderPriority(x.thing.def)) .ToList(); }
public override void DoWindowContents(Rect rect) { float y = 0f; Text.Font = GameFont.Small; Text.Anchor = TextAnchor.MiddleLeft; // draw button select tab float btnWidth = 150f; float btnHeight = 30f; float lblOrderWidth = 80f; float btnOrderWidth = 120f; Rect btnSelectTabRect = new Rect(x: 10f, y: y, width: btnWidth, height: btnHeight); Rect lblOrderRect = new Rect(x: btnSelectTabRect.xMax + 10f, y: y, width: lblOrderWidth, height: btnHeight); Rect btnOrder1Rect = new Rect(x: lblOrderRect.xMax, y: y, width: btnOrderWidth, height: btnHeight); Rect btnOrder2Rect = new Rect(x: btnOrder1Rect.xMax, y: y, width: btnOrderWidth, height: btnHeight); string btnCaption = _activeTab?.Caption ?? "capSelectTab".Translate(); if (Widgets.ButtonText(btnSelectTabRect, "btnSelectTab".Translate(btnCaption))) { Find.WindowStack.Add(new FloatMenu(this.GetTabsList().ToList())); } Widgets.Label(lblOrderRect, "lblOrder".Translate()); if (Widgets.ButtonText(btnOrder1Rect, _sort1.Name)) { Find.WindowStack.Add(new FloatMenu(this.GetSortersList(comparer => { _sort1 = comparer; _activeTab?.Sort(_sort1, _sort2); }).ToList())); } if (Widgets.ButtonText(btnOrder2Rect, _sort2.Name)) { Find.WindowStack.Add(new FloatMenu(this.GetSortersList(comparer => { _sort2 = comparer; _activeTab?.Sort(_sort1, _sort2); }).ToList())); } // draw raid points if (_raidPoints != null) { Rect labelRaidPointsRect = new Rect(x: btnOrder2Rect.xMax + 10f, y: y, width: 100f, height: btnHeight); Widgets.Label(labelRaidPointsRect, _raidPoints); } y += btnHeight + 20f; // draw content in scroll view Rect outRect = new Rect(x: 0f, y: y, width: rect.width, height: rect.height - y); Rect viewRect = new Rect(x: 0f, y: y, width: rect.width - 30f, height: _activeTab?.ViewHeight ?? 0f); Widgets.BeginScrollView(outRect: outRect, scrollPosition: ref _scrollPosition, viewRect: viewRect); _activeTab?.Draw(outRect, viewRect, _scrollPosition); Widgets.EndScrollView(); Text.Anchor = TextAnchor.UpperLeft; }
public void Sort(TabComparer sort1, TabComparer sort2) { // empty }