import QtQuick import QtQuick.Controls import roulette Item { required property int betType required property int index_ required property int offsetX required property int offsetY id: betButton Rectangle { id: selected visible: true height: parent.height width: parent.width border.color: "blue" border.width: 0 color: { /* * A bit of a mess * The left side of the OR is checking if the player is croupier, and if it is, if it hasn't made a bet that has to be a number. * Even if the above isn't true, it still highlights if it's hovering a bet so that it can remove the bet. * * The right side of the OR is similar logic but for normal players that can make two bets on any square of the board */ if (((PlayerAreaModel.focusedPlayer == 0 && betType == 9) && (rouletteTable.numberOfBets < 1 || border.width == 3)) || (PlayerAreaModel.focusedPlayer != 0 && (rouletteTable.numberOfBets < 2 || border.width == 3))) { if (tapHandler.pressed) { "#88999999" } else if (hoverHandler.hovered) { "#88EEEEEE" } else { "#00000000" } } else { "#00000000" } } HoverHandler { id: hoverHandler } TapHandler { id: tapHandler onTapped: { /* * Similar logic to what is used for setting the color attribute, but this time only go inside the "if" if a bet hasn't * been made on the square that was clicked. */ if (((PlayerAreaModel.focusedPlayer == 0 && betType == 9) && (rouletteTable.numberOfBets < 1 && parent.border.width != 3)) || (PlayerAreaModel.focusedPlayer != 0 && (rouletteTable.numberOfBets < 2 && parent.border.width != 3))) { parent.border.width = 3 /* Don't show this dialog for the croupier */ if (PlayerAreaModel.focusedPlayer != 0) { roulette.showBetInputDialog(betType, index_, betButton.parent.x + offsetX, betButton.parent.y + offsetY) } else { rouletteTable.numberOfBets = 1 PlayerAreaModel.bet(betType, index_, 0) } } else if (parent.border.width == 3) { parent.border.width = 0 PlayerAreaModel.removeBet(betType, index_) rouletteTable.numberOfBets -= 1 } } } Connections { target: PlayerAreaModel function onFocusedPlayerChanged(b1, n1, b2, n2) { if (b1 == betType && n1 == index_) { if (selected.border.width != 0) { rouletteTable.numberOfBets -=1 } selected.border.width = 3; rouletteTable.numberOfBets += 1 } else if (b2 == betType && n2 == index_) { if (selected.border.width != 0) { rouletteTable.numberOfBets -=1 } selected.border.width = 3; rouletteTable.numberOfBets += 1 } else { if (selected.border.width != 0) { rouletteTable.numberOfBets -=1 } selected.border.width = 0; } } function onBetCanceled(b, n) { if (b == betType && index_ == n) { selected.border.width = 0 } } } } }