Optimised suboptimal code.
This commit is contained in:
parent
810ca0d9f5
commit
b5db91addb
5 changed files with 102 additions and 147 deletions
|
@ -4,10 +4,15 @@
|
|||
PlayerAreaModel::PlayerAreaModel(QObject *parent)
|
||||
{
|
||||
Player defaultValues;
|
||||
Bet defaultBets;
|
||||
|
||||
for(int i = 0; i < 8; i++){
|
||||
players.append(defaultValues);
|
||||
for (int ii = 0; ii < 2; ii++) {
|
||||
players[i].bets.append(defaultBets);
|
||||
}
|
||||
}
|
||||
/* This is set to avoid segfaults if the starting value is out of bounds */
|
||||
focusedPlayer_ = 1;
|
||||
}
|
||||
|
||||
|
@ -20,10 +25,10 @@ void PlayerAreaModel::setFocusedPlayer(int n)
|
|||
{
|
||||
focusedPlayer_ = n;
|
||||
Player player = players.at(n);
|
||||
BetType b1 = player.bet1.betType;
|
||||
BetType b2 = player.bet2.betType;
|
||||
uint n1 = player.bet1.betSpot;
|
||||
uint n2 = player.bet2.betSpot;
|
||||
BetType b1 = player.bets[0].betType;
|
||||
BetType b2 = player.bets[1].betType;
|
||||
uint n1 = player.bets[0].betSpot;
|
||||
uint n2 = player.bets[1].betSpot;
|
||||
emit focusedPlayerChanged(b1, n1, b2, n2);
|
||||
}
|
||||
|
||||
|
@ -41,44 +46,38 @@ void PlayerAreaModel::bet(BetType b, int n, int bet)
|
|||
{
|
||||
Player *player = &players[focusedPlayer_];
|
||||
|
||||
if (player->bet1.betType == NONE) {
|
||||
player->bet1.betType = b;
|
||||
player->bet1.betValue = bet;
|
||||
player->bet1.betSpot = n;
|
||||
/*
|
||||
* This is needed because the visual roulette board is inverted from the actual QML grid we use to represent it.
|
||||
* Here we use 35 because the grid is 0-indexed, but later we use 36 for convinience
|
||||
*/
|
||||
if (b == SINGLE && n <= 35) {
|
||||
n = 35 - n;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (player->bets[i].betType == NONE) {
|
||||
player->bets[i].betType = b;
|
||||
player->bets[i].betValue = bet;
|
||||
player->bets[i].betSpot = n;
|
||||
/*
|
||||
* This is needed because the visual roulette board is inverted from the
|
||||
* actual QML grid we use to represent it.
|
||||
* Here we use 35 because the grid is 0-indexed, but later we use 36 when it is 1-indexed.
|
||||
*/
|
||||
if (b == SINGLE && n <= 35) {
|
||||
n = 35 - n;
|
||||
}
|
||||
emit betChanged(b, n, bet);
|
||||
break;
|
||||
}
|
||||
emit betChanged(b, n, bet);
|
||||
} else if (player->bet2.betType == NONE) {
|
||||
player->bet2.betType = b;
|
||||
player->bet2.betValue = bet;
|
||||
player->bet2.betSpot = n;
|
||||
if (b == SINGLE && n <= 35) {
|
||||
n = 35 - n;
|
||||
}
|
||||
emit betChanged(b, n, bet);
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerAreaModel::removeBet(BetType b, int n)
|
||||
{
|
||||
Player *player = &players[focusedPlayer_];
|
||||
if (player->bet1.betType == b) {
|
||||
player->bet1.betType = NONE;
|
||||
if (b == SINGLE && n <= 35) {
|
||||
n = 35 - n;
|
||||
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (player->bets[i].betType == b && player->bets[i].betSpot == n) {
|
||||
player->bets[i].betType = NONE;
|
||||
if (b == SINGLE && n <= 35) {
|
||||
n = 35 - n;
|
||||
}
|
||||
emit betRemoved(b, n);
|
||||
}
|
||||
emit betRemoved(b, n);
|
||||
} else if (player->bet2.betType == b) {
|
||||
player->bet2.betType = NONE;
|
||||
if (b == SINGLE && n <= 35) {
|
||||
n = 35 - n;
|
||||
}
|
||||
emit betRemoved(b, n);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,99 +88,61 @@ void PlayerAreaModel::cancelBet(BetType b, int n)
|
|||
|
||||
void PlayerAreaModel::payout()
|
||||
{
|
||||
if (players.at(0).bet1.betType == NONE) {
|
||||
if (players.at(0).bets[0].betType == NONE) {
|
||||
fprintf(stderr, "Select where the ball landed\n");
|
||||
} else {
|
||||
int rollSpot = 36 - players.at(0).bet1.betSpot;
|
||||
int rollSpot = 36 - players.at(0).bets[0].betSpot;
|
||||
|
||||
for (int i = 1; i < 8; i++) {
|
||||
int betType = players.at(i).bet1.betType;
|
||||
int betSpot;
|
||||
players[i].payout = 0;
|
||||
for (int ii = 0; ii < 2; ii++) {
|
||||
int betType = players.at(i).bets[ii].betType;
|
||||
int betSpot;
|
||||
|
||||
if (betType != NONE) {
|
||||
betSpot = players.at(i).bet1.betSpot;
|
||||
if (betType == SINGLE && betSpot <= 35) {
|
||||
betSpot = 36 - betSpot;
|
||||
} else {
|
||||
betSpot += 1;
|
||||
}
|
||||
if (betType != NONE) {
|
||||
betSpot = players.at(i).bets[ii].betSpot;
|
||||
|
||||
if (betType == SINGLE && betSpot == rollSpot) {
|
||||
players[i].payout += players.at(i).bet1.betValue * 21;
|
||||
} else if (betType == RED && (((int64_t)1 << (rollSpot - 1)) & redNumbers)) {
|
||||
players[i].payout += players.at(i).bet1.betValue * 2;
|
||||
} else if (betType == BLACK && !(((int64_t)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;
|
||||
if (betType == SINGLE && betSpot <= 35) {
|
||||
betSpot = 36 - betSpot;
|
||||
} else {
|
||||
betSpot += 1;
|
||||
}
|
||||
} 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 && (((int64_t)1 << (rollSpot - 1)) & column1)) {
|
||||
players[i].payout += players.at(i).bet1.betValue * 3;
|
||||
} else if (betSpot == 2 && (((int64_t)1 << (rollSpot - 1)) & column2)) {
|
||||
players[i].payout += players.at(i).bet1.betValue * 3;
|
||||
} else if (betSpot == 3 && (((int64_t)1 << (rollSpot - 1)) & column3)) {
|
||||
players[i].payout += players.at(i).bet1.betValue * 3;
|
||||
|
||||
if (betType == SINGLE && betSpot == rollSpot) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 21;
|
||||
} else if (betType == RED && (((int64_t)1 << (rollSpot - 1)) & redNumbers)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 2;
|
||||
} else if (betType == BLACK && !(((int64_t)1 << (rollSpot - 1)) & redNumbers)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 2;
|
||||
} else if (betType == ODD && (rollSpot % 2)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 2;
|
||||
} else if (betType == EVEN && !(rollSpot % 2)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 2;
|
||||
} else if (betType == LOW && rollSpot <= 18 ) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 2;
|
||||
} else if (betType == HIGH && rollSpot >= 19 && rollSpot < 37) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 2;
|
||||
} else if (betType == DOZEN) {
|
||||
printf("CHECK %d %d\n", betSpot, rollSpot);
|
||||
if (rollSpot <= 12 * betSpot && rollSpot >= (12 * (betSpot - 1)) + 1) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 3;
|
||||
}
|
||||
} else if (betType == STREET) {
|
||||
if (rollSpot <= 3 * betSpot && rollSpot >= (3 * (betSpot - 1)) + 1) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 6;
|
||||
}
|
||||
} else if (betType == COLUMN) {
|
||||
if (betSpot == 1 && (((int64_t)1 << (rollSpot - 1)) & column1)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 3;
|
||||
} else if (betSpot == 2 && (((int64_t)1 << (rollSpot - 1)) & column2)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 3;
|
||||
} else if (betSpot == 3 && (((int64_t)1 << (rollSpot - 1)) & column3)) {
|
||||
players[i].payout += players.at(i).bets[ii].betValue * 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
betType = players.at(i).bet2.betType;
|
||||
|
||||
if (betType != NONE) {
|
||||
betSpot = players.at(i).bet2.betSpot;
|
||||
if (betType == SINGLE && betSpot <= 35) {
|
||||
betSpot = 36 - betSpot;
|
||||
} else {
|
||||
betSpot += 1;
|
||||
}
|
||||
|
||||
if (betType == SINGLE && betSpot == rollSpot) {
|
||||
players[i].payout += players.at(i).bet2.betValue * 21;
|
||||
} else if (betType == RED && (((int64_t)1 << (rollSpot - 1)) & redNumbers)) {
|
||||
players[i].payout += players.at(i).bet2.betValue * 2;
|
||||
} else if (betType == BLACK && !(((int64_t)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 && (((int64_t)1 << (rollSpot - 1)) & column1)) {
|
||||
players[i].payout += players.at(i).bet2.betValue * 3;
|
||||
} else if (betSpot == 2 && (((int64_t)1 << (rollSpot - 1)) & column2)) {
|
||||
players[i].payout += players.at(i).bet2.betValue * 3;
|
||||
} else if (betSpot == 3 && (((int64_t)1 << (rollSpot - 1)) & column3)) {
|
||||
players[i].payout += players.at(i).bet2.betValue * 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
emit results(players.at(i).playerName, i, players.at(i).payout);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue