private static void DoCountAdjustInterfaceInternal(Rect rect, Transferable trad, int index, int min, int max, bool flash, bool readOnly) { rect = rect.Rounded(); Rect rect2 = new Rect(rect.center.x - 45f, rect.center.y - 12.5f, 90f, 25f).Rounded(); if (flash) { GUI.DrawTexture(rect2, TransferableUIUtility.FlashTex); } TransferableOneWay transferableOneWay = trad as TransferableOneWay; bool flag = transferableOneWay != null && transferableOneWay.HasAnyThing && transferableOneWay.AnyThing is Pawn && transferableOneWay.MaxCount == 1; if (!trad.Interactive || readOnly) { if (flag) { bool flag2 = trad.CountToTransfer != 0; Widgets.Checkbox(rect2.position, ref flag2, 24f, true, false, null, null); } else { GUI.color = ((trad.CountToTransfer != 0) ? Color.white : TransferableUIUtility.ZeroCountColor); Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(rect2, trad.CountToTransfer.ToStringCached()); } } else if (flag) { bool flag3 = trad.CountToTransfer != 0; bool flag4 = flag3; Widgets.Checkbox(rect2.position, ref flag4, 24f, false, true, null, null); if (flag4 != flag3) { if (flag4) { trad.AdjustTo(trad.GetMaximumToTransfer()); } else { trad.AdjustTo(trad.GetMinimumToTransfer()); } } } else { Rect rect3 = rect2.ContractedBy(2f); rect3.xMax -= 15f; rect3.xMin += 16f; int countToTransfer = trad.CountToTransfer; string editBuffer = trad.EditBuffer; Widgets.TextFieldNumeric <int>(rect3, ref countToTransfer, ref editBuffer, (float)min, (float)max); trad.AdjustTo(countToTransfer); trad.EditBuffer = editBuffer; } Text.Anchor = TextAnchor.UpperLeft; GUI.color = Color.white; if (trad.Interactive && !flag) { TransferablePositiveCountDirection positiveCountDirection = trad.PositiveCountDirection; int num = (positiveCountDirection != TransferablePositiveCountDirection.Source) ? -1 : 1; int num2 = GenUI.CurrentAdjustmentMultiplier(); bool flag5 = trad.GetRange() == 1; if (trad.CanAdjustBy(num * num2).Accepted) { Rect rect4 = new Rect(rect2.x - 30f, rect.y, 30f, rect.height); if (flag5) { rect4.x -= rect4.width; rect4.width += rect4.width; } if (Widgets.ButtonText(rect4, "<", true, false, true)) { trad.AdjustBy(num * num2); SoundDefOf.Tick_High.PlayOneShotOnCamera(null); } if (!flag5) { string label = "<<"; int? num3 = null; int num4 = 0; for (int i = 0; i < TransferableUIUtility.stoppingPoints.Count; i++) { TransferableCountToTransferStoppingPoint transferableCountToTransferStoppingPoint = TransferableUIUtility.stoppingPoints[i]; if (positiveCountDirection == TransferablePositiveCountDirection.Source) { if (trad.CountToTransfer < transferableCountToTransferStoppingPoint.threshold && (transferableCountToTransferStoppingPoint.threshold < num4 || !num3.HasValue)) { label = transferableCountToTransferStoppingPoint.leftLabel; num3 = new int?(transferableCountToTransferStoppingPoint.threshold); } } else if (trad.CountToTransfer > transferableCountToTransferStoppingPoint.threshold && (transferableCountToTransferStoppingPoint.threshold > num4 || !num3.HasValue)) { label = transferableCountToTransferStoppingPoint.leftLabel; num3 = new int?(transferableCountToTransferStoppingPoint.threshold); } } rect4.x -= rect4.width; if (Widgets.ButtonText(rect4, label, true, false, true)) { if (num3.HasValue) { trad.AdjustTo(num3.Value); } else if (num == 1) { trad.AdjustTo(trad.GetMaximumToTransfer()); } else { trad.AdjustTo(trad.GetMinimumToTransfer()); } SoundDefOf.Tick_High.PlayOneShotOnCamera(null); } } } if (trad.CanAdjustBy(-num * num2).Accepted) { Rect rect5 = new Rect(rect2.xMax, rect.y, 30f, rect.height); if (flag5) { rect5.width += rect5.width; } if (Widgets.ButtonText(rect5, ">", true, false, true)) { trad.AdjustBy(-num * num2); SoundDefOf.Tick_Low.PlayOneShotOnCamera(null); } if (!flag5) { string label2 = ">>"; int? num5 = null; int num6 = 0; for (int j = 0; j < TransferableUIUtility.stoppingPoints.Count; j++) { TransferableCountToTransferStoppingPoint transferableCountToTransferStoppingPoint2 = TransferableUIUtility.stoppingPoints[j]; if (positiveCountDirection == TransferablePositiveCountDirection.Destination) { if (trad.CountToTransfer < transferableCountToTransferStoppingPoint2.threshold && (transferableCountToTransferStoppingPoint2.threshold < num6 || !num5.HasValue)) { label2 = transferableCountToTransferStoppingPoint2.rightLabel; num5 = new int?(transferableCountToTransferStoppingPoint2.threshold); } } else if (trad.CountToTransfer > transferableCountToTransferStoppingPoint2.threshold && (transferableCountToTransferStoppingPoint2.threshold > num6 || !num5.HasValue)) { label2 = transferableCountToTransferStoppingPoint2.rightLabel; num5 = new int?(transferableCountToTransferStoppingPoint2.threshold); } } rect5.x += rect5.width; if (Widgets.ButtonText(rect5, label2, true, false, true)) { if (num5.HasValue) { trad.AdjustTo(num5.Value); } else if (num == 1) { trad.AdjustTo(trad.GetMinimumToTransfer()); } else { trad.AdjustTo(trad.GetMaximumToTransfer()); } SoundDefOf.Tick_Low.PlayOneShotOnCamera(null); } } } } if (trad.CountToTransfer != 0) { Rect position = new Rect(rect2.x + rect2.width / 2f - (float)(TransferableUIUtility.TradeArrow.width / 2), rect2.y + rect2.height / 2f - (float)(TransferableUIUtility.TradeArrow.height / 2), (float)TransferableUIUtility.TradeArrow.width, (float)TransferableUIUtility.TradeArrow.height); TransferablePositiveCountDirection positiveCountDirection2 = trad.PositiveCountDirection; if ((positiveCountDirection2 == TransferablePositiveCountDirection.Source && trad.CountToTransfer > 0) || (positiveCountDirection2 == TransferablePositiveCountDirection.Destination && trad.CountToTransfer < 0)) { position.x += position.width; position.width *= -1f; } GUI.DrawTexture(position, TransferableUIUtility.TradeArrow); } }
public static void DoCountAdjustInterfaceForSilver(Rect rect, Transferable trad, int _, int min, int max, bool flash) { rect = rect.Rounded(); Rect rect2 = new Rect(rect.center.x - 45f, rect.center.y - 12.5f, 90f, 25f).Rounded(); if (flash) { GUI.DrawTexture(rect2, TransferableUIUtility.FlashTex); } bool num = trad is TransferableOneWay transferableOneWay && transferableOneWay.HasAnyThing && transferableOneWay.AnyThing is Pawn && transferableOneWay.MaxCount == 1; if (num) { bool flag = trad.CountToTransfer != 0; bool checkOn = flag; Widgets.Checkbox(rect2.position, ref checkOn); if (checkOn != flag) { if (checkOn) { trad.AdjustTo(trad.GetMaximumToTransfer()); } else { trad.AdjustTo(trad.GetMinimumToTransfer()); } } } else { Rect rect3 = rect2.ContractedBy(2f); rect3.xMax -= 15f; rect3.xMin += 16f; int val = trad.CountToTransfer; string buffer = trad.EditBuffer; Widgets.TextFieldNumeric(rect3, ref val, ref buffer, min, max); trad.AdjustTo(val); trad.EditBuffer = buffer; } Text.Anchor = TextAnchor.UpperLeft; GUI.color = Color.white; if (!num) { int num2 = (trad.PositiveCountDirection == TransferablePositiveCountDirection.Source) ? 1 : (-1); int num3 = GenUI.CurrentAdjustmentMultiplier(); bool flag2 = trad.GetRange() == 1; if (trad.CanAdjustBy(num2 * num3).Accepted) { Rect rect4 = new Rect(rect2.x - 30f, rect.y, 30f, rect.height); if (flag2) { rect4.x -= rect4.width; rect4.width += rect4.width; } if (Widgets.ButtonText(rect4, "<")) { trad.AdjustBy(num2 * num3); SoundDefOf.Tick_High.PlayOneShotOnCamera(); } if (!flag2) { string label = "<<"; int? num4 = null; rect4.x -= rect4.width; if (Widgets.ButtonText(rect4, label)) { if (num4.HasValue) { trad.AdjustTo(num4.Value); } else if (num2 == 1) { trad.AdjustTo(trad.GetMaximumToTransfer()); } else { trad.AdjustTo(trad.GetMinimumToTransfer()); } SoundDefOf.Tick_High.PlayOneShotOnCamera(); } } } if (trad.CanAdjustBy(-num2 * num3).Accepted) { Rect rect5 = new Rect(rect2.xMax, rect.y, 30f, rect.height); if (flag2) { rect5.width += rect5.width; } if (Widgets.ButtonText(rect5, ">")) { trad.AdjustBy(-num2 * num3); SoundDefOf.Tick_Low.PlayOneShotOnCamera(); } if (!flag2) { string label2 = ">>"; int? num5 = null; rect5.x += rect5.width; if (Widgets.ButtonText(rect5, label2)) { if (num5.HasValue) { trad.AdjustTo(num5.Value); } else if (num2 == 1) { trad.AdjustTo(trad.GetMinimumToTransfer()); } else { trad.AdjustTo(trad.GetMaximumToTransfer()); } SoundDefOf.Tick_Low.PlayOneShotOnCamera(); } } } } if (trad.CountToTransfer != 0) { Rect position = new Rect(rect2.x + rect2.width / 2f - (float)(TradeArrow.width / 2), rect2.y + rect2.height / 2f - (float)(TradeArrow.height / 2), TradeArrow.width, TradeArrow.height); TransferablePositiveCountDirection positiveCountDirection = trad.PositiveCountDirection; if ((positiveCountDirection == TransferablePositiveCountDirection.Source && trad.CountToTransfer > 0) || (positiveCountDirection == TransferablePositiveCountDirection.Destination && trad.CountToTransfer < 0)) { position.x += position.width; position.width *= -1f; } GUI.DrawTexture(position, TradeArrow); } }
/// <summary> /// Create interface for changing amount being transfered in VehicleCaravan dialog /// </summary> /// <param name="rect"></param> /// <param name="trad"></param> /// <param name="pawns"></param> /// <param name="stoppingPoints"></param> /// <param name="index"></param> /// <param name="min"></param> /// <param name="max"></param> /// <param name="flash"></param> /// <param name="readOnly"></param> private static void DoCountAdjustInterfaceInternal(Rect rect, Transferable trad, List <TransferableOneWay> pawns, List <TransferableCountToTransferStoppingPoint> stoppingPoints, int index, int min, int max, bool flash, bool readOnly) { rect = rect.Rounded(); Rect rect2 = new Rect(rect.center.x - 45f, rect.center.y - 12.5f, 90f, 25f).Rounded(); if (flash) { GUI.DrawTexture(rect2, TransferableUIUtility.FlashTex); } TransferableOneWay transferableOneWay = trad as TransferableOneWay; bool flag3 = trad.CountToTransfer != 0; bool flag4 = flag3; Rect buttonRect = new Rect(rect2.x, rect2.y, 120f, rect.height); if (Widgets.ButtonText(buttonRect, "AssignSeats".Translate())) { Find.WindowStack.Add(new Dialog_AssignSeats(pawns, transferableOneWay)); } Rect checkboxRect = new Rect(buttonRect.x + buttonRect.width + 5f, buttonRect.y, 24f, 24f); if (Widgets.ButtonImage(checkboxRect, flag4 ? Widgets.CheckboxOnTex : Widgets.CheckboxOffTex)) { if (!flag4) { Find.WindowStack.Add(new Dialog_AssignSeats(pawns, transferableOneWay)); } else { foreach (Pawn pawn in (trad.AnyThing as VehiclePawn).AllPawnsAboard) { if (CaravanHelper.assignedSeats.ContainsKey(pawn)) { CaravanHelper.assignedSeats.Remove(pawn); } } SoundDefOf.Click.PlayOneShotOnCamera(); flag4 = !flag4; } } if (flag4 != flag3) { if (flag4) { trad.AdjustTo(trad.GetMaximumToTransfer()); } else { trad.AdjustTo(trad.GetMinimumToTransfer()); } } if (trad.CountToTransfer != 0) { Rect position = new Rect(rect2.x + rect2.width / 2f - (VehicleTex.TradeArrow.width / 2), rect2.y + rect2.height / 2f - (VehicleTex.TradeArrow.height / 2), VehicleTex.TradeArrow.width, VehicleTex.TradeArrow.height); TransferablePositiveCountDirection positiveCountDirection2 = trad.PositiveCountDirection; if ((positiveCountDirection2 == TransferablePositiveCountDirection.Source && trad.CountToTransfer > 0) || (positiveCountDirection2 == TransferablePositiveCountDirection.Destination && trad.CountToTransfer < 0)) { position.x += position.width; position.width *= -1f; } //GUI.DrawTexture(position, TradeArrow); //REDO? } }