From ffcc5f892c7198812290db8aa0d932aad34cf54a Mon Sep 17 00:00:00 2001 From: greek Date: Sat, 8 Jun 2024 00:41:25 +0100 Subject: [PATCH] Calculate payouts. --- PlayerAreaModel.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++++- PlayerAreaModel.h | 6 +++ PlayerAreaView.qml | 2 +- 3 files changed, 96 insertions(+), 3 deletions(-) diff --git a/PlayerAreaModel.cpp b/PlayerAreaModel.cpp index 2869511..d77e10b 100644 --- a/PlayerAreaModel.cpp +++ b/PlayerAreaModel.cpp @@ -32,7 +32,7 @@ QString PlayerAreaModel::getPlayerName(int n) void PlayerAreaModel::setPlayerName(QString s, int n) { - this->players[n].playerName = s; + players[n].playerName = s; } void PlayerAreaModel::bet(BetType b, int n, int bet) @@ -83,5 +83,92 @@ void PlayerAreaModel::cancelBet(BetType b, int n) void PlayerAreaModel::payout() { - printf("payout\n"); + if (players.at(0).bet1.betType == NONE) { + printf("Select where the ball landed\n"); + } else { + int rollSpot = 36 - players.at(0).bet1.betSpot; + + for (int i = 1; i < 8; i++) { + int betType = players.at(i).bet1.betType; + int betSpot; + if (betType == SINGLE) { + betSpot = 36 - players.at(i).bet1.betSpot; + } else { + betSpot = players.at(i).bet1.betSpot + 1; + } + players[i].payout = 0; + printf("%d %d\n", betSpot, rollSpot); + + if (betType == SINGLE && betSpot == rollSpot) { + players[i].payout += players.at(i).bet1.betValue * 21; + } else if (betType == RED && ((1 << (rollSpot - 1)) & redNumbers)) { + players[i].payout += players.at(i).bet1.betValue * 2; + } else if (betType == BLACK && !((1 << (rollSpot - 1)) & redNumbers)) { + players[i].payout += players.at(i).bet1.betValue * 2; + } else if (betType == ODD && (rollSpot % 2)) { + players[i].payout += players.at(i).bet1.betValue * 2; + } else if (betType == EVEN && !(rollSpot % 2)) { + players[i].payout += players.at(i).bet1.betValue * 2; + } else if (betType == LOW && rollSpot <= 18 ) { + players[i].payout += players.at(i).bet1.betValue * 2; + } else if (betType == HIGH && rollSpot >= 19 && rollSpot < 37) { + players[i].payout += players.at(i).bet1.betValue * 2; + } else if (betType == DOZEN) { + if (rollSpot <= 12 * betSpot && rollSpot >= (12 * (betSpot - 1)) + 1) { + players[i].payout += players.at(i).bet1.betValue * 3; + } + } else if (betType == STREET) { + if (rollSpot <= 3 * betSpot && rollSpot >= (3 * (betSpot - 1)) + 1) { + players[i].payout += players.at(i).bet1.betValue * 6; + } + } else if (betType == COLUMN) { + if (betSpot == 1 && ((1 << (rollSpot - 1)) & column1)) { + players[i].payout += players.at(i).bet1.betValue * 3; + } else if (betSpot == 2 && ((1 << (rollSpot - 1)) & column2)) { + players[i].payout += players.at(i).bet1.betValue * 3; + } else if (betSpot == 3 && ((1 << (rollSpot - 1)) & column3)) { + players[i].payout += players.at(i).bet1.betValue * 3; + } + } + + betType = players.at(i).bet2.betType; + if (betType == SINGLE) { + betSpot = 36 - players.at(i).bet1.betSpot; + } else { + betSpot = players.at(i).bet1.betSpot + 1; + } + if (betType == SINGLE && betSpot == rollSpot) { + players[i].payout += players.at(i).bet2.betValue * 21; + } else if (betType == RED && ((1 << (rollSpot - 1)) & redNumbers)) { + players[i].payout += players.at(i).bet2.betValue * 2; + } else if (betType == BLACK && !((1 << (rollSpot - 1)) & redNumbers)) { + players[i].payout += players.at(i).bet2.betValue * 2; + } else if (betType == ODD && (rollSpot % 2)) { + players[i].payout += players.at(i).bet2.betValue * 2; + } else if (betType == EVEN && !(rollSpot % 2)) { + players[i].payout += players.at(i).bet2.betValue * 2; + } else if (betType == LOW && rollSpot <= 18 ) { + players[i].payout += players.at(i).bet2.betValue * 2; + } else if (betType == HIGH && rollSpot >= 19 && rollSpot < 37) { + players[i].payout += players.at(i).bet2.betValue * 2; + } else if (betType == DOZEN) { + if (rollSpot <= 12 * betSpot && rollSpot >= (12 * (betSpot - 1)) + 1) { + players[i].payout += players.at(i).bet2.betValue * 3; + } + } else if (betType == STREET) { + if (rollSpot <= 3 * betSpot && rollSpot >= (3 * (betSpot - 1)) + 1) { + players[i].payout += players.at(i).bet2.betValue * 6; + } + } else if (betType == COLUMN) { + if (betSpot == 1 && ((1 << (rollSpot - 1)) & column1)) { + players[i].payout += players.at(i).bet2.betValue * 3; + } else if (betSpot == 2 && ((1 << (rollSpot - 1)) & column2)) { + players[i].payout += players.at(i).bet2.betValue * 3; + } else if (betSpot == 3 && ((1 << (rollSpot - 1)) & column3)) { + players[i].payout += players.at(i).bet2.betValue * 3; + } + } + printf("Player %s got %d gil\n", players.at(i).playerName.toLocal8Bit().data(), players.at(i).payout); + } + } } diff --git a/PlayerAreaModel.h b/PlayerAreaModel.h index 5dff5d2..c32e87f 100644 --- a/PlayerAreaModel.h +++ b/PlayerAreaModel.h @@ -64,9 +64,15 @@ private: QString playerName = ""; Bet bet1; Bet bet2; + int payout; }; QList players; int focusedPlayer_; + + long long redNumbers = 45857548629; + long long column1 = 9817068105; + long long column2 = 19634136210; + long long column3 = 39268272420; }; diff --git a/PlayerAreaView.qml b/PlayerAreaView.qml index 493cba7..876797b 100644 --- a/PlayerAreaView.qml +++ b/PlayerAreaView.qml @@ -129,7 +129,7 @@ Item { topMargin: 6 } - onTextEdited: PlayerAreaModel.setPlayerName(text, index) + onTextEdited: PlayerAreaModel.setPlayerName(text, index + 1) onActiveFocusChanged: { /* focusReason 0, 1 and 2 are mouse, tab forward, and tab backward, respectively */ if (activeFocus && (focusReason == 0 || focusReason == 1 || focusReason == 2)) {