private void RecreateDialog() { var session = Multiplayer.WorldComp.trading[selectedTab]; MpTradeSession.SetTradeSession(session); dialog = MpUtil.NewObjectNoCtor <Dialog_Trade>(); dialog.quickSearchWidget = new QuickSearchWidget(); dialog.giftsOnly = session.giftsOnly; dialog.sorter1 = TransferableSorterDefOf.Category; dialog.sorter2 = TransferableSorterDefOf.MarketValue; dialog.CacheTradeables(); session.deal.uiShouldReset = UIShouldReset.None; removed.Clear(); added.Clear(); MpTradeSession.SetTradeSession(null); }
private void RecreateDialog() { var session = Multiplayer.WorldComp.trading[selectedTab]; CancelDialogTradeCtor.cancel = true; MpTradeSession.SetTradeSession(session); dialog = new Dialog_Trade(null, null); dialog.giftsOnly = session.giftsOnly; dialog.sorter1 = TransferableSorterDefOf.Category; dialog.sorter2 = TransferableSorterDefOf.MarketValue; dialog.CacheTradeables(); session.deal.uiShouldReset = UIShouldReset.None; removed.Clear(); added.Clear(); MpTradeSession.SetTradeSession(null); CancelDialogTradeCtor.cancel = false; }
public override void DoWindowContents(Rect inRect) { added.RemoveAll(kv => Time.time - kv.Value > 1f); removed.RemoveAll(kv => Time.time - kv.Value > 0.5f && RemoveCachedTradeable(kv.Key)); tabs.Clear(); var trading = Multiplayer.WorldComp.trading; for (int i = 0; i < trading.Count; i++) { int j = i; tabs.Add(new TabRecord(trading[i].Label, () => selectedTab = j, () => selectedTab == j)); } if (selectedTab == -1 && trading.Count > 0) { selectedTab = 0; } if (selectedTab == -1) { Close(); return; } int rows = Mathf.CeilToInt(tabs.Count / 3f); inRect.yMin += rows * TabDrawer.TabHeight + 3; TabDrawer.DrawTabs(inRect, tabs, rows); inRect.yMin += 10f; var session = Multiplayer.WorldComp.trading[selectedTab]; if (session.sessionId != selectedSession) { RecreateDialog(); selectedSession = session.sessionId; } { MpTradeSession.SetTradeSession(session); drawingTrade = this; if (session.deal.ShouldRecache) { session.deal.Recache(); } if (session.deal.uiShouldReset != UIShouldReset.None) { if (session.deal.uiShouldReset != UIShouldReset.Silent) { BeforeCache(); } dialog.CacheTradeables(); dialog.CountToTransferChanged(); session.deal.uiShouldReset = UIShouldReset.None; } if (session.deal.caravanDirty) { dialog.CountToTransferChanged(); session.deal.caravanDirty = false; } GUI.BeginGroup(inRect); { Rect groupRect = new Rect(0, 0, inRect.width, inRect.height); dialog.DoWindowContents(groupRect); } GUI.EndGroup(); int?traderLeavingIn = GetTraderTime(TradeSession.trader); if (traderLeavingIn != null) { float num = inRect.width - 590f; Rect position = new Rect(inRect.x + num, inRect.y, inRect.width - num, 58f); Rect traderNameRect = new Rect(position.x + position.width / 2f, position.y, position.width / 2f - 1f, position.height); Rect traderTimeRect = traderNameRect.Up(traderNameRect.height - 5f); Text.Anchor = TextAnchor.LowerRight; Widgets.Label(traderTimeRect, "MpTraderLeavesIn".Translate(traderLeavingIn?.ToStringTicksToPeriod())); Text.Anchor = TextAnchor.UpperLeft; } if (cancelPressed) { CancelTradeSession(session); cancelPressed = false; } session.giftMode = TradeSession.giftMode; drawingTrade = null; MpTradeSession.SetTradeSession(null); } }