Files
pokerth/src/gui/qt/gametable/gametableimpl.h
T

474 lines
12 KiB
C++
Raw Normal View History

/*****************************************************************************
* PokerTH - The open source texas holdem engine *
* Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
2011-07-03 19:45:08 +00:00
*****************************************************************************/
#ifndef GAMETABLEIMPL_H
2008-05-05 07:46:19 +00:00
#define GAMETABLEIMPL_H
#include "ui_gametable.h"
#include "game_defs.h"
#include <string>
#include <boost/shared_ptr.hpp>
#include <QtGui>
#include <QtCore>
2010-12-13 22:09:48 +00:00
class guiLog;
2009-08-17 23:20:58 +00:00
class ChatTools;
2008-05-05 07:46:19 +00:00
class ConfigFile;
class Session;
class Game;
class GuiInterface;
class BoardInterface;
class PlayerInterface;
class MyCardsPixmapLabel;
class MyAvatarLabel;
2009-04-19 20:23:20 +00:00
class MyTimeoutLabel;
2008-05-05 07:46:19 +00:00
class settingsDialogImpl;
2008-06-08 21:18:29 +00:00
class startWindowImpl;
class myMessageDialogImpl;
2008-05-05 07:46:19 +00:00
2009-03-30 19:01:54 +00:00
class GameTableStyleReader;
class CardDeckStyleReader;
2008-05-05 07:46:19 +00:00
2009-03-30 19:01:54 +00:00
class SDLPlayer;
2008-05-05 07:46:19 +00:00
class gameTableImpl: public QMainWindow, public Ui::gameTable
{
Q_OBJECT
2008-05-05 07:46:19 +00:00
public:
gameTableImpl(ConfigFile *c = 0, QMainWindow *parent = 0);
2008-05-05 07:46:19 +00:00
~gameTableImpl();
2008-05-05 07:46:19 +00:00
boost::shared_ptr<Session> getSession();
SDLPlayer* getMySDLPlayer() const {
return mySDLPlayer;
}
ChatTools* getMyChat() const {
return myChat;
}
ConfigFile* getMyConfig() const {
return myConfig;
}
GameTableStyleReader* getMyGameTableStyle() const {
return myGameTableStyle;
}
bool getGuestMode() const {
return guestMode;
}
2008-05-05 07:46:19 +00:00
void setStartWindow(startWindowImpl* s) {
myStartWindow = s;
}
void setGuiLog(guiLog* l) {
myGuiLog = l;
}
void setSpeeds();
2008-05-05 07:46:19 +00:00
2008-05-05 07:46:19 +00:00
signals:
void signalInitGui(int speed);
2008-05-05 07:46:19 +00:00
void signalShowClientDialog();
2008-05-05 07:46:19 +00:00
void signalRefreshSet();
void signalRefreshCash();
void signalRefreshAction(int =-1, int=-1);
void signalRefreshChangePlayer();
void signalRefreshPot();
void signalRefreshGroupbox(int =-1, int =-1);
void signalRefreshAll();
void signalRefreshPlayerName();
void signalRefreshButton();
void signalRefreshGameLabels(int);
2008-05-05 07:46:19 +00:00
void signalSetPlayerAvatar(int, QString);
void signalGuiUpdateDone();
2008-05-05 07:46:19 +00:00
void signalMeInAction();
void signalUpdateMyButtonsState();
void signalDisableMyButtons();
void signalStartTimeoutAnimation(int playerId, int timeoutSec);
void signalStopTimeoutAnimation(int playerId);
2008-05-05 07:46:19 +00:00
void signalDealBeRoCards(int myBeRoID);
2008-05-05 07:46:19 +00:00
void signalDealHoleCards();
void signalDealFlopCards0();
void signalDealTurnCards0();
void signalDealRiverCards0();
2008-05-05 07:46:19 +00:00
void signalNextPlayerAnimation();
2008-05-05 07:46:19 +00:00
void signalBeRoAnimation2(int);
2008-05-05 07:46:19 +00:00
void signalPreflopAnimation1();
void signalPreflopAnimation2();
void signalFlopAnimation1();
void signalFlopAnimation2();
void signalTurnAnimation1();
void signalTurnAnimation2();
void signalRiverAnimation1();
void signalRiverAnimation2();
void signalPostRiverAnimation1();
void signalPostRiverRunAnimation1();
void signalPostRiverShowCards(unsigned playerId);
2008-05-05 07:46:19 +00:00
void signalFlipHolecardsAllIn();
void signalNextRoundCleanGui();
void signalStartVoteOnKick(unsigned playerId, unsigned voteStarterPlayerId, int timeoutSec, int numVotesNeededToKick);
void signalChangeVoteOnKickButtonsState(bool showHide);
void signalEndVoteOnKick();
void signalNetClientPlayerLeft(unsigned playerId);
2008-05-05 07:46:19 +00:00
public slots:
void initGui(int speed);
//refresh-Funktionen
void refreshSet();
void refreshCash();
void refreshAction(int =-1, int=-1);
void refreshChangePlayer();
void refreshPot();
void refreshGroupbox(int =-1, int =-1);
void refreshAll();
void refreshPlayerName();
void refreshGameLabels(int);
void refreshButton();
void refreshPlayerAvatar();
void refreshActionButtonFKeyIndicator(bool =0);
void setPlayerAvatar(int myID, QString myAvatar);
void guiUpdateDone();
void waitForGuiUpdateDone();
// Karten-Funktionen
void dealHoleCards();
2008-05-05 07:46:19 +00:00
//Spieler-Funktionen
void provideMyActions(int mode = -1); //mode 0 == called from dealberocards
void meInAction();
void disableMyButtons();
void startTimeoutAnimation(int playerId, int timoutSec);
void stopTimeoutAnimation(int playerId);
2008-05-05 07:46:19 +00:00
void setGameSpeed(const int theValue) {
guiGameSpeed = theValue; // Achtung Faktor 10!!!
setSpeeds();
}
2008-05-05 07:46:19 +00:00
void callSettingsDialog();
void applySettings(settingsDialogImpl*);
2008-05-05 07:46:19 +00:00
void pushButtonBetRaiseClicked(bool checked);
void pushButtonCallCheckClicked(bool checked);
void pushButtonFoldClicked(bool checked);
void pushButtonAllInClicked(bool checked);
2008-05-05 07:46:19 +00:00
void myCallCheck();
2008-05-05 07:46:19 +00:00
void myFold();
void myCheck();
int getMyCallAmount();
int getBetRaisePushButtonValue();
int getMyBetAmount();
void myCall();
void mySet();
void myAllIn();
2008-05-05 07:46:19 +00:00
void myActionDone();
2008-05-05 07:46:19 +00:00
void dealBeRoCards(int);
2008-05-05 07:46:19 +00:00
void dealFlopCards0();
void dealFlopCards1();
void dealFlopCards2();
void dealFlopCards3();
void dealFlopCards4();
void dealFlopCards5();
void dealFlopCards6();
2008-05-05 07:46:19 +00:00
void dealTurnCards0();
void dealTurnCards1();
void dealTurnCards2();
void dealRiverCards0();
void dealRiverCards1();
void dealRiverCards2();
void nextPlayerAnimation();
void beRoAnimation2(int);
void preflopAnimation1();
void preflopAnimation1Action();
void preflopAnimation2();
void preflopAnimation2Action();
2008-05-05 07:46:19 +00:00
void flopAnimation1();
void flopAnimation1Action();
void flopAnimation2();
void flopAnimation2Action();
2008-05-05 07:46:19 +00:00
void turnAnimation1();
void turnAnimation1Action();
void turnAnimation2();
void turnAnimation2Action();
2008-05-05 07:46:19 +00:00
void riverAnimation1();
void riverAnimation1Action();
void riverAnimation2();
void riverAnimation2Action();
void postRiverAnimation1();
void postRiverAnimation1Action();
void postRiverRunAnimation1();
void postRiverRunAnimation2();
void postRiverRunAnimation3();
void postRiverRunAnimation4();
void postRiverRunAnimation5();
void postRiverRunAnimation6();
void showHoleCards(unsigned playerId, bool allIn = false);
void refreshCardsChance(GameState);
void blinkingStartButtonAnimationAction();
void flipHolecardsAllIn();
void triggerVoteOnKick(int id);
void handSwitchRounds();
void startNewHand();
void stopTimer();
void nextRoundCleanGui();
void breakButtonClicked();
void keyPressEvent ( QKeyEvent*);
bool eventFilter(QObject *obj, QEvent *event);
void switchChatWindow();
void switchHelpWindow();
void switchLogWindow();
void switchAwayWindow();
void switchChanceWindow();
void switchFullscreen();
void sendChatMessage();
void checkChatInputLength(QString);
void tabSwitchAction();
void leaveCurrentNetworkGame();
void localGameModification();
void networkGameModification();
void mouseOverFlipCards(bool front);
void updateMyButtonsState(int mode = -1); //mode 0 == called from dealberocards
void uncheckMyButtons();
void resetMyButtonsCheckStateMemory();
void clearMyButtons();
void myButtonsCheckable(bool state);
void changePlayingMode();
void changeSpinBoxBetValue(int);
void spinBoxBetValueChanged(int);
void showMaximized ();
void closeGameTable();
void startVoteOnKick(unsigned playerId, unsigned voteStarterPlayerId, int timeoutSec, int numVotesNeededToKick);
void changeVoteOnKickButtonsState(bool showHide);
void endVoteOnKick();
void voteOnKickYes();
void voteOnKickNo();
void startVoteOnKickTimeout();
void stopVoteOnKickTimeout();
void nextVoteOnKickTimeoutAnimationFrame();
void refreshVotesMonitor(int currentVotes, int numVotesNeededToKick);
void refreshGameTableStyle();
void saveGameTableGeometry();
void restoreGameTableGeometry();
void netClientPlayerLeft(unsigned playerId);
void registeredUserMode();
void guestUserMode();
void showShowMyCardsButton();
void sendShowMyCardsSignal();
void closeMessageBoxes();
void hide();
private:
boost::shared_ptr<GuiInterface> myServerGuiInterface;
guiLog *myGuiLog;
ChatTools *myChat;
ConfigFile *myConfig;
//Timer
QTimer *potDistributeTimer;
QTimer *timer;
QTimer *dealFlopCards0Timer;
QTimer *dealFlopCards1Timer;
QTimer *dealFlopCards2Timer;
QTimer *dealFlopCards3Timer;
QTimer *dealFlopCards4Timer;
QTimer *dealFlopCards5Timer;
QTimer *dealFlopCards6Timer;
QTimer *dealTurnCards0Timer;
QTimer *dealTurnCards1Timer;
QTimer *dealTurnCards2Timer;
QTimer *dealRiverCards0Timer;
QTimer *dealRiverCards1Timer;
QTimer *dealRiverCards2Timer;
QTimer *nextPlayerAnimationTimer;
QTimer *preflopAnimation1Timer;
QTimer *preflopAnimation2Timer;
QTimer *flopAnimation1Timer;
QTimer *flopAnimation2Timer;
QTimer *turnAnimation1Timer;
QTimer *turnAnimation2Timer;
QTimer *riverAnimation1Timer;
QTimer *riverAnimation2Timer;
QTimer *postRiverAnimation1Timer;
QTimer *postRiverRunAnimation1Timer;
QTimer *postRiverRunAnimation2Timer;
QTimer *postRiverRunAnimation2_flipHoleCards1Timer;
QTimer *postRiverRunAnimation2_flipHoleCards2Timer;
QTimer *postRiverRunAnimation3Timer;
QTimer *postRiverRunAnimation5Timer;
QTimer *postRiverRunAnimation6Timer;
QTimer *blinkingStartButtonAnimationTimer;
QTimer *voteOnKickTimeoutTimer;
boost::timers::portable::microsec_timer voteOnKickRealTimer;
QWidget *userWidgetsArray[6];
QLabel *buttonLabelArray[MAX_NUMBER_OF_PLAYERS];
QLabel *cashLabelArray[MAX_NUMBER_OF_PLAYERS];
QLabel *cashTopLabelArray[MAX_NUMBER_OF_PLAYERS];
MySetLabel *setLabelArray[MAX_NUMBER_OF_PLAYERS];
QLabel *actionLabelArray[MAX_NUMBER_OF_PLAYERS];
MyNameLabel *playerNameLabelArray[MAX_NUMBER_OF_PLAYERS];
MyAvatarLabel *playerAvatarLabelArray[MAX_NUMBER_OF_PLAYERS];
MyTimeoutLabel *timeoutLabelArray[MAX_NUMBER_OF_PLAYERS];
QLabel *playerStarsArray[6][MAX_NUMBER_OF_PLAYERS];
QGroupBox *groupBoxArray[MAX_NUMBER_OF_PLAYERS];
MyCardsPixmapLabel *boardCardsArray[5];
MyCardsPixmapLabel *holeCardsArray[MAX_NUMBER_OF_PLAYERS][2];
QLabel *playerTipLabelArray[MAX_NUMBER_OF_PLAYERS];
QPixmap flipside;
// Dialogs
startWindowImpl *myStartWindow;
myMessageDialogImpl *myUniversalMessageDialog;
//Sound
SDLPlayer *mySDLPlayer;
QString myAppDataPath;
int distributePotAnimCounter;
int playingMode;
QString font2String;
QString font1String;
//Speed
int guiGameSpeed;
int gameSpeed;
int dealCardsSpeed;
int preDealCardsSpeed;
int postDealCardsSpeed;
int AllInDealCardsSpeed;
int postRiverRunAnimationSpeed;
int winnerBlinkSpeed;
int newRoundSpeed;
int nextPlayerSpeed1;
int nextPlayerSpeed2;
int nextPlayerSpeed3;
int preflopNextPlayerSpeed;
int nextOpponentSpeed;
bool myActionIsBet;
bool myActionIsRaise;
bool pushButtonBetRaiseIsChecked;
bool pushButtonCallCheckIsChecked;
bool pushButtonFoldIsChecked;
bool pushButtonAllInIsChecked;
bool myButtonsAreCheckable;
bool breakAfterCurrentHand;
bool currentGameOver;
bool flipHolecardsAllInAlreadyDone;
bool betSliderChangedByInput;
bool guestMode;
// statistic testing
int statisticArray[15];
QSemaphore guiUpdateSemaphore;
int keyUpDownChatCounter;
int myLastPreActionBetValue;
int voteOnKickTimeoutSecs;
unsigned playerAboutToBeKickedId;
GameTableStyleReader *myGameTableStyle;
CardDeckStyleReader *myCardDeckStyle;
QString AllInString;
QString RaiseString;
QString BetString;
QString CallString;
QString CheckString;
QString FoldString;
QString PotString;
QString TotalString;
QString BetsString;
QString GameString;
QString HandString;
QString PreflopString;
QString FlopString;
QString TurnString;
QString RiverString;
friend class MyAvatarLabel;
friend class GuiWrapper;
2008-05-05 07:46:19 +00:00
};
#endif