00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _PLAYEDRACK_H_
00029 #define _PLAYEDRACK_H_
00030
00031 #include <vector>
00032 #include <string>
00033 #include "tile.h"
00034
00035 class Rack;
00036
00037 using namespace std;
00038
00039
00040
00041
00042
00043
00044
00045
00046 class PlayedRack
00047 {
00048 public:
00049 PlayedRack();
00050 virtual ~PlayedRack() {}
00051
00052 void reset();
00053 void resetNew();
00054
00055 void getOld(Rack &oRack) const;
00056 void getNew(Rack &oRack) const;
00057 void getRack(Rack &oRack) const;
00058
00059 void setOld(const Rack &iRack);
00060 void setNew(const Rack &iRack);
00061
00062 int nTiles() const { return nNew() + nOld(); }
00063 int nNew() const { return m_newTiles.size(); }
00064 int nOld() const { return m_oldTiles.size(); }
00065
00066 void addNew(const Tile &t);
00067 void addOld(const Tile &t);
00068 void getNewTiles(vector<Tile> &oTiles) const;
00069 void getOldTiles(vector<Tile> &oTiles) const;
00070 void getAllTiles(vector<Tile> &oTiles) const;
00071
00072 bool checkRack(int iMin) const;
00073
00074 void operator=(const PlayedRack &iOther);
00075
00076 typedef enum {
00077 RACK_SIMPLE,
00078 RACK_EXTRA,
00079 RACK_DEBUG
00080 } display_mode;
00081 string toString(display_mode iShowExtraSigns = RACK_EXTRA) const;
00082
00083 private:
00084 bool reject;
00085 vector<Tile> m_oldTiles;
00086 vector<Tile> m_newTiles;
00087 };
00088
00089 #endif
00090
00091
00092
00093
00094
00095
00096