diff options
Diffstat (limited to 'kpat/dealer.h')
-rw-r--r-- | kpat/dealer.h | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/kpat/dealer.h b/kpat/dealer.h index 7dfc5825..0704433b 100644 --- a/kpat/dealer.h +++ b/kpat/dealer.h @@ -3,6 +3,7 @@ #include "pile.h" #include "hint.h" +#include <tqdom.h> #include <krandomsequence.h> class TQDomDocument; @@ -38,7 +39,41 @@ public: virtual Dealer *createGame(TDEMainWindow *parent) = 0; }; -class CardState; +class CardState { +public: + Card *it; + Pile *source; + double x; + double y; + double z; + bool faceup; + bool tookdown; + int source_index; + CardState() {} +public: + // as every card is only once we can sort after the card. + // < is the same as <= in that context. == is different + bool operator<(const CardState &rhs) const { return it < rhs.it; } + bool operator<=(const CardState &rhs) const { return it <= rhs.it; } + bool operator>(const CardState &rhs) const { return it > rhs.it; } + bool operator>=(const CardState &rhs) const { return it > rhs.it; } + bool operator==(const CardState &rhs) const { + return (it == rhs.it && source == rhs.source && x == rhs.x && + y == rhs.y && z == rhs.z && faceup == rhs.faceup + && source_index == rhs.source_index && tookdown == rhs.tookdown); + } + void fillNode(TQDomElement &e) const { + e.setAttribute("value", it->rank()); + e.setAttribute("suit", it->suit()); + e.setAttribute("source", source->index()); + e.setAttribute("x", x); + e.setAttribute("y", y); + e.setAttribute("z", z); + e.setAttribute("faceup", faceup); + e.setAttribute("tookdown", tookdown); + e.setAttribute("source_index", source_index); + } +}; typedef TQValueList<CardState> CardStateList; |