summaryrefslogtreecommitdiffstats
path: root/kpoker/playerbox.h
blob: 4d769170ae320bc2f2962f1c4117b2e79a87992b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 *     This program is free software; you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with this program; if not, write to the Free Software
 *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */


#ifndef PLAYERBOX_H
#define PLAYERBOX_H


#include <qgroupbox.h>


class QLabel;


class PokerPlayer;
class CardWidget;


class PlayerBox : public QGroupBox
{
  Q_OBJECT

  public:
    PlayerBox(bool playerOne, QWidget* parent = 0, const char* name = 0);
    ~PlayerBox();

    void cardClicked(int no);
	
    /**
      * Show the name of the player who owns this box. Use m_player to
      * get the name.
     **/
    void showName();
	
    /**
      * Paints the cash
     **/
    void showCash(); // and some more

    /**
      * Sets the player which is used e.g. by @ref showCash()
      * @param p The guy who owns this box
     **/
    void setPlayer(PokerPlayer* p)	{ m_player = p; }
	
    /**
      * Hides the card nr (0 = first card)
      *
      * Used to let the cards blink.
      * @param nr The number of the card which will be hidden
     **/
    void hideCard(int nr);

    /**
      * @param nr The number of the card (where 0 = first card)
      * @return If the card nr shall be held
     **/
    bool getHeld(int nr) const;
	
    /**
      * shows all held labels or hides them all
      * @param on Shows all all labels if true and hides them if false
     **/
    void showHelds(bool on);
	
    /**
      * Enables the held labels if on is true or disables them
      * (e.g. after exchange phase) if false
      * @param e Enables held labels if true, disables if false
     **/
    void setHeldEnabled(bool on);
	
    // FIXME: Combine these two into paintCard(int nr, bool showFront);
    /**
      * Paints the card nr
      * @param nr The number of the card (where 0 = first card)
     **/
    void paintCard(int nr);
	
    /**
     * Paints the deck
     * @param nr The number of the card (where 0 = first card)
    **/
    void paintDeck(int nr);
	
    /**
      * Starts a one player game
      * @param newCashPerRound The cash that the player has to pay every round
     **/
    void singlePlayerGame(int newCashPerRound);
	
    /**
      * Activates the held labels for this player (human player)
     **/
    void activateToggleHeld();

    /**
      * Begins blinking of the winning cards
     **/
    void blinkOn();	
	
    /**
      * Stops blinking of the winning cards
     **/
    void blinkOff();
	
    void repaintCard();


  protected:
    virtual void resizeEvent( QResizeEvent* e );


  protected slots:
    void cardClicked(CardWidget* );


  signals:
    void toggleHeld();

  private:
    // The player that acts on the hand.
    PokerPlayer  *m_player;		// The player object. 

    // Properties of the game
    bool     m_singlePlayer;	// True if this is the only player in the game.
    int      m_cashPerRound;	// one player game only  FIXME: Rename into "ante"?

    // The card widgets and "held" widgets
    CardWidget  **m_cardWidgets;
    QLabel      **m_heldLabels;
    bool          m_enableHeldLabels; // True if held labels are enabled.

    // The labels at the right hand side of the box.
    QLabel  *m_cashLabel;
    QLabel  *m_betLabel;


};
#endif