#ifndef SCENE_H #define SCENE_H #include #include #include #include #include class Karte; class Basisstapel; class Ablagestapel; class Siegkontrolle; class Punktezaehler; class QTimer; class Undo; class QSettings; class QResizeEvent; class Scene : public QGraphicsScene { Q_OBJECT public: Scene(const QString& deckblatt, QObject *parent = 0); virtual ~Scene(); QList mischen() const; void alle_karten_verdecken(); bool laufendes_spiel() const; bool nur_eine_wird_gezogen() const; void initialisiere_rahmen(bool); Karte* suche_karte(const QString&) const; Basisstapel *suche_stapel(const QString&) const; bool enthaelt_karte(const QString&) const; bool enthaelt_stapel(const QString&) const; const QStringList speichere() const; bool lade(const QStringList&); void registriere_einstellungen(QSettings*); void lade_spielstand(); void speichere_spielstand(); bool begonnenes_spiel() const; void groessenanpassung(QResizeEvent*); public slots: void setze_spiel_zurueck(); void neues_spiel(); void lade_franzoesisches_deckblatt(); void lade_deutsches_deckblatt(); void eine_ziehen(); void drei_ziehen(); void rueckgaengig(); signals: void gewonnen(int, long); void neues_spiel_gestartet(); void neue_punktzahl(int); void verstrichene_sekunden(long); void relay_eine_ziehen(); void relay_drei_ziehen(); void rahmen_anzeigen(bool); void undo_verfuegbar(bool); void neue_groesse_karten(double); private slots: void blockiere_alle_karten(); void starte_spieltimer(); void stoppe_spieltimer(); void reaktionen_auf_spieltimer(); void gewonnen_relay(); private: QList kartenliste; QMap kartenfinder; Basisstapel *austeilstapel, *austeilcostapel, *kreutzzielstapel, *pikzielstapel, *karozielstapel, *herzzielstapel; QList ablagestapel; QList allestapel; QMap stapelfinder; Siegkontrolle *siegkontrolle; bool Laufendes_spiel, nur_eine_ziehen; Punktezaehler *punktezaehler; QTimer *spieltimer; QDateTime startzeitpunkt; Undo *undo; QSettings *einstellungen; const QByteArray berechne_pruefsumme_spielstand(); }; #endif