public Dialog_PayByBankNotes(int expense, int playersilver, int playernotes, int tradersilver, int tradernotes, bool isVirtual) { forcePause = true; silverTradeable = new Tradeable(); notesTradeable = new Tradeable(); this.isVirtual = isVirtual; Thing item = new Thing { def = ThingDefOf.Silver, stackCount = playersilver }; silverTradeable.thingsColony.Add(item); item = new Thing { def = ThingDefOf.Silver, stackCount = tradersilver }; silverTradeable.thingsTrader.Add(item); item = new Thing { def = BankDefOf.BankNote, stackCount = playernotes }; notesTradeable.thingsColony.Add(item); item = new Thing { def = BankDefOf.BankNote, stackCount = tradernotes }; notesTradeable.thingsTrader.Add(item); silverTradeable.ForceTo(expense); }
public override void DoWindowContents(Rect inRect) { Rect rect = new Rect(inRect.x, inRect.y, inRect.width, 45f); Text.Anchor = TextAnchor.MiddleCenter; Text.Font = GameFont.Medium; if (isVirtual) { Widgets.Label(rect, VirtualTrader.TipString(1)); TooltipHandler.TipRegion(rect, VirtualTrader.TipString(2)); } else { Widgets.Label(rect, "AdjustPayment".Translate()); } float height = rect.height; Color color = GUI.color; GUI.color = Color.gray; Widgets.DrawLineHorizontal(inRect.x, height, inRect.width); GUI.color = color; height += 2.5f; Rect rect2 = new Rect(inRect.x, height, inRect.width, 30f); DrawTradeableRow(rect2, silverTradeable, 1); int countToTransfer = notesTradeable.CountToTransfer; int countToTransfer2 = silverTradeable.CountToTransfer; Rect rect3 = new Rect(inRect.x, height + 30f, inRect.width, 30f); DrawTradeableRow(rect3, notesTradeable, 2); if (countToTransfer != notesTradeable.CountToTransfer) { if (!isVirtual || !VirtualTrader.UniqueBalanceMethod) { int countToTransfer3 = silverTradeable.CountToTransfer; silverTradeable.ForceTo(countToTransfer3 + (countToTransfer - notesTradeable.CountToTransfer) * 1000); } else { int notes = notesTradeable.CountToTransfer; int silver = silverTradeable.CountToTransfer; VirtualTrader.BalanceMethod(countToTransfer2, countToTransfer, ref silver, ref notes); notesTradeable.ForceTo(notes); silverTradeable.ForceTo(silver); } } Rect rect4 = new Rect(rect2.x, rect2.y, 27f, 27f); if (Mouse.IsOver(rect4)) { Widgets.DrawHighlight(rect4); } Widgets.ThingIcon(rect4, silverTradeable.AnyThing); Rect rect5 = new Rect(rect2.x, rect3.y, 27f, 27f); if (Mouse.IsOver(rect5)) { Widgets.DrawHighlight(rect5); } Widgets.ThingIcon(rect5, notesTradeable.AnyThing); if (isVirtual) { TooltipHandler.TipRegion(rect4, VirtualTrader.TipString(3)); TooltipHandler.TipRegion(rect5, VirtualTrader.TipString(4)); } else { TooltipHandler.TipRegion(rect4, "SilverTip".Translate()); TooltipHandler.TipRegion(rect5, "BankNoteTip".Translate()); } float num = 120f; float height2 = 40f; if (Widgets.ButtonText(new Rect(inRect.width * 9f / 16f, inRect.height - 55f, num, height2), "CancelButton".Translate())) { Event.current.Use(); Close(doCloseSound: false); } if (Widgets.ButtonText(new Rect(inRect.width * 7f / 16f - num, inRect.height - 55f, num, height2), "AcceptButton".Translate())) { Action ExecuteTrade = delegate { currencyfmt = new Pair <int, int>(notesTradeable.CountToTransfer, silverTradeable.CountToTransfer); if (TradeSession.deal.DoExecute()) { SoundDefOf.ExecuteTrade.PlayOneShotOnCamera(); if (TradeSession.trader is Pawn pawn) { TaleRecorder.RecordTale(TaleDefOf.TradedWith, TradeSession.playerNegotiator, pawn); } if (isVirtual) { VirtualTrader.CloseTradeUI(); } else { Find.WindowStack.WindowOfType <Dialog_Trade>().Close(doCloseSound: false); } } Close(doCloseSound: false); }; Action ConfirmedExecuteTrade = delegate { silverTradeable.ForceTo(silverTradeable.CountHeldBy(Transactor.Trader)); ExecuteTrade(); }; ((Action) delegate { if (!TestPlayerSilver()) { Messages.Message("NotEnoughSilverColony".Translate(), MessageTypeDefOf.RejectInput); } else if (isVirtual && VirtualTrader.CustomCheckViolation(silverTradeable, notesTradeable)) { VirtualTrader.CustomViolationAction(); } else if (!TestTraderSilver()) { SoundDefOf.ClickReject.PlayOneShotOnCamera(); Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmTraderShortFunds".Translate(), ConfirmedExecuteTrade)); } else { ExecuteTrade(); } })(); Event.current.Use(); } }