2024-06-04 22:14:26 +01:00
|
|
|
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
|
|
|
|
|
2024-06-05 07:52:49 +01:00
|
|
|
color: {
|
2024-06-09 13:25:58 +01:00
|
|
|
/*
|
|
|
|
* 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"
|
2024-06-04 22:14:26 +01:00
|
|
|
} else {
|
|
|
|
"#00000000"
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
"#00000000"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
HoverHandler {
|
|
|
|
id: hoverHandler
|
|
|
|
}
|
|
|
|
TapHandler {
|
|
|
|
id: tapHandler
|
|
|
|
|
|
|
|
onTapped: {
|
2024-06-09 13:25:58 +01:00
|
|
|
/*
|
|
|
|
* 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))) {
|
2024-06-05 23:25:19 +01:00
|
|
|
parent.border.width = 3
|
2024-06-07 10:06:28 +01:00
|
|
|
|
|
|
|
/* 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)
|
|
|
|
}
|
2024-06-05 23:25:19 +01:00
|
|
|
} else if (parent.border.width == 3) {
|
2024-06-04 22:14:26 +01:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2024-06-05 23:25:19 +01:00
|
|
|
selected.border.width = 3;
|
2024-06-04 22:14:26 +01:00
|
|
|
rouletteTable.numberOfBets += 1
|
|
|
|
} else if (b2 == betType && n2 == index_) {
|
|
|
|
if (selected.border.width != 0) {
|
|
|
|
rouletteTable.numberOfBets -=1
|
|
|
|
}
|
|
|
|
|
2024-06-05 23:25:19 +01:00
|
|
|
selected.border.width = 3;
|
2024-06-04 22:14:26 +01:00
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|