From 4a9274f4832cc8b9ea73eab5aaf7856344ffcb48 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 28 Mar 2007 10:21:51 +0000 Subject: [PATCH] --- src/engine/local_engine/localplayer.cpp | 480 ++- src/gui/qt/log/log.cpp | 6 +- src/gui/qt/mainwindow.ui | 3117 +++++++++-------- src/gui/qt/mainwindow/mainwindowimpl.cpp | 276 +- src/gui/qt/mainwindow/mainwindowimpl.h | 7 +- .../qt/mainwindow/startsplash/startsplash.cpp | 38 +- src/gui/qt/resources.qrc | 1 + src/gui/qt/resources/graphics/logoChip3D.png | Bin 0 -> 13358 bytes .../resources/guiv2/opponentBoxActiveGlow.png | Bin 1049 -> 1151 bytes .../resources/guiv2/playerBoxActiveGlow.png | Bin 1710 -> 1733 bytes .../resources/guiv2/playerBoxInactiveGlow.png | Bin 913 -> 738 bytes .../qt/resources/guiv2/playeraction_03.png | Bin 2508 -> 2891 bytes .../qt/resources/guiv2/playeraction_05.png | Bin 2683 -> 2949 bytes .../qt/resources/guiv2/playeraction_07.png | Bin 2289 -> 2585 bytes .../qt/resources/opponentBoxActiveGlow.png | Bin 0 -> 1151 bytes src/gui/qt/resources/playerBoxActiveGlow.png | Bin 0 -> 1733 bytes .../qt/resources/playerBoxInactiveGlow.png | Bin 0 -> 738 bytes src/gui/qt/resources/playeraction_03.png | Bin 0 -> 2891 bytes src/gui/qt/resources/playeraction_05.png | Bin 0 -> 2949 bytes src/gui/qt/resources/playeraction_07.png | Bin 0 -> 2585 bytes 20 files changed, 1960 insertions(+), 1965 deletions(-) create mode 100644 src/gui/qt/resources/graphics/logoChip3D.png create mode 100644 src/gui/qt/resources/opponentBoxActiveGlow.png create mode 100644 src/gui/qt/resources/playerBoxActiveGlow.png create mode 100644 src/gui/qt/resources/playerBoxInactiveGlow.png create mode 100644 src/gui/qt/resources/playeraction_03.png create mode 100644 src/gui/qt/resources/playeraction_05.png create mode 100644 src/gui/qt/resources/playeraction_07.png diff --git a/src/engine/local_engine/localplayer.cpp b/src/engine/local_engine/localplayer.cpp index af738dbe..2556b53a 100755 --- a/src/engine/local_engine/localplayer.cpp +++ b/src/engine/local_engine/localplayer.cpp @@ -63,7 +63,6 @@ LocalPlayer::LocalPlayer(BoardInterface *b, int id, std::string name, int sC, bo } - LocalPlayer::~LocalPlayer() { } @@ -113,8 +112,6 @@ void LocalPlayer::action() { } break; default: {} } - - cout << myID << ": " << myAction << endl; myTurn = 0; // cout << "jetzt" << endl; @@ -125,6 +122,7 @@ void LocalPlayer::action() { } + void LocalPlayer::preflopEngine() { int bet = 0; @@ -142,16 +140,22 @@ void LocalPlayer::preflopEngine() { // 3. Call -- Raise myNiveau[2] = 53 + myDude4 - 6*(players - 2); + // eigenes mögliches highestSet + int individualHighestSet = actualHand->getPreflop()->getHighestSet(); + if(individualHighestSet > myCash) individualHighestSet = myCash; + // Verhaeltnis Set / Cash - if(myCash/actualHand->getPreflop()->getHighestSet() >= 25) { - myNiveau[0] += (25-myCash/actualHand->getPreflop()->getHighestSet())/10; + + + if(myCash/individualHighestSet >= 25) { + myNiveau[0] += (25-myCash/individualHighestSet)/10; } else { - myNiveau[0] += (25-myCash/actualHand->getPreflop()->getHighestSet())/3; + myNiveau[0] += (25-myCash/individualHighestSet)/3; } // Verhaeltnis Set / Cash für raise - if(myCash/actualHand->getPreflop()->getHighestSet() < 10) { - myNiveau[2] += (10-myCash/actualHand->getPreflop()->getHighestSet())/2; + if(myCash/individualHighestSet < 10) { + myNiveau[2] += (10-myCash/individualHighestSet)/2; } // cout << myID << ": " << myHoleCardsValue << " - " << myNiveau[0] << " " << myNiveau[2] << " - " << myCards[0] << " " << myCards[1] << endl; @@ -219,7 +223,6 @@ void LocalPlayer::preflopEngine() { } - void LocalPlayer::flopEngine() { int raise = 0; @@ -247,19 +250,23 @@ void LocalPlayer::flopEngine() { // myNiveau[2] -= aggValue; // } + // eigenes mögliches highestSet + int individualHighestSet = actualHand->getFlop()->getHighestSet(); + if(individualHighestSet > myCash) individualHighestSet = myCash; + // aktiv oder passiv? if(actualHand->getFlop()->getHighestSet() > 0) { // Verhaeltnis Set / Cash für call - if(myCash/actualHand->getFlop()->getHighestSet() >= 25) { - myNiveau[0] += (25-myCash/actualHand->getFlop()->getHighestSet())/20; + if(myCash/individualHighestSet >= 25) { + myNiveau[0] += (25-myCash/individualHighestSet)/20; } else { - myNiveau[0] += (25-myCash/actualHand->getFlop()->getHighestSet())/3; + myNiveau[0] += (25-myCash/individualHighestSet)/3; } // Verhaeltnis Set / Cash für raise - if(myCash/actualHand->getFlop()->getHighestSet() < 10) { - myNiveau[2] += (10-myCash/actualHand->getFlop()->getHighestSet())/2; + if(myCash/individualHighestSet < 10) { + myNiveau[2] += (10-myCash/individualHighestSet)/2; } // raise (bei hohem Niveau) @@ -294,7 +301,7 @@ void LocalPlayer::flopEngine() { } else { // call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt - if(myOdds >= myNiveau[0] || (mySet >= actualHand->getFlop()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > actualHand->getFlop()->getHighestSet() && myNiveau[0]-3)) { + if(myOdds >= myNiveau[0] || (mySet >= actualHand->getFlop()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > individualHighestSet && myNiveau[0]-3)) { // all in bei knappem call if(actualHand->getFlop()->getHighestSet() > (myCash*3.0)/4.0) { raise = myCash; @@ -324,12 +331,16 @@ void LocalPlayer::flopEngine() { if(myCash/(2*actualHand->getSmallBlind()) <= 6) { raise = myCash; } + // all in bei knappem bet + if(bet > (myCash*4.0)/5.0) { + bet = myCash; + } myAction = 4; } } - cout << myID << ": Dude " << myDude4 << "\t Wert " << myOdds << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << endl; +// cout << myID << ": Dude " << myDude4 << "\t Wert " << myOdds << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << endl; evaluation(bet, raise); @@ -581,22 +592,6 @@ void LocalPlayer::flopEngine() { } - - - - - - - - - - - - - - - - void LocalPlayer::turnEngine() { ConfigFile myConfig; @@ -616,75 +611,21 @@ void LocalPlayer::turnEngine() { // turnCardsValue(tempArray); + int raise = 0; + int bet = 0; + readFile(); + // Niveaus setzen + Dude + Anzahl Gegenspieler + // 1. Fold -- Call + myNiveau[0] = 42 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; + // 2. Check -- Bet + myNiveau[1] = 53 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; + // 3. Call -- Raise + myNiveau[2] = 64 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; - // Prozent ausrechnen - - int i, j, k; - int tempBoardCardsArray[5]; - int tempMyCardsArray[7]; - int tempOpponentCardsArray[7]; - actualBoard->getMyCards(tempBoardCardsArray); - - tempMyCardsArray[0] = myCards[0]; - tempMyCardsArray[1] = myCards[1]; - tempMyCardsArray[2] = tempBoardCardsArray[0]; - tempMyCardsArray[3] = tempBoardCardsArray[1]; - tempMyCardsArray[4] = tempBoardCardsArray[2]; - tempMyCardsArray[5] = tempBoardCardsArray[3]; - - tempOpponentCardsArray[2] = tempBoardCardsArray[0]; - tempOpponentCardsArray[3] = tempBoardCardsArray[1]; - tempOpponentCardsArray[4] = tempBoardCardsArray[2]; - tempOpponentCardsArray[5] = tempBoardCardsArray[3]; - - int tempMyCardsValue; - int tempOpponentCardsValue; - - int countAll = 0; - int countMy = 0; - - for(i=0; i<49; i++) { - if(i != myCards[0] && i != myCards[1] && i != tempBoardCardsArray[0] && i != tempBoardCardsArray[1] && i != tempBoardCardsArray[2]) { - for(j=i+1; j<50; j++) { - if(j != myCards[0] && j != myCards[1] && j != tempBoardCardsArray[0] && j != tempBoardCardsArray[1] && j != tempBoardCardsArray[2]) { - for(k=j+1; k<51; k++) { - if(k != myCards[0] && k != myCards[1] && k != tempBoardCardsArray[0] && k != tempBoardCardsArray[1] && k != tempBoardCardsArray[2]) { - - countAll++; - - tempOpponentCardsArray[0] = i; - tempOpponentCardsArray[1] = j; - tempOpponentCardsArray[6] = k; - tempMyCardsArray[6] = k; - tempMyCardsValue = myCardsValue->cardsValue(tempMyCardsArray,0); - tempOpponentCardsValue = myCardsValue->cardsValue(tempOpponentCardsArray,0); - - if(tempMyCardsValue>=tempOpponentCardsValue) countMy++; - } - } - } - } - } - } - - myOdds = 100.0*(countMy*1.0)/(countAll*1.0); - // cout << "Prozent: " << percent << endl; - - int raise = 0; - int bet = 0; - - // Niveaus setzen + Dude + Anzahl Gegenspieler - // 1. Fold -- Call - myNiveau[0] = 40 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; - // 2. Check -- Bet - myNiveau[1] = 52 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; - // 3. Call -- Raise - myNiveau[2] = 64 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; - - // auf Aggresivität des humanPlayers eingehen -// int aggValue = ( (50*(actualHand->getPlayerArray()[0]->getMyAverageSets()-6*actualHand->getSmallBlind())) / (actualHand->getStartQuantityPlayers()*actualHand->getStartCash() - 6*actualHand->getSmallBlind()) ); + // auf Aggresivität des humanPlayers eingehen +// int aggValue = ( (50*(actualHand->getPlayerArray()[0]->getMyAverageSets()-6*actualHand->getSmallBlind())) / (actualHand->getStartQuantityPlayers()*actualHand->getStartCash() - 6*actualHand->getSmallBlind()) ); // if(aggValue > 0) { // myNiveau[0] -= aggValue; @@ -694,107 +635,100 @@ void LocalPlayer::turnEngine() { // cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl; - // aktiv oder passiv? - if(actualHand->getTurn()->getHighestSet() > 0) { + // eigenes mögliches highestSet + int individualHighestSet = actualHand->getTurn()->getHighestSet(); + if(individualHighestSet > myCash) individualHighestSet = myCash; -// Verhaeltnis Set / Cash - if(myCash/actualHand->getTurn()->getHighestSet() >= 25) { - myNiveau[0] += (25-myCash/actualHand->getTurn()->getHighestSet())/10; - } else { - myNiveau[0] += (25-myCash/actualHand->getTurn()->getHighestSet())/3; - } + // aktiv oder passiv? + if(actualHand->getTurn()->getHighestSet() > 0) { - // Verhaeltnis Set / Cash für raise - if(myCash/actualHand->getTurn()->getHighestSet() < 10) { - myNiveau[2] += (10-myCash/actualHand->getTurn()->getHighestSet())/2; - } +// Verhaeltnis Set / Cash + if(myCash/individualHighestSet >= 25) { + myNiveau[0] += (25-myCash/individualHighestSet)/10; + } else { + myNiveau[0] += (25-myCash/individualHighestSet)/3; + } - // raise (bei hohem Niveau) - if(myOdds >= myNiveau[2]) { + // Verhaeltnis Set / Cash für raise + if(myCash/individualHighestSet < 10) { + myNiveau[2] += (10-myCash/individualHighestSet)/2; + } + + // raise (bei hohem Niveau) + if(myOdds >= myNiveau[2]) { - // raise-loop unterbinden -> d.h. entweder call oder bei superblatt all in - if(actualHand->getTurn()->getHighestSet() >= 12*actualHand->getSmallBlind()) { - // all in - if(myOdds >= myNiveau[2] + 8) { - raise = myCash; - myAction = 5; - } - // nur call - else { - myAction = 3; - } - - // Standard-Raise-Routine - } else { - // raise-Betrag ermitteln - raise = (((int)myOdds-myNiveau[2])/4)*2*actualHand->getSmallBlind(); - // raise-Betrag zu klein -> mindestens Standard-raise - if(raise < actualHand->getTurn()->getHighestSet()) { - raise = actualHand->getTurn()->getHighestSet(); - } - // all in bei nur wenigen Chips oder knappem raise - if(myCash/(2*actualHand->getSmallBlind()) <= 6 || raise >= (myCash*4.0)/5.0) { - raise = myCash; - } + // raise-loop unterbinden -> d.h. entweder call oder bei superblatt all in + if(actualHand->getTurn()->getHighestSet() >= 12*actualHand->getSmallBlind()) { + // all in + if(myOdds >= myNiveau[2] + 8) { + raise = myCash; myAction = 5; } - } - else { - // call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt - if(myOdds >= myNiveau[0] || (mySet >= actualHand->getTurn()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > actualHand->getTurn()->getHighestSet() && myNiveau[0]-3)) { - // all in bei knappem call - if(actualHand->getTurn()->getHighestSet() > (myCash*3.0)/4.0) { - raise = myCash; - myAction = 5; - } - else myAction = 3; - } - // fold + // nur call else { - myAction = 1; + myAction = 3; } + + // Standard-Raise-Routine + } else { + // raise-Betrag ermitteln + raise = (((int)myOdds-myNiveau[2])/4)*2*actualHand->getSmallBlind(); + // raise-Betrag zu klein -> mindestens Standard-raise + if(raise < actualHand->getTurn()->getHighestSet()) { + raise = actualHand->getTurn()->getHighestSet(); + } + // all in bei nur wenigen Chips oder knappem raise + if(myCash/(2*actualHand->getSmallBlind()) <= 6 || raise >= (myCash*4.0)/5.0) { + raise = myCash; + } + myAction = 5; } } else { - // check - if(myOdds < myNiveau[1]) { - myAction = 2; - } - // bet - else { - bet = (((int)myOdds-myNiveau[1])/6)*2*actualHand->getSmallBlind(); - if(bet == 0) { - bet = 2*actualHand->getSmallBlind(); - } - // all in bei nur wenigen Chips - if(myCash/(2*actualHand->getSmallBlind()) <= 6) { + // call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt + if(myOdds >= myNiveau[0] || (mySet >= actualHand->getTurn()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > individualHighestSet && myNiveau[0]-3)) { + // all in bei knappem call + if(actualHand->getTurn()->getHighestSet() > (myCash*3.0)/4.0) { raise = myCash; + myAction = 5; } - myAction = 4; + else myAction = 3; + } + // fold + else { + myAction = 1; } - } + } + // aktiv + else { + // check + if(myOdds < myNiveau[1]) { + myAction = 2; + } + // bet + else { + bet = (((int)myOdds-myNiveau[1])/6)*2*actualHand->getSmallBlind(); + if(bet == 0) { + bet = 2*actualHand->getSmallBlind(); + } + // all in bei nur wenigen Chips + if(myCash/(2*actualHand->getSmallBlind()) <= 6) { + raise = myCash; + } + // all in bei knappem bet + if(bet > (myCash*4.0)/5.0) { + bet = myCash; + } + myAction = 4; + } + } - evaluation(bet, raise); + evaluation(bet, raise); } - - - - - - - - - - - - - - - void LocalPlayer::riverEngine() { ConfigFile myConfig; @@ -815,66 +749,16 @@ void LocalPlayer::riverEngine() { // turnCardsValue(tempArray); - - - // Prozent ausrechnen - - int i, j; - int tempBoardCardsArray[5]; - int tempMyCardsArray[7]; - int tempOpponentCardsArray[7]; - actualBoard->getMyCards(tempBoardCardsArray); - - tempMyCardsArray[0] = myCards[0]; - tempMyCardsArray[1] = myCards[1]; - tempMyCardsArray[2] = tempBoardCardsArray[0]; - tempMyCardsArray[3] = tempBoardCardsArray[1]; - tempMyCardsArray[4] = tempBoardCardsArray[2]; - tempMyCardsArray[5] = tempBoardCardsArray[3]; - tempMyCardsArray[6] = tempBoardCardsArray[4]; - - tempOpponentCardsArray[2] = tempBoardCardsArray[0]; - tempOpponentCardsArray[3] = tempBoardCardsArray[1]; - tempOpponentCardsArray[4] = tempBoardCardsArray[2]; - tempOpponentCardsArray[5] = tempBoardCardsArray[3]; - tempOpponentCardsArray[6] = tempBoardCardsArray[4]; - - int tempMyCardsValue; - int tempOpponentCardsValue; - - int countAll = 0; - int countMy = 0; - - for(i=0; i<49; i++) { - if(i != myCards[0] && i != myCards[1] && i != tempBoardCardsArray[0] && i != tempBoardCardsArray[1] && i != tempBoardCardsArray[2]) { - for(j=i+1; j<50; j++) { - if(j != myCards[0] && j != myCards[1] && j != tempBoardCardsArray[0] && j != tempBoardCardsArray[1] && j != tempBoardCardsArray[2]) { - - countAll++; - - tempOpponentCardsArray[0] = i; - tempOpponentCardsArray[1] = j; - tempMyCardsValue = myCardsValue->cardsValue(tempMyCardsArray,0); - tempOpponentCardsValue = myCardsValue->cardsValue(tempOpponentCardsArray,0); - - if(tempMyCardsValue>=tempOpponentCardsValue) countMy++; - } - } - } - } - - myOdds = 100.0*(countMy*1.0)/(countAll*1.0); - - - int raise = 0; int bet = 0; + readFile(); + // Niveaus setzen + Dude + Anzahl Gegenspieler // 1. Fold -- Call - myNiveau[0] = 40 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; + myNiveau[0] = 42 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; // 2. Check -- Bet - myNiveau[1] = 52 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; + myNiveau[1] = 53 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; // 3. Call -- Raise myNiveau[2] = 64 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/; @@ -888,20 +772,23 @@ void LocalPlayer::riverEngine() { // cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl; + // eigenes mögliches highestSet + int individualHighestSet = actualHand->getRiver()->getHighestSet(); + if(individualHighestSet > myCash) individualHighestSet = myCash; // aktiv oder passiv? if(actualHand->getRiver()->getHighestSet() > 0) { // Verhaeltnis Set / Cash - if(myCash/actualHand->getRiver()->getHighestSet() >= 25) { - myNiveau[0] += (25-myCash/actualHand->getRiver()->getHighestSet())/10; + if(myCash/individualHighestSet >= 25) { + myNiveau[0] += (25-myCash/individualHighestSet)/10; } else { - myNiveau[0] += (25-myCash/actualHand->getRiver()->getHighestSet())/3; + myNiveau[0] += (25-myCash/individualHighestSet)/3; } // Verhaeltnis Set / Cash für raise - if(myCash/actualHand->getRiver()->getHighestSet() < 10) { - myNiveau[2] += (10-myCash/actualHand->getRiver()->getHighestSet())/2; + if(myCash/individualHighestSet < 10) { + myNiveau[2] += (10-myCash/individualHighestSet)/2; } // raise (bei hohem Niveau) @@ -936,7 +823,7 @@ void LocalPlayer::riverEngine() { } else { // call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt - if(myOdds >= myNiveau[0] || (mySet >= actualHand->getRiver()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > actualHand->getRiver()->getHighestSet() && myNiveau[0]-3)) { + if(myOdds >= myNiveau[0] || (mySet >= actualHand->getRiver()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > individualHighestSet && myNiveau[0]-3)) { // all in bei knappem call if(myCash-actualHand->getRiver()->getHighestSet() <= (myCash*1)/4) { raise = myCash; @@ -965,6 +852,10 @@ void LocalPlayer::riverEngine() { if(myCash/(2*actualHand->getSmallBlind()) <= 6) { raise = myCash; } + // all in bei knappem bet + if(bet > (myCash*4.0)/5.0) { + bet = myCash; + } myAction = 4; } @@ -995,8 +886,6 @@ void LocalPlayer::evaluation(int bet, int raise) { default: cout << "ERROR - wrong init of actualRound" << endl; } - cout << "evaluation: " << myAction << " highestSet " << highestSet << " myCash " << myCash << endl; - switch(myAction) { // none case 0: {} @@ -1014,7 +903,6 @@ void LocalPlayer::evaluation(int bet, int raise) { mySet += myCash; myCash = 0; myAction = 6; - cout << "dfgsdfg" << endl; } // sonst else { @@ -1862,9 +1750,113 @@ void LocalPlayer::readFile() { } break; - case 2: {} + case 2: { + + // Prozent ausrechnen + + int i, j, k; + int tempBoardCardsArray[5]; + int tempMyCardsArray[7]; + int tempOpponentCardsArray[7]; + actualBoard->getMyCards(tempBoardCardsArray); + + tempMyCardsArray[0] = myCards[0]; + tempMyCardsArray[1] = myCards[1]; + tempMyCardsArray[2] = tempBoardCardsArray[0]; + tempMyCardsArray[3] = tempBoardCardsArray[1]; + tempMyCardsArray[4] = tempBoardCardsArray[2]; + tempMyCardsArray[5] = tempBoardCardsArray[3]; + + tempOpponentCardsArray[2] = tempBoardCardsArray[0]; + tempOpponentCardsArray[3] = tempBoardCardsArray[1]; + tempOpponentCardsArray[4] = tempBoardCardsArray[2]; + tempOpponentCardsArray[5] = tempBoardCardsArray[3]; + + int tempMyCardsValue; + int tempOpponentCardsValue; + + int countAll = 0; + int countMy = 0; + + for(i=0; i<49; i++) { + if(i != myCards[0] && i != myCards[1] && i != tempBoardCardsArray[0] && i != tempBoardCardsArray[1] && i != tempBoardCardsArray[2]) { + for(j=i+1; j<50; j++) { + if(j != myCards[0] && j != myCards[1] && j != tempBoardCardsArray[0] && j != tempBoardCardsArray[1] && j != tempBoardCardsArray[2]) { + for(k=j+1; k<51; k++) { + if(k != myCards[0] && k != myCards[1] && k != tempBoardCardsArray[0] && k != tempBoardCardsArray[1] && k != tempBoardCardsArray[2]) { + + countAll++; + + tempOpponentCardsArray[0] = i; + tempOpponentCardsArray[1] = j; + tempOpponentCardsArray[6] = k; + tempMyCardsArray[6] = k; + tempMyCardsValue = myCardsValue->cardsValue(tempMyCardsArray,0); + tempOpponentCardsValue = myCardsValue->cardsValue(tempOpponentCardsArray,0); + + if(tempMyCardsValue>=tempOpponentCardsValue) countMy++; + } + } + } + } + } + } + + myOdds = 100.0*(countMy*1.0)/(countAll*1.0); + + } break; - case 3: {} + case 3: { + + // Prozent ausrechnen + + int i, j; + int tempBoardCardsArray[5]; + int tempMyCardsArray[7]; + int tempOpponentCardsArray[7]; + actualBoard->getMyCards(tempBoardCardsArray); + + tempMyCardsArray[0] = myCards[0]; + tempMyCardsArray[1] = myCards[1]; + tempMyCardsArray[2] = tempBoardCardsArray[0]; + tempMyCardsArray[3] = tempBoardCardsArray[1]; + tempMyCardsArray[4] = tempBoardCardsArray[2]; + tempMyCardsArray[5] = tempBoardCardsArray[3]; + tempMyCardsArray[6] = tempBoardCardsArray[4]; + + tempOpponentCardsArray[2] = tempBoardCardsArray[0]; + tempOpponentCardsArray[3] = tempBoardCardsArray[1]; + tempOpponentCardsArray[4] = tempBoardCardsArray[2]; + tempOpponentCardsArray[5] = tempBoardCardsArray[3]; + tempOpponentCardsArray[6] = tempBoardCardsArray[4]; + + int tempMyCardsValue; + int tempOpponentCardsValue; + + int countAll = 0; + int countMy = 0; + + for(i=0; i<49; i++) { + if(i != myCards[0] && i != myCards[1] && i != tempBoardCardsArray[0] && i != tempBoardCardsArray[1] && i != tempBoardCardsArray[2]) { + for(j=i+1; j<50; j++) { + if(j != myCards[0] && j != myCards[1] && j != tempBoardCardsArray[0] && j != tempBoardCardsArray[1] && j != tempBoardCardsArray[2]) { + + countAll++; + + tempOpponentCardsArray[0] = i; + tempOpponentCardsArray[1] = j; + tempMyCardsValue = myCardsValue->cardsValue(tempMyCardsArray,0); + tempOpponentCardsValue = myCardsValue->cardsValue(tempOpponentCardsArray,0); + + if(tempMyCardsValue>=tempOpponentCardsValue) countMy++; + } + } + } + } + + myOdds = 100.0*(countMy*1.0)/(countAll*1.0); + + } break; default: cout <<"ERROR - wrong init of actualRound" << endl; diff --git a/src/gui/qt/log/log.cpp b/src/gui/qt/log/log.cpp index 5370b706..c0dec6b6 100644 --- a/src/gui/qt/log/log.cpp +++ b/src/gui/qt/log/log.cpp @@ -206,10 +206,10 @@ void Log::logNewGameHandMsg(int gameID, int handID) { // cout << activePlayersCounter << endl; // cout << (i+myW->getActualHand()->getDealerPosition()+j)%5 << endl; - switch (myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%5]->getMyButton()) { - case 2 : stream << QString::fromStdString(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%5]->getMyName())+" ("+QString::number(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%5]->getMySet(),10)+"$), "; + switch (myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMyButton()) { + case 2 : stream << QString::fromStdString(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMyName())+" ("+QString::number(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMySet(),10)+"$), "; break; - case 3 : stream << QString::fromStdString(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%5]->getMyName())+" ("+QString::number(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%5]->getMySet(),10)+"$)"; + case 3 : stream << QString::fromStdString(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMyName())+" ("+QString::number(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMySet(),10)+"$)"; break; default :; } diff --git a/src/gui/qt/mainwindow.ui b/src/gui/qt/mainwindow.ui index 93e25024..c608799d 100644 --- a/src/gui/qt/mainwindow.ui +++ b/src/gui/qt/mainwindow.ui @@ -498,9 +498,6 @@ - - Qt::ClickFocus - PokerTH - The Open-Source Texas Holdem Engine @@ -528,1143 +525,6 @@ - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 223 - 185 - - - - - 223 - 185 - - - - - - - - - 17 - 70 - 50 - 34 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - 199 - 199 - 199 - - - - - - - - - - - - - - 22 - 123 - 40 - 40 - - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - true - - - - - - - - - 85 - 17 - 118 - 23 - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - 85 - 155 - 118 - 20 - - - - - - - Qt::AlignBottom|Qt::AlignHCenter - - - - - - 85 - 40 - 118 - 111 - - - - - - 9 - 35 - 100 - 40 - - - - - 0 - 20 - - - - - - - Qt::AlignCenter - - - - - - - 17 - 17 - 50 - 50 - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 223 - 185 - - - - - 223 - 185 - - - - - - - - - 17 - 70 - 50 - 34 - - - - - 0 - - - 0 - - - - - - 35 - 0 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 35 - 0 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - 199 - 199 - 199 - - - - - - - - - - - - - - 22 - 123 - 40 - 40 - - - - - 0 - - - 0 - - - - - - - - true - - - - - - - - - 85 - 17 - 118 - 23 - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - 85 - 155 - 118 - 20 - - - - - - - Qt::AlignBottom|Qt::AlignHCenter - - - - - - 17 - 17 - 50 - 50 - - - - - - - - - - 85 - 40 - 118 - 111 - - - - - - 9 - 35 - 100 - 40 - - - - - 0 - 20 - - - - - - - Qt::AlignCenter - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 223 - 185 - - - - - 223 - 185 - - - - - - - - - 85 - 40 - 118 - 111 - - - - - - 9 - 35 - 100 - 40 - - - - - 0 - 20 - - - - - - - Qt::AlignCenter - - - - - - - 17 - 70 - 50 - 34 - - - - - 0 - - - 0 - - - - - - 35 - 0 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 35 - 0 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - 199 - 199 - 199 - - - - - - - - - - - - - - 22 - 123 - 40 - 40 - - - - - 0 - - - 0 - - - - - - - - true - - - - - - - - - 85 - 155 - 118 - 20 - - - - - - - Qt::AlignBottom|Qt::AlignHCenter - - - - - - 85 - 17 - 118 - 23 - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - 17 - 17 - 50 - 50 - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 223 - 185 - - - - - 223 - 185 - - - - - - - - - 85 - 40 - 118 - 111 - - - - - - 9 - 35 - 100 - 40 - - - - - 0 - 20 - - - - - - - Qt::AlignCenter - - - - - - - 17 - 70 - 50 - 34 - - - - - 0 - - - 0 - - - - - - 35 - 0 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 35 - 0 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - - - 128 - 128 - 128 - - - - - - - 199 - 199 - 199 - - - - - - - - - - - - - - 22 - 123 - 40 - 40 - - - - - 0 - - - 0 - - - - - - - - true - - - - - - - - - 85 - 17 - 118 - 23 - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - 85 - 155 - 118 - 20 - - - - - - - Qt::AlignBottom|Qt::AlignHCenter - - - - - - 17 - 17 - 50 - 50 - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -1727,9 +587,6 @@ 16777215 - - QTabWidget { background-image: url(:/graphics/resources/graphics/1px.png) } - 0 @@ -1783,7 +640,7 @@ - 404 + 310 195 @@ -1796,65 +653,11 @@ - - - - 310 - 40 - 88 - 61 - - - - - 0 - - - 6 - - - - - - 34 - 25 - - - - &Set - - - Alt+S - - - - - - - &All in - - - Alt+A - - - - - - - - 40 - 0 - - - - - - - 20 - 85 + 25 + 80 50 34 @@ -2010,115 +813,33 @@ - + - 250 - 40 - 57 - 151 + 25 + 120 + 50 + 50 - - - 0 - - - 6 - - - - - - 55 - 25 - - - - &Raise - - - Alt+R - - - - - - - - 55 - 25 - - - - &Bet - - - Alt+B - - - - - - - - 55 - 25 - - - - &Call - - - Alt+C - - - - - - - - 55 - 25 - - - - C&heck - - - Alt+H - - - - - - - - 55 - 25 - - - - &Fold - - - Alt+F - - - - + + + - + - 90 - 150 - 118 - 23 + 25 + 25 + 40 + 40 + + true + - Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + Qt::AlignCenter @@ -2153,48 +874,192 @@ - + - 20 - 125 - 50 - 50 + 95 + 156 + 118 + 16 - - - - - - - - 25 - 20 - 40 - 40 - - - - true - - Qt::AlignCenter + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft - 70 - 10 - 171 - 25 + 95 + 20 + 118 + 16 Qt::AlignHCenter|Qt::AlignTop + + + + 232 + 70 + 55 + 55 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + + + + + 232 + 122 + 55 + 55 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + + + + + 232 + 44 + 55 + 21 + + + + + 40 + 0 + + + + 5 + + + + + + 232 + 18 + 55 + 55 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + @@ -2219,21 +1084,8 @@ 0 - 6 + 0 - - - - Qt::Vertical - - - - 0 - 0 - - - - @@ -2244,244 +1096,279 @@ - 197 + 200 0 - + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 0 + 0 + + + + + + 197 - 0 + 172 197 - 16777215 + 172 - - 0 - - - - Log - - - - 5 - - - 0 - - - - - - 181 - 110 - - - - - 181 - 110 - - - - Qt::ScrollBarAlwaysOff - + + + 0 + + + 5 + + + + + + 16777215 + 162 + + + + 0 + + + + Log + + + + 4 + + + 0 + + + + + Qt::ScrollBarAlwaysOff + + + + - - - + + + + + + 0 + + + 6 + + + + + 0 + + + 6 + + + + + Speed: + + + + + + + + 16 + 0 + + + + + + + + + + + + + + + + + + 203 + 237 + 180 + + + + + + + + + 203 + 237 + 180 + + + + + + + + + 203 + 237 + 180 + + + + + + + + 1 + + + 11 + + + 5 + + + Qt::Horizontal + + + + + + + + 40 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 40 + 82 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 40 + 82 + 0 + + + + + + + + + 128 + 128 + 128 + + + + + + + 40 + 82 + 0 + + + + + + + + Stop + + + + + + - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - Speed: - - - - - - - - 16 - 0 - - - - - - - - - - - - - - - - - - 203 - 237 - 180 - - - - - - - - - 203 - 237 - 180 - - - - - - - - - 203 - 237 - 180 - - - - - - - - 1 - - - 11 - - - 5 - - - Qt::Horizontal - - - - - - - - 40 - 20 - - - - - - - - - 0 - 0 - 0 - - - - - - - 40 - 82 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 40 - 82 - 0 - - - - - - - - - 128 - 128 - 128 - - - - - - - 40 - 82 - 0 - - - - - - - - Stop - - - - - + + + + Qt::Vertical + + + + 20 + 40 + + + + 0 - 6 + 0 @@ -3858,6 +2745,1130 @@ + + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 223 + 185 + + + + + 223 + 185 + + + + + + + + + 17 + 70 + 50 + 34 + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + 199 + 199 + 199 + + + + + + + + + + + + + + 22 + 123 + 40 + 40 + + + + QFrame::Raised + + + + 0 + + + 0 + + + + + + + + true + + + + + + + + + 85 + 17 + 118 + 23 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + 85 + 155 + 118 + 20 + + + + + + + Qt::AlignBottom|Qt::AlignHCenter + + + + + + 85 + 40 + 118 + 111 + + + + + + 9 + 35 + 100 + 40 + + + + + 0 + 20 + + + + + + + Qt::AlignCenter + + + + + + + 17 + 17 + 50 + 50 + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 223 + 185 + + + + + 223 + 185 + + + + + + + + + 17 + 70 + 50 + 34 + + + + + 0 + + + 0 + + + + + + 35 + 0 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 35 + 0 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + 199 + 199 + 199 + + + + + + + + + + + + + + 22 + 123 + 40 + 40 + + + + + 0 + + + 0 + + + + + + + + true + + + + + + + + + 85 + 17 + 118 + 23 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + 85 + 155 + 118 + 20 + + + + + + + Qt::AlignBottom|Qt::AlignHCenter + + + + + + 17 + 17 + 50 + 50 + + + + + + + + + + 85 + 40 + 118 + 111 + + + + + + 9 + 35 + 100 + 40 + + + + + 0 + 20 + + + + + + + Qt::AlignCenter + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 223 + 185 + + + + + 223 + 185 + + + + + + + + + 85 + 40 + 118 + 111 + + + + + + 9 + 35 + 100 + 40 + + + + + 0 + 20 + + + + + + + Qt::AlignCenter + + + + + + + 17 + 70 + 50 + 34 + + + + + 0 + + + 0 + + + + + + 35 + 0 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 35 + 0 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + 199 + 199 + 199 + + + + + + + + + + + + + + 22 + 123 + 40 + 40 + + + + + 0 + + + 0 + + + + + + + + true + + + + + + + + + 85 + 155 + 118 + 20 + + + + + + + Qt::AlignBottom|Qt::AlignHCenter + + + + + + 85 + 17 + 118 + 23 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + 17 + 17 + 50 + 50 + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 223 + 185 + + + + + 223 + 185 + + + + + + + + + 85 + 40 + 118 + 111 + + + + + + 9 + 35 + 100 + 40 + + + + + 0 + 20 + + + + + + + Qt::AlignCenter + + + + + + + 17 + 70 + 50 + 34 + + + + + 0 + + + 0 + + + + + + 35 + 0 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 35 + 0 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 240 + 240 + 240 + + + + + + + 240 + 240 + 240 + + + + + + + + + 128 + 128 + 128 + + + + + + + 199 + 199 + 199 + + + + + + + + + + + + + + 22 + 123 + 40 + 40 + + + + + 0 + + + 0 + + + + + + + + true + + + + + + + + + 85 + 17 + 118 + 23 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + 85 + 155 + 118 + 20 + + + + + + + Qt::AlignBottom|Qt::AlignHCenter + + + + + + 17 + 17 + 50 + 50 + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -3933,15 +3944,11 @@ - pushButton_raise - pushButton_bet - pushButton_call - pushButton_fold - pushButton_check + pushButton_BetRaise + pushButton_CallCheckSet + pushButton_FoldAllin tabWidget_LeftToolBox spinBox_set - pushButton_allin - pushButton_set diff --git a/src/gui/qt/mainwindow/mainwindowimpl.cpp b/src/gui/qt/mainwindow/mainwindowimpl.cpp index d81297f2..b9f3ee00 100755 --- a/src/gui/qt/mainwindow/mainwindowimpl.cpp +++ b/src/gui/qt/mainwindow/mainwindowimpl.cpp @@ -229,32 +229,16 @@ mainWindowImpl::mainWindowImpl(QMainWindow *parent) if (myConfig->readConfigInt("ShowIntro")) { // label_logo->hide(); QTimer::singleShot(100, this, SLOT( paintStartSplash() )); } - - pushButton_raise->setDisabled(TRUE); - pushButton_call->setDisabled(TRUE); - pushButton_bet->setDisabled(TRUE); - pushButton_set->setDisabled(TRUE); - pushButton_fold->setDisabled(TRUE); - pushButton_allin->setDisabled(TRUE); - pushButton_check->setDisabled(TRUE); - spinBox_set->setDisabled(TRUE); - + // userWidgetsArray init - userWidgetsArray[0] = pushButton_raise; - userWidgetsArray[1] = pushButton_call; - userWidgetsArray[2] = pushButton_bet; - userWidgetsArray[3] = pushButton_set; - userWidgetsArray[4] = pushButton_fold; - userWidgetsArray[5] = pushButton_allin; - userWidgetsArray[6] = pushButton_check; - userWidgetsArray[7] = spinBox_set; + userWidgetsArray[0] = pushButton_BetRaise; + userWidgetsArray[1] = pushButton_CallCheckSet; + userWidgetsArray[2] = pushButton_FoldAllin; + userWidgetsArray[3] = spinBox_set; - //Hintergrundfarbe der userWidgets anpassen; - for(i=0; i<=7; i++) { - QPalette tempPalette = userWidgetsArray[i]->palette(); - QColor tempColor = tempPalette.color(QPalette::Window); - tempPalette.setColor(QPalette::Button, tempColor); - userWidgetsArray[i]->setPalette(tempPalette); + //hide userWidgets + for(i=0; i<4; i++) { + userWidgetsArray[i]->hide(); } //Timer Objekt erstellen @@ -441,13 +425,14 @@ mainWindowImpl::mainWindowImpl(QMainWindow *parent) cashLabelArray[i]->setFont(tmpFont2); } + spinBox_set->setFont(tmpFont2); + tmpFont2.setPixelSize(12); for (i=0; isetFont(tmpFont2); } - tmpFont2.setPixelSize(13); for (i=0; isetFont(tmpFont2); //Widgets Grafiken per Stylesheets setzen + //Groupbox Background for (i=1; isetStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/opponentBoxInactiveGlow.png) }"); - - } + groupBoxArray[0]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/playerBoxInactiveGlow.png) }"); + + //Human player button + pushButton_BetRaise->setStyleSheet("QPushButton { background-image: url(:/guiv2/resources/guiv2/playeraction_03.png); font-family: \"Bitstream Vera Sans\"; font-size: 11px }"); + pushButton_CallCheckSet->setStyleSheet("QPushButton { background-image: url(:/guiv2/resources/guiv2/playeraction_05.png); font-family: \"Bitstream Vera Sans\"; font-size: 11px }"); + pushButton_FoldAllin->setStyleSheet("QPushButton { background-image: url(:/guiv2/resources/guiv2/playeraction_07.png); font-family: \"Bitstream Vera Sans\"; font-size: 11px }"); + + //raise actionLable above just inserted mypixmaplabel for (i=0; iraise(); } @@ -535,13 +527,9 @@ mainWindowImpl::mainWindowImpl(QMainWindow *parent) connect( actionQuit, SIGNAL( triggered() ), qApp, SLOT( quit() ) ); connect( actionFullScreen, SIGNAL( triggered() ), this, SLOT( switchFullscreen() ) ); - connect( pushButton_raise, SIGNAL( clicked() ), this, SLOT( myRaise() ) ); - connect( pushButton_call, SIGNAL( clicked() ), this, SLOT( myCall() ) ); - connect( pushButton_bet, SIGNAL( clicked() ), this, SLOT( myBet() ) ); - connect( pushButton_set, SIGNAL( clicked() ), this, SLOT( mySet() ) ); - connect( pushButton_fold, SIGNAL( clicked() ), this, SLOT( myFold() ) ); - connect( pushButton_check, SIGNAL( clicked() ), this, SLOT( myCheck() ) ); - connect( pushButton_allin, SIGNAL( clicked() ), this, SLOT( myAllIn() ) ); + connect( pushButton_BetRaise, SIGNAL( clicked() ), this, SLOT( myBetRaise() ) ); + connect( pushButton_FoldAllin, SIGNAL( clicked() ), this, SLOT( myFoldAllin() ) ); + connect( pushButton_CallCheckSet, SIGNAL( clicked() ), this, SLOT( myCallCheckSet() ) ); connect ( horizontalSlider_speed, SIGNAL( valueChanged(int)), this, SLOT ( setGameSpeed(int) ) ); connect ( pushButton_break, SIGNAL( clicked()), this, SLOT ( breakButtonClicked() ) ); // auch wieder starten!!!! @@ -575,6 +563,8 @@ void mainWindowImpl::callNewGameDialog() { void mainWindowImpl::startNewLocalGame(newGameDialogImpl *v) { + int i; + // Start new local game - terminate existing network game. mySession->terminateNetworkClient(); mySession->terminateNetworkServer(); @@ -596,9 +586,14 @@ void mainWindowImpl::startNewLocalGame(newGameDialogImpl *v) { // QPalette tempPalette = groupBox_board->palette(); // tempPalette.setColor(QPalette::Window, active); // groupBox_board->setPalette(tempPalette); - tabWidget_RightToolBox->setDisabled(FALSE); + frame_RightToolBox->setDisabled(FALSE); tabWidget_LeftToolBox->setDisabled(FALSE); + //show human player buttons + for(i=0; i<3; i++) { + userWidgetsArray[i]->show(); + } + //get values from local game dialog if(v) { //Speeds @@ -705,10 +700,10 @@ void mainWindowImpl::callSettingsDialog() { if (myConfig->readConfigInt("ShowRightToolBox")) { label_logoright->hide(); - tabWidget_RightToolBox->show(); + frame_RightToolBox->show(); } else { - tabWidget_RightToolBox->hide(); + frame_RightToolBox->hide(); label_logoright->show(); } @@ -777,23 +772,25 @@ void mainWindowImpl::refreshButton() { } for (i=0; igetStartQuantityPlayers(); i++) { - - if(activePlayersCounter > 2) { - if (actualHand->getPlayerArray()[i]->getMyButton()==1) { - buttonLabelArray[i]->setPixmap(dealerButton); - } - else { - buttonLabelArray[i]->setPixmap(onePix); + if(actualHand->getPlayerArray()[i]->getMyActiveStatus()) { + if(activePlayersCounter > 2) { + if (actualHand->getPlayerArray()[i]->getMyButton()==1) { + buttonLabelArray[i]->setPixmap(dealerButton); + } + else { + buttonLabelArray[i]->setPixmap(onePix); + } } + else { + if (actualHand->getPlayerArray()[i]->getMyButton()==3) { + buttonLabelArray[i]->setPixmap(dealerButton); + } + else { + buttonLabelArray[i]->setPixmap(onePix); + } + } } - else { - if (actualHand->getPlayerArray()[i]->getMyButton()==3) { - buttonLabelArray[i]->setPixmap(dealerButton); - } - else { - buttonLabelArray[i]->setPixmap(onePix); - } - } + else { buttonLabelArray[i]->setPixmap(onePix); } } } @@ -877,34 +874,48 @@ void mainWindowImpl::refreshCash() { void mainWindowImpl::refreshGroupbox() { - int i; + int i,j; for (i=0; isetEnabled(actualHand->getPlayerArray()[i]->getMyActiveStatus()); -// if (actualHand->getPlayerArray()[i]->getMyAction() == 1) groupBoxArray[i]->setDisabled(TRUE); - if(actualHand->getPlayerArray()[i]->getMyTurn()) { - //Groupbox aufhellen wenn der Spiele dran ist. -// QPalette tempPalette = groupBoxArray[i]->palette(); -// tempPalette.setColor(QPalette::Window, highlight); -// groupBoxArray[i]->setPalette(tempPalette); + //Groupbox glow wenn der Spiele dran ist. + if(i==0) { + groupBoxArray[0]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/playerBoxActiveGlow.png) }"); + } + else { + groupBoxArray[i]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/opponentBoxActiveGlow.png) }"); + } } else { //Groupbox auf Hintergrundfarbe setzen wenn der Spiele nicht dran aber aktiv ist. if(actualHand->getPlayerArray()[i]->getMyActiveStatus()) { -// QPalette tempPalette = groupBoxArray[i]->palette(); -// tempPalette.setColor(QPalette::Window, active); -// groupBoxArray[i]->setPalette(tempPalette); + if(i==0) { + groupBoxArray[0]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/playerBoxInactiveGlow.png) }"); + //show buttons + for(j=0; j<3; j++) { + userWidgetsArray[j]->show(); + } + } + else { + groupBoxArray[i]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/opponentBoxInactiveGlow.png) }"); + } } //Groupbox verdunkeln wenn der Spiele inactive ist. else { -// QPalette tempPalette = groupBoxArray[i]->palette(); -// tempPalette.setColor(QPalette::Window, inactive); -// groupBoxArray[i]->setPalette(tempPalette); + if(i==0) { + groupBoxArray[0]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/playerBoxInactiveGlow.png) }"); + //hide buttons + for(j=0; j<4; j++) { + userWidgetsArray[j]->hide(); + } + } + else { + groupBoxArray[i]->setStyleSheet("QGroupBox { background-image: url(:/guiv2/resources/guiv2/opponentBoxInactiveGlow.png) }"); + } } } } - userWidgetsBackgroudColor(); + } void mainWindowImpl::highlightRoundLabel(string tempround) { @@ -1162,81 +1173,92 @@ void mainWindowImpl::meInAction() { switch (actualHand->getActualRound()) { case 0: { - if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_raise->setEnabled(TRUE); } + if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_BetRaise->setText("Raise"); } - if ( actualHand->getPlayerArray()[0]->getMySet()== actualHand->getPreflop()->getHighestSet() && actualHand->getPlayerArray()[0]->getMyButton() == 3) { pushButton_check->setEnabled(TRUE); } - else { pushButton_call->setEnabled(TRUE); } - pushButton_fold->setEnabled(TRUE); + if ( actualHand->getPlayerArray()[0]->getMySet()== actualHand->getPreflop()->getHighestSet() && actualHand->getPlayerArray()[0]->getMyButton() == 3) { pushButton_CallCheckSet->setText("Check"); } + else { pushButton_CallCheckSet->setText("Call"); } + pushButton_FoldAllin->setText("Fold"); } break; case 1: { - pushButton_fold->setEnabled(TRUE); + pushButton_FoldAllin->setText("Fold"); // cout << "highestSet in meInAction " << actualHand->getFlop()->getHighestSet() << endl; if (actualHand->getFlop()->getHighestSet() == 0) { - pushButton_check->setEnabled(TRUE); - pushButton_bet->setEnabled(TRUE); + pushButton_CallCheckSet->setText("Check"); + pushButton_BetRaise->setText("Bet"); } if (actualHand->getFlop()->getHighestSet() > 0 && actualHand->getFlop()->getHighestSet() > actualHand->getPlayerArray()[0]->getMySet()) { - pushButton_call->setEnabled(TRUE); - if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_raise->setEnabled(TRUE); } + pushButton_CallCheckSet->setText("Call"); + if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_BetRaise->setText("Raise"); } } } break; case 2: { - pushButton_fold->setEnabled(TRUE); + pushButton_FoldAllin->setText("Fold"); // cout << "highestSet in meInAction " << actualHand->getFlop()->getHighestSet() << endl; if (actualHand->getTurn()->getHighestSet() == 0) { - pushButton_check->setEnabled(TRUE); - pushButton_bet->setEnabled(TRUE); + pushButton_CallCheckSet->setText("Check"); + pushButton_BetRaise->setText("Bet"); } if (actualHand->getTurn()->getHighestSet() > 0 && actualHand->getTurn()->getHighestSet() > actualHand->getPlayerArray()[0]->getMySet()) { - pushButton_call->setEnabled(TRUE); - if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_raise->setEnabled(TRUE); } + pushButton_CallCheckSet->setText("Call"); + if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_BetRaise->setText("Raise"); } } } break; case 3: { - pushButton_fold->setEnabled(TRUE); + pushButton_FoldAllin->setText("Fold"); // cout << "highestSet in meInAction " << actualHand->getFlop()->getHighestSet() << endl; if (actualHand->getRiver()->getHighestSet() == 0) { - pushButton_check->setEnabled(TRUE); - pushButton_bet->setEnabled(TRUE); + pushButton_CallCheckSet->setText("Check"); + pushButton_BetRaise->setText("Bet"); } if (actualHand->getRiver()->getHighestSet() > 0 && actualHand->getRiver()->getHighestSet() > actualHand->getPlayerArray()[0]->getMySet()) { - pushButton_call->setEnabled(TRUE); - if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_raise->setEnabled(TRUE); } + pushButton_CallCheckSet->setText("Call"); + if (actualHand->getPlayerArray()[0]->getMyCash()+actualHand->getPlayerArray()[0]->getMySet() > actualHand->getPreflop()->getHighestSet()) { pushButton_BetRaise->setText("Raise"); } } } break; default: {} } - - //Hintergrundfarbe der userWidgets anpassen; - userWidgetsBackgroudColor(); } void mainWindowImpl::disableMyButtons() { - pushButton_raise->setDisabled(TRUE); - pushButton_call->setDisabled(TRUE); - pushButton_bet->setDisabled(TRUE); - pushButton_set->setDisabled(TRUE); - pushButton_fold->setDisabled(TRUE); - pushButton_allin->setDisabled(TRUE); - pushButton_check->setDisabled(TRUE); + //clear userWidgets + pushButton_BetRaise->show(); + pushButton_BetRaise->setText(""); + pushButton_CallCheckSet->setText(""); + pushButton_FoldAllin->setText(""); spinBox_set->setMinimum(0); spinBox_set->setValue(0); - spinBox_set->setDisabled(TRUE); - - userWidgetsBackgroudColor(); + spinBox_set->hide(); } +void mainWindowImpl::myBetRaise() { + + if(pushButton_BetRaise->text() == "Raise") { myRaise(); } + else { myBet(); } +} + +void mainWindowImpl::myFoldAllin() { + if(pushButton_FoldAllin->text() == "Fold") { myFold(); } + else { myAllIn(); } +} + +void mainWindowImpl::myCallCheckSet() { + if(pushButton_CallCheckSet->text() == "Call") { myCall(); } + if(pushButton_CallCheckSet->text() == "Check") { myCheck(); } + if(pushButton_CallCheckSet->text() == "Set") { mySet(); } +} + + void mainWindowImpl::myFold(){ actualHand->getPlayerArray()[0]->setMyAction(1); @@ -1307,14 +1329,10 @@ void mainWindowImpl::myCall(){ void mainWindowImpl::myBet(){ - pushButton_bet->setDisabled(TRUE); - - pushButton_set->setEnabled(TRUE); - pushButton_allin->setEnabled(TRUE); - spinBox_set->setEnabled(TRUE); - - //Hintergrundfarbe anpassen; - userWidgetsBackgroudColor(); + pushButton_BetRaise->hide(); + pushButton_CallCheckSet->setText("Set"); + pushButton_FoldAllin->setText("All-In"); + spinBox_set->show(); if (actualHand->getActualRound() <= 2 ) { spinBox_set->setMinimum(actualHand->getSmallBlind()*2); } else { spinBox_set->setMinimum(actualHand->getSmallBlind()*4); } @@ -1329,14 +1347,10 @@ void mainWindowImpl::myBet(){ void mainWindowImpl::myRaise(){ - pushButton_raise->setDisabled(TRUE); - - pushButton_set->setEnabled(TRUE); - pushButton_allin->setEnabled(TRUE); - spinBox_set->setEnabled(TRUE); - - //Hintergrundfarbe der userWidgets anpassen; - userWidgetsBackgroudColor(); + pushButton_BetRaise->hide(); + pushButton_CallCheckSet->setText("Set"); + pushButton_FoldAllin->setText("All-In"); + spinBox_set->show(); int tempHighestSet = 0; switch (actualHand->getActualRound()) { @@ -1656,9 +1670,7 @@ void mainWindowImpl::postRiverRunAnimation3() { } } } - //Hintergrundfarbe der userWidgets anpassen; - userWidgetsBackgroudColor(); - + postRiverRunAnimation3Timer->start(postRiverRunAnimationSpeed/2); } @@ -1910,26 +1922,6 @@ void mainWindowImpl::stopTimer() { potDistributeTimer->stop(); } -void mainWindowImpl::userWidgetsBackgroudColor() { - - int i; - for(i=0; i<=7; i++) { - - QPalette tempPalette = userWidgetsArray[i]->palette(); - - if (actualHand->getPlayerArray()[0]->getMyTurn() && userWidgetsArray[i]->isEnabled()) { - //Farbe der Buttons wenn der Spieler dran ist. - QColor tempColor(203,237,180); - tempPalette.setColor(QPalette::Button, tempColor); - } - else { - QColor tempColor = tempPalette.color(QPalette::Window); - tempPalette.setColor(QPalette::Button, tempColor); - } - userWidgetsArray[i]->setPalette(tempPalette); - } -} - void mainWindowImpl::setSpeeds() { gameSpeed = (11-guiGameSpeed)*10; @@ -2055,7 +2047,7 @@ void mainWindowImpl::keyPressEvent ( QKeyEvent * event ) { bool ctrlPressed = FALSE; - if (event->key() == 16777220) { if(spinBox_set->hasFocus()) pushButton_set->click(); } //ENTER + if (event->key() == 16777220) { if(spinBox_set->hasFocus()) pushButton_CallCheckSet->click(); } //ENTER if (event->key() == 16777265) { switchLeftToolBox(); } //F2 if (event->key() == 16777266) { switchRightToolBox(); } //F3 if (event->key() == Qt::Key_F) { switchFullscreen(); } //f @@ -2083,12 +2075,12 @@ void mainWindowImpl::switchLeftToolBox() { void mainWindowImpl::switchRightToolBox() { - if (tabWidget_RightToolBox->isHidden()) { + if (frame_RightToolBox->isHidden()) { label_logoright->hide(); - tabWidget_RightToolBox->show(); + frame_RightToolBox->show(); } else { - tabWidget_RightToolBox->hide(); + frame_RightToolBox->hide(); label_logoright->show(); } } diff --git a/src/gui/qt/mainwindow/mainwindowimpl.h b/src/gui/qt/mainwindow/mainwindowimpl.h index 1b8ae211..d18103da 100755 --- a/src/gui/qt/mainwindow/mainwindowimpl.h +++ b/src/gui/qt/mainwindow/mainwindowimpl.h @@ -105,6 +105,10 @@ public slots: void callCreateNetworkGameDialog(); void callJoinNetworkGameDialog(); + void myBetRaise(); + void myFoldAllin(); + void myCallCheckSet(); + void myFold(); void myCheck(); void myCall(); @@ -173,7 +177,6 @@ public slots: void nextRoundCleanGui(); - void userWidgetsBackgroudColor(); void breakButtonClicked(); void keyPressEvent ( QKeyEvent*); @@ -251,7 +254,7 @@ private: QTimer *postRiverRunAnimation5Timer; QTimer *postRiverRunAnimation6Timer; - QWidget *userWidgetsArray[8]; + QWidget *userWidgetsArray[4]; QLabel *buttonLabelArray[7]; QLabel *cashLabelArray[7]; QLabel *cashTopLabelArray[7]; diff --git a/src/gui/qt/mainwindow/startsplash/startsplash.cpp b/src/gui/qt/mainwindow/startsplash/startsplash.cpp index 530151f4..c625b96f 100644 --- a/src/gui/qt/mainwindow/startsplash/startsplash.cpp +++ b/src/gui/qt/mainwindow/startsplash/startsplash.cpp @@ -62,17 +62,17 @@ void StartSplash::paintEvent(QPaintEvent * event) { haveFont.setFamily("Andy MT"); haveFont.setPixelSize(36); - QPixmap logo(":/graphics/resources/graphics/logo-140-100.png"); + QPixmap logo(":/graphics/resources/graphics/logoChip3D.png"); if(frameNo >= 52 && frameNo < 65) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); } if(frameNo >= 65 && frameNo < 68) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); @@ -85,7 +85,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 68 && frameNo < 71) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -97,7 +97,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 71 && frameNo < 74) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -109,7 +109,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 74 && frameNo < 77) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -121,7 +121,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 77 && frameNo < 80) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -133,7 +133,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 80 && frameNo < 83) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -145,7 +145,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 83 && frameNo < 92) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -157,7 +157,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 92 && frameNo < 95) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -169,7 +169,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 95 && frameNo < 120 ) { - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -181,7 +181,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 120 && frameNo < 132) { // - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -194,13 +194,13 @@ void StartSplash::paintEvent(QPaintEvent * event) { opacity = 1.0/opacityCounter; // std::cout << opacity << "\n"; painter.setOpacity(opacity); - painter.drawPixmap(130,85,140,100,logo); + painter.drawPixmap(150,85,100,100,logo); } if(frameNo >= 132 && frameNo < 155) { // - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -208,13 +208,13 @@ void StartSplash::paintEvent(QPaintEvent * event) { painter.setPen(QColor(255,255,255)); painter.drawText(48,30,300,40,4,"Welcome to"); - painter.drawPixmap(130,85,140,100,logo); + painter.drawPixmap(150,85,100,100,logo); } if(frameNo >= 155 && frameNo < 195) { // - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -222,7 +222,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { painter.setPen(QColor(255,255,255)); painter.drawText(48,30,300,40,4,"Welcome to"); - painter.drawPixmap(130,85,140,100,logo); + painter.drawPixmap(150,85,100,100,logo); painter.setFont(haveFont); painter.setPen(QColor(255,255,255)); @@ -232,7 +232,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { if(frameNo >= 195 && frameNo < 245) { // - painter.setBrush(QColor(40,80,46)); + painter.setBrush(QColor(35,71,0)); painter.drawRect(0,0,399,249); painter.setRenderHint(QPainter::Antialiasing, TRUE); @@ -240,7 +240,7 @@ void StartSplash::paintEvent(QPaintEvent * event) { painter.setPen(QColor(255,255,255)); painter.drawText(48,30,300,40,4,"Welcome to"); - painter.drawPixmap(130,85,140,100,logo); + painter.drawPixmap(150,85,100,100,logo); painter.setFont(haveFont); painter.setPen(QColor(255,255,255)); diff --git a/src/gui/qt/resources.qrc b/src/gui/qt/resources.qrc index 7f9d8437..623a79b5 100755 --- a/src/gui/qt/resources.qrc +++ b/src/gui/qt/resources.qrc @@ -77,6 +77,7 @@ resources/graphics/1px.png resources/graphics/fileopen16.png resources/graphics/handRanking_release.png + resources/graphics/logoChip3D.png resources/guiv2/cardholder_03.png diff --git a/src/gui/qt/resources/graphics/logoChip3D.png b/src/gui/qt/resources/graphics/logoChip3D.png new file mode 100644 index 0000000000000000000000000000000000000000..66161506c9734d6793e76a4a342e20a87b728cef GIT binary patch literal 13358 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 Ef}|47PXGV_ literal 0 HcmV?d00001 diff --git a/src/gui/qt/resources/guiv2/opponentBoxActiveGlow.png b/src/gui/qt/resources/guiv2/opponentBoxActiveGlow.png index 240be2c2e6dd7dd6fdaa33a75c4149944c439271..7216999e722f512a56c22efddb892a7359e156ed 100644 GIT binary patch delta 790 zcmV+x1L^#k2>%F>Sbqc&Nkl2~+9A)bZ-F~DOmARd6H zKrr((tgv_M(%#!PBtEs#F*-SM5^j`My1Kug^vOwZ7E6D9PC^kv7%Wk&c@FdoYo5QT zRzz1MGw3-2{gI`|uq?uAMRa9$%wq%=<4dQ`j&l)KJzK9#W`8F+rXkvZ(7*Az&}Q-R zEVfeT5mr6hu8XZoW+w^J_JieHuM4i7X)>L|UU>6~&UjBJ-;kL88-E3pqn@lF7`}_OJ_4W0ahlhvS zHHGz#j*iNUi+_vJ@$vC!I2`6%v5u{UB7~4ew;Q+JsG0q{ySw`Q{QR5C3IE>h?d^xN zv$OVY@}FkDH}fNI#rBqTmd2OfYVJ4l;o#ul%hS`7jRzYTkH_WX}i&_mT$gU65r(N>T2I5gw0%DUXI$1lK5u%=F4w6r?J+_ z$;rv?&CSjG!^6WJmlEEl?WOJJ^z?sp7~|`<-`uTd5ke^1V>3H(cAIJ6^sbq`_;?s! z2iALz(Y5oVnV(67uN$yR)?ghYoW^6f5vTEuRos+i^7q1Z=6^0MxqF-@5%z7qm-q(R zoAc+>WGi;zi4GPc?3zixJDDb*`R2autg?Dn#aGyR@TTn-lGtX0#h)5N8sAEw=gr;Y zGPxDC^3t3BZ(dC=hWlmGw# delta 689 zcmV;i0#5z^2$=|wSbqbnNklkD%54z*4qVTG=)w67vXmMyoa^wPp&hRF|RZ(~$dHgv2%8pgDR|nSeCKACp6w|C{i!Pi%3XWx65m)AmrIc#lhgu!5Yba?pTer@gbFbcGaSI@luo-bW7 z$J4Id-~aOZ^ndiMbUWes_VxzDlatSPe;y9&=@(DMFpjTj)f@*`Zfv|?ySe%0F2Vx( z{q^kn`rBTp z)|QHvsh5clRu*4VU!9W=SZ#pWJZq-_;RVB+6(8_|#FHKZ7zBa%+yaxJ0vMCL0(+Ba z0)l`4SbV|lfu)7##wR>@;Q))|f)HIOKv-RPXHEL3W91wj9euoico^pA z=Rb<8tDm{s3A1f(z6m=!Z>!_uPxs@F+E#zhJcNtKb8?I)VlO#Qj>$DybcX*``e|l7 z=|;&p4sdGn#g9kPg~Efy0-TC&@}x3)QXc)GisFi2PDrk$yg*ZM;)C{~6#M`h00000NkvXXu0mjfJoaK{ diff --git a/src/gui/qt/resources/guiv2/playerBoxActiveGlow.png b/src/gui/qt/resources/guiv2/playerBoxActiveGlow.png index 85fc1b48ef8e941fe22916594ae97ec3038c7ab4..d9e42cd10c6419e3048270bb76e17e36ec2dc48c 100644 GIT binary patch literal 1733 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 diff --git a/src/gui/qt/resources/guiv2/playerBoxInactiveGlow.png b/src/gui/qt/resources/guiv2/playerBoxInactiveGlow.png index 615e8680ed6240620d990fb798d502f0cd283b7e..e0aded0fae50b7c5dbd423e863e9d20321e716c3 100644 GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=4|A{qNscMD+kq5Ix}&cn1H<|g=B!;Wfqcml z*NBqf{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq{s3=B*qo-U3d6}R5papZ0?kZ5=) z_IZ)x|Nr%?rZ3vs+;ZJ)yTLqmx8<5O2TuoSESaLm@c&5`OTz|64rv&1h)p4f0ZMR4 zAILm9$ybqOGV?BtpNsnM_SyXM^}3*7yiuc4WD_coEEYoAHp zPWk8Hy!}$IY2xQcj2SC`B<{0dtarb`kjN}x1|wQ{9d0l{352MC8A24y!YPHzETAr2 zQaH_O;l(M1V%Av>+L?_M9JKTT&>FkAW9%kV>IAo4z0=q>?NaZ?N6S8cvkZ%4Pk6sm zcFwa)+$~e~*}rWS=#hKzxq8cjz>U{?8LB>piQow%i}l+Xm>F()$V^@>nLY)WNEtj` L{an^LB{Ts5Ysuw^ literal 913 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 RF8}}l2>?k&PDHLkV1oB=h6exu delta 2481 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 XVz&&G-qG6300000NkvXXu0mjfCrY{L delta 2657 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 Uu}KHy7XSbN07*qoM6N<$g4`O{JOBUy delta 2260 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 L{an^LB{Ts5Ysuw^ literal 0 HcmV?d00001 diff --git a/src/gui/qt/resources/playeraction_03.png b/src/gui/qt/resources/playeraction_03.png new file mode 100644 index 0000000000000000000000000000000000000000..af21dad74685cfad7720caf0b23e5563144bd5ed GIT binary patch literal 2891 zcmV-R3$*l!P)}j3WcGdtv=xj78l0fUo9kSmE3$+{BkWKS!8NnXJ@?4fQ* zBRNyRsRxNF+s z`g31Bc%g27W6PD%z^sutuN)xwiK+@(hs&WGc*8rPS3y=Tj2c#WerieCwyJUC-+pZ7 z-6t zlt#oZ5y8BWU}sXOR59Pv5_R$ z0bGkYzeBL6ZrV)pcwv6Qrr$34#`E*aCo~~Iv!?)iAv4JmT4%&Pq6iB=J7ZEf-PEvp%YhGW&4aM5GV-;gk7oIu zl!M~<_cNbFwjDe2BTjfuhNz@KL8j;h#WKB#dx93mXLL+v7OsDP$4@TD+H?s62|<{< z1xJ#)#^vD<)v6Eg{c>|l^9+#XU@O=iJADbkGXM*V=!q=4p61T>JJ@ipOjsvMnhM@@p7g zvF#_1&aZE5m|{nffh-Z<*Zl!3C?P?7yG17ml*rM>^K)O^x3wZ4BHr$X^hhi*642Y? zvANu0<(ZCI)GsnHzyetm!Z*jbNDz<5MjX8O*#eCHSb#mw0GHwgH=1<+mDSV~w;ZC!ZQ%68~~^5lh?!TQN-=$#r9xGjo5$E@nCgvvHCE z3{a>}H8d7%KXzmk+6XJicFTT4Y{St_HXQd=1sL^rP1$e=-m48Hd;SGx$$_p9Xt6jk1i&+$xs1KOGw3hl*BwJIcRyS0{ffkG`EK6IB7j+`|NHW`TIGr>H) zzkk~IS`ezNDBD7*(gcPj%6j@aV*-QJa4z9U z&c%CYPX9|gBtp17%UVOAS+-HE4dU|G7tF62Su}hnXsqiX;_414dptdc!y1RN#f7gu zx^U5%4oL89BAE@G(~S;>F=<4pvV8Fup9`zu2GCvhOr91=g9iid7g6+yzdN2JDaTgc zcjvlG&>o@5y_}V;hL_DGaJx2k1v>bH3qOD4meHka9nnnb9q;9?(r-p{Kt6l~)U*(M_N;LGOI}C$iUDCjH+!H9MXu zmMA%8#f8s4x@6JzR*0eMq*&v90q1nB;lD}cqvGqHT>h*~m49T2qvba+{MyX)!~ltX zcv6ADqT!sEf4yqiOC>{w;%~Sn@Z6_bfupQwTnxK}J8g9N#Z6DIcv9kIYf4NEzleG| z$uq^v^od>2-xv?*E4h#nHMIGK$G`R5jEXTWhHVbgrQ|+Wc~XAQUb_Ss=Cq2@wVR(= zwK^=RuY-n5>`lht0U&sqO^XM(5uSdB1?a79z%V?gr=Nar z&Fl%|E^D~B7}V>%sg3uv;4ju{R0SlpU5mlXZ`RDN-n!>!&FxpGV>nh|AKFM)c}UOW zPOtE9my0QFDaw!Teq`CAHQ)Tw7Y=J+;u>0-D~de=c0H#VXtF*|)M1bdADlU<{Q1pY z_Z_RNUw)yXWjro$G00SPszO02cM*_1Ma`ZwBp{?Vlot;@aogl^8@{{r_V*?gmq-{$ zFc;K-on{Ei0n=pFl`A1oltRce{#|=aetY}AInAw|3r^NvoPW0dQW-euK^{g{@|?U( zGQVaZyPXI+jxx|ZZBoUV(xQToN{WZ`N3W9!8XyFdRtf%-3G-b)@I}^-}wPu_hGi~@|JzQ#H^;(gMB&=__kj!c>wz4 p{rq0vD_}SC0q&dnjPw5l7y#{j8|QE?crO3|002ovPDHLkV1jyti9rAW literal 0 HcmV?d00001 diff --git a/src/gui/qt/resources/playeraction_05.png b/src/gui/qt/resources/playeraction_05.png new file mode 100644 index 0000000000000000000000000000000000000000..aa624bb99222d987e128d1d000f6fa48b3768fab GIT binary patch literal 2949 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 literal 0 HcmV?d00001 diff --git a/src/gui/qt/resources/playeraction_07.png b/src/gui/qt/resources/playeraction_07.png new file mode 100644 index 0000000000000000000000000000000000000000..962171c62b16479eb6e20696ee7a0e9e3a41e5d1 GIT binary patch literal 2585 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