From 7e4d1bb510198346495670017d73b2343ecd5ed0 Mon Sep 17 00:00:00 2001 From: Daniil Syzenko Date: Thu, 30 Apr 2026 11:42:15 +0100 Subject: [PATCH] Fix checkout helper logic --- lib/utils/checkout_helper.dart | 196 ++++++++++++++++----------------- lib/utils/score_validator.dart | 1 - 2 files changed, 98 insertions(+), 99 deletions(-) diff --git a/lib/utils/checkout_helper.dart b/lib/utils/checkout_helper.dart index 6699dd8..00e099d 100644 --- a/lib/utils/checkout_helper.dart +++ b/lib/utils/checkout_helper.dart @@ -28,40 +28,40 @@ abstract final class CheckoutHelper { 16: ['D8'], 17: ['S1', 'D8'], 18: ['D9'], - 19: ['S3', 'D8'], + 19: ['S1', 'D9'], 20: ['D10'], 21: ['S1', 'D10'], 22: ['D11'], - 23: ['S7', 'D8'], + 23: ['S1', 'D11'], 24: ['D12'], - 25: ['S9', 'D8'], + 25: ['S1', 'D12'], 26: ['D13'], - 27: ['S3', 'D12'], + 27: ['S1', 'D13'], 28: ['D14'], 29: ['S1', 'D14'], 30: ['D15'], - 31: ['S7', 'D12'], + 31: ['S1', 'D15'], 32: ['D16'], 33: ['S1', 'D16'], 34: ['D17'], - 35: ['S3', 'D16'], + 35: ['S1', 'D17'], 36: ['D18'], 37: ['S1', 'D18'], 38: ['D19'], - 39: ['S7', 'D16'], + 39: ['S1', 'D19'], 40: ['D20'], 41: ['S1', 'D20'], - 42: ['D21'], // outer bull D21 doesn't exist — S10, D16 + 42: ['S2', 'D20'], 43: ['S3', 'D20'], - 44: ['D22'], // S4, D20 + 44: ['S4', 'D20'], 45: ['S5', 'D20'], 46: ['S6', 'D20'], 47: ['S7', 'D20'], - 48: ['D24'], + 48: ['S8', 'D20'], 49: ['S9', 'D20'], 50: ['Bull'], 51: ['S11', 'D20'], - 52: ['D16', 'D10'], // S12, D20 + 52: ['S12', 'D20'], 53: ['S13', 'D20'], 54: ['S14', 'D20'], 55: ['S15', 'D20'], @@ -70,108 +70,108 @@ abstract final class CheckoutHelper { 58: ['S18', 'D20'], 59: ['S19', 'D20'], 60: ['S20', 'D20'], - 61: ['S1', 'Bull'], // or T15, D8 - 62: ['S2', 'Bull'], - 63: ['S3', 'Bull'], // or T13, D12 - 64: ['T16', 'D8'], - 65: ['T15', 'D10'], - 66: ['T10', 'D18'], - 67: ['T17', 'D8'], - 68: ['T12', 'D16'], // or T20, D4 - 69: ['T19', 'D6'], // or T15, D12 - 70: ['T18', 'D8'], // or T10, D20 - 71: ['T13', 'D16'], - 72: ['T12', 'D18'], // or T16, D12 - 73: ['T19', 'D8'], - 74: ['T14', 'D16'], - 75: ['T17', 'D12'], // or T15, D15 - 76: ['T20', 'D8'], - 77: ['T19', 'D10'], // or T7, D28 (not valid) — T15, D16 - 78: ['T18', 'D12'], + 61: ['T7', 'D20'], + 62: ['D11', 'D20'], + 63: ['S13', 'Bull'], + 64: ['T8', 'D20'], + 65: ['Outer', 'D20'], + 66: ['D13', 'D20'], + 67: ['T9', 'D20'], + 68: ['D14', 'D20'], + 69: ['T11', 'D18'], + 70: ['D15', 'D20'], + 71: ['T11', 'D19'], + 72: ['D16', 'D20'], + 73: ['T11', 'D20'], + 74: ['D17', 'D20'], + 75: ['T13', 'D18'], + 76: ['D18', 'D20'], + 77: ['T13', 'D19'], + 78: ['D19', 'D20'], 79: ['T13', 'D20'], - 80: ['T20', 'D10'], - 81: ['T19', 'D12'], // or T15, D18 + 80: ['D20', 'D20'], + 81: ['T15', 'D18'], 82: ['T14', 'D20'], - 83: ['T17', 'D16'], - 84: ['T20', 'D12'], + 83: ['T15', 'D19'], + 84: ['T16', 'D18'], 85: ['T15', 'D20'], - 86: ['T18', 'D16'], + 86: ['T16', 'D19'], 87: ['T17', 'D18'], - 88: ['T20', 'D14'], - 89: ['T19', 'D16'], - 90: ['T20', 'D15'], + 88: ['T16', 'D20'], + 89: ['T17', 'D19'], + 90: ['Bull', 'D20'], 91: ['T17', 'D20'], - 92: ['T20', 'D16'], + 92: ['T18', 'D19'], 93: ['T19', 'D18'], 94: ['T18', 'D20'], 95: ['T19', 'D19'], 96: ['T20', 'D18'], 97: ['T19', 'D20'], 98: ['T20', 'D19'], - 99: ['T19', 'D21'], // T19, S10, D16 — use T19, Bull + 99: ['S19', 'D20', 'D20'], 100: ['T20', 'D20'], - 101: ['T17', 'D25'], // T17, Bull - 102: ['T20', 'D21'], // T20, S2, D20 - 103: ['T19', 'D23'], // T19, S6, D20 - 104: ['T18', 'D25'], // T18, Bull - 105: ['T20', 'D22'], // T20, S5, D20 - 106: ['T20', 'D23'], // T20, S6, D20 - 107: ['T19', 'D25'], // T19, Bull - 108: ['T20', 'D24'], // T20, S8, D20 - 109: ['T20', 'D24'], // T19, S12, D20 - 110: ['T20', 'D25'], // T20, Bull - 111: ['T20', 'S11', 'D20'], - 112: ['T20', 'S12', 'D20'], - 113: ['T20', 'S13', 'D20'], - 114: ['T20', 'S14', 'D20'], - 115: ['T20', 'S15', 'D20'], - 116: ['T20', 'S16', 'D20'], - 117: ['T20', 'S17', 'D20'], - 118: ['T20', 'S18', 'D20'], - 119: ['T20', 'S19', 'D20'], - 120: ['T20', 'S20', 'D20'], - 121: ['T20', 'S11', 'Bull'], - 122: ['T18', 'T16', 'D14'], // T18, S14, D20 — simplified - 123: ['T19', 'S6', 'Bull'], - 124: ['T20', 'T4', 'D20'], // T20, S4 = not quite right - 125: ['T20', 'S5', 'Bull'], // T25 doesn't exist - 126: ['T19', 'S9', 'Bull'], - 127: ['T20', 'S7', 'Bull'], - 128: ['T18', 'T14', 'D16'], - 129: ['T19', 'T12', 'D12'], - 130: ['T20', 'T10', 'D20'], - 131: ['T20', 'S11', 'Bull'], // duplicate of 121 — T19, T14, D12 - 132: ['T20', 'T16', 'D12'], - 133: ['T20', 'T7', 'D24'], // T20, T19, D8 - 134: ['T20', 'T14', 'D16'], - 135: ['T20', 'T15', 'D15'], - 136: ['T20', 'T16', 'D14'], - 137: ['T20', 'T19', 'D10'], // T20, T15, D16 - 138: ['T20', 'T18', 'D12'], - 139: ['T19', 'T14', 'D20'], - 140: ['T20', 'T20', 'D20'], - 141: ['T20', 'T19', 'D12'], - 142: ['T20', 'T18', 'D14'], - 143: ['T20', 'T17', 'D16'], - 144: ['T20', 'T20', 'D12'], - 145: ['T20', 'T19', 'D14'], - 146: ['T20', 'T18', 'D16'], - 147: ['T20', 'T17', 'D18'], - 148: ['T20', 'T20', 'D14'], - 149: ['T20', 'T19', 'D16'], - 150: ['T20', 'T18', 'D18'], - 151: ['T20', 'T17', 'D20'], - 152: ['T20', 'T20', 'D16'], - 153: ['T20', 'T19', 'D18'], - 154: ['T20', 'T18', 'D20'], - 155: ['T20', 'T19', 'D19'], + 101: ['S1', 'T20', 'D20'], + 102: ['D11', 'D20', 'D20'], + 103: ['S3', 'T20', 'D20'], + 104: ['D12', 'D20', 'D20'], + 105: ['S5', 'T20', 'D20'], + 106: ['D13', 'D20', 'D20'], + 107: ['S7', 'T20', 'D20'], + 108: ['D14', 'D20', 'D20'], + 109: ['S9', 'T20', 'D20'], + 110: ['T20', 'Bull'], + 111: ['S11', 'T20', 'D20'], + 112: ['D16', 'D20', 'D20'], + 113: ['S13', 'T20', 'D20'], + 114: ['D17', 'D20', 'D20'], + 115: ['S15', 'T20', 'D20'], + 116: ['D18', 'D20', 'D20'], + 117: ['S17', 'T20', 'D20'], + 118: ['D19', 'D20', 'D20'], + 119: ['S19', 'T20', 'D20'], + 120: ['D20', 'D20', 'D20'], + 121: ['D12', 'T19', 'D20'], + 122: ['D11', 'T20', 'D20'], + 123: ['D13', 'T19', 'D20'], + 124: ['D12', 'T20', 'D20'], + 125: ['D14', 'T19', 'D20'], + 126: ['D13', 'T20', 'D20'], + 127: ['D15', 'T19', 'D20'], + 128: ['D14', 'T20', 'D20'], + 129: ['D16', 'T19', 'D20'], + 130: ['D15', 'T20', 'D20'], + 131: ['D17', 'T19', 'D20'], + 132: ['D16', 'T20', 'D20'], + 133: ['D18', 'T19', 'D20'], + 134: ['D17', 'T20', 'D20'], + 135: ['D19', 'T19', 'D20'], + 136: ['D18', 'T20', 'D20'], + 137: ['D20', 'T19', 'D20'], + 138: ['D19', 'T20', 'D20'], + 139: ['T13', 'T20', 'D20'], + 140: ['D20', 'T20', 'D20'], + 141: ['T15', 'T20', 'D18'], + 142: ['T14', 'T20', 'D20'], + 143: ['T15', 'T20', 'D19'], + 144: ['T16', 'T20', 'D18'], + 145: ['T15', 'T20', 'D20'], + 146: ['T16', 'T20', 'D19'], + 147: ['T17', 'T20', 'D18'], + 148: ['T16', 'T20', 'D20'], + 149: ['T17', 'T20', 'D19'], + 150: ['T18', 'T20', 'D18'], + 151: ['T17', 'T20', 'D20'], + 152: ['T18', 'T20', 'D19'], + 153: ['T19', 'T20', 'D18'], + 154: ['T18', 'T20', 'D20'], + 155: ['T19', 'T20', 'D19'], 156: ['T20', 'T20', 'D18'], - 157: ['T20', 'T19', 'D20'], + 157: ['T19', 'T20', 'D20'], 158: ['T20', 'T20', 'D19'], 160: ['T20', 'T20', 'D20'], - 161: ['T20', 'T17', 'Bull'], - 164: ['T20', 'T18', 'Bull'], - 167: ['T20', 'T19', 'Bull'], + 161: ['T17', 'T20', 'Bull'], + 164: ['T18', 'T20', 'Bull'], + 167: ['T19', 'T20', 'Bull'], 170: ['T20', 'T20', 'Bull'], }; } diff --git a/lib/utils/score_validator.dart b/lib/utils/score_validator.dart index f43f61a..946af26 100644 --- a/lib/utils/score_validator.dart +++ b/lib/utils/score_validator.dart @@ -11,7 +11,6 @@ abstract final class ScoreValidator { if (multiplierType == MultiplierType.outerBull) return 25; if (multiplierType == MultiplierType.miss) return 0; if (!isValidSector(rawValue)) return null; - if (multiplierType == MultiplierType.triple && rawValue == 25) return null; // no triple bull return MultiplierType.computeScore(rawValue, multiplierType); }