Added Column bets.

Also created a new BetButton QML file to be shared with all bets.
This commit is contained in:
greek 2024-06-04 22:14:26 +01:00
parent 56a4bdccce
commit b28ff9bb39
5 changed files with 105 additions and 153 deletions

88
BetButton.qml Normal file
View file

@ -0,0 +1,88 @@
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: {
if (rouletteTable.numberOfBets < 2 || border.width == 2) {
if (tapHandler.pressed) {
"#AA999999"
} else if (hoverHandler.hovered) {
"#AAEEEEEE"
} else {
"#00000000"
}
} else {
"#00000000"
}
}
HoverHandler {
id: hoverHandler
}
TapHandler {
id: tapHandler
onTapped: {
if (rouletteTable.numberOfBets < 2 && parent.border.width == 0) {
parent.border.width = 2
roulette.showBetInputDialog(betType, index_, betButton.x + offsetX,
betButton.y + offsetY)
} else if (parent.border.width == 2) {
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 = 2;
rouletteTable.numberOfBets += 1
} else if (b2 == betType && n2 == index_) {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 2;
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
}
}
}
}
}

View file

@ -47,8 +47,8 @@ Dialog {
} }
onActiveFocusChanged: { onActiveFocusChanged: {
dialog.x = 120 + squareX dialog.x = squareX
dialog.y = 60 + squareY dialog.y = squareY
} }
onAccepted: { onAccepted: {

View file

@ -35,6 +35,7 @@ qt_add_qml_module(roulette-payout
QML_FILES QML_FILES
Root.qml Root.qml
BetInputDialog.qml BetInputDialog.qml
BetButton.qml
PlayerAreaView.qml PlayerAreaView.qml
Roulette.qml Roulette.qml
StreetBetsView.qml StreetBetsView.qml

View file

@ -1,6 +1,5 @@
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls
import roulette import roulette
@ -20,83 +19,16 @@ Item {
model: 3 model: 3
Item { Item {
id: betButton
height: 43 height: 43
width: 35 width: 35
Rectangle { BetButton {
id: selected index_: index
visible: true betType: 10
height: parent.height height: parent.height
width: parent.width width: parent.width
border.color: "blue" offsetX: 510
border.width: 0 offsetY: 110
color: {
if (rouletteTable.numberOfBets < 2 || border.width == 2) {
if (tapHandler1.pressed) {
"#AA999999"
} else if (hoverHandler.hovered) {
"#AAEEEEEE"
} else {
"#00000000"
}
} else {
"#00000000"
}
}
HoverHandler {
id: hoverHandler
}
TapHandler {
id: tapHandler1
onTapped: {
if (rouletteTable.numberOfBets < 2 && parent.border.width == 0) {
parent.border.width = 2
roulette.showBetInputDialog(PlayerAreaModel.COLUMN, index, betButton.x, betButton.y)
} else if (parent.border.width == 2) {
parent.border.width = 0
PlayerAreaModel.removeBet(PlayerAreaModel.COLUMN, index)
rouletteTable.numberOfBets -= 1
}
}
}
Connections {
target: PlayerAreaModel
function onFocusedPlayerChanged(b1, n1, b2, n2) {
if (b1 == PlayerAreaModel.COLUMN && n1 == index) {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 2;
rouletteTable.numberOfBets += 1
} else if (b2 == PlayerAreaModel.COLUMN && n2 == index) {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 2;
rouletteTable.numberOfBets += 1
} else {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 0;
}
}
function onBetCanceled(b, n) {
if (b == PlayerAreaModel.COLUMN && index == n) {
selected.border.width = 0
}
}
}
} }
} }
} }

View file

@ -23,90 +23,21 @@ Item {
Repeater { Repeater {
model: 12 model: 12
/*
* This item needs to be here because BetButton can't inherit
* "index" from Repeater even though it is just a QItem itself
*/
Item { Item {
id: betButton
height: 45 height: 45
width: 35 width: 35
Rectangle { BetButton {
id: selected index_: index
visible: true betType: 8
height: parent.height height: parent.height
width: parent.width width: parent.width
border.color: "blue" offsetX: 110
border.width: 0 offsetY: 58
color: {
if (rouletteTable.numberOfBets < 2 || border.width == 2) {
if (tapHandler1.pressed) {
"#AA999999"
} else if (hoverHandler.hovered) {
"#AAEEEEEE"
} else {
"#00000000"
}
} else {
"#00000000"
}
}
HoverHandler {
id: hoverHandler
}
TapHandler {
id: tapHandler1
onTapped: {
if (rouletteTable.numberOfBets < 2 && parent.border.width == 0) {
parent.border.width = 2
/* this is where we create the dialog box on demand */
roulette.showBetInputDialog(PlayerAreaModel.STREET, index, betButton.x, betButton.y)
} else if (parent.border.width == 2) {
parent.border.width = 0
PlayerAreaModel.removeBet(PlayerAreaModel.STREET, index)
rouletteTable.numberOfBets -= 1
}
}
}
/*
* PlayerAreaModel is a singleton (AKA global) object, and Connections is used
* to make these "onReceivedSignal" slots to do something after PlayerAreaModel
* acts
*/
Connections {
target: PlayerAreaModel
function onFocusedPlayerChanged(b1, n1, b2, n2) {
if (b1 == PlayerAreaModel.STREET && n1 == index) {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 2;
rouletteTable.numberOfBets += 1
} else if (b2 == PlayerAreaModel.STREET && n2 == index) {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 2;
rouletteTable.numberOfBets += 1
} else {
if (selected.border.width != 0) {
rouletteTable.numberOfBets -=1
}
selected.border.width = 0;
}
}
function onBetCanceled(b, n) {
if (b == PlayerAreaModel.STREET && index == n) {
selected.border.width = 0
}
}
}
} }
} }
} }