mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-27 08:29:26 -05:00
81 lines
1.9 KiB
C++
81 lines
1.9 KiB
C++
|
#include "Zielstapel.h"
|
||
|
#include "Karte.h"
|
||
|
#include "Siegkontrolle.h"
|
||
|
#include <QDebug>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
Zielstapel::Zielstapel(const QPixmap& pixmap, Scene* oparent, QGraphicsItem* gparent) : Basisstapel(pixmap, oparent, gparent), siegkontrolle(0)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
Zielstapel::~Zielstapel()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
bool Zielstapel::ablage_moeglich(Karte* karte) const
|
||
|
{
|
||
|
bool erg = false;
|
||
|
|
||
|
if (Basisstapel::ablage_moeglich(karte) == true && ((oberste_karte() == 0 && karte->wert() == 1) || (oberste_karte() != 0 &&oberste_karte()->farbe() == karte->farbe() && karte->wert() == (oberste_karte()->wert() + 1))) && karte->hat_kinderkarten() == false) erg = true;
|
||
|
|
||
|
return erg;
|
||
|
}
|
||
|
|
||
|
|
||
|
void Zielstapel::registriere_siegkontrolle(Siegkontrolle* siegkontrolle_)
|
||
|
{
|
||
|
siegkontrolle = siegkontrolle_;
|
||
|
}
|
||
|
|
||
|
|
||
|
void Zielstapel::ablage_erfolgt()
|
||
|
{
|
||
|
siegkontrolle->teste_auf_sieg();
|
||
|
}
|
||
|
|
||
|
|
||
|
void Zielstapel::registriere_nachbar_zielstapel(Basisstapel* erster, Basisstapel* zweiter, Basisstapel* dritter)
|
||
|
{
|
||
|
nachbarn.append(erster);
|
||
|
nachbarn.append(zweiter);
|
||
|
nachbarn.append(dritter);
|
||
|
}
|
||
|
|
||
|
|
||
|
bool Zielstapel::lege_karte_ab(Karte* karte)
|
||
|
{
|
||
|
bool erg = false;
|
||
|
Basisstapel *ziel = 0;
|
||
|
|
||
|
QString quelle(karte->eigentuemer_stapel()->objectName());
|
||
|
|
||
|
// wenn dieser stapel der richtige ist ...
|
||
|
if (objectName().contains(karte->farbe()) == true) erg = Basisstapel::lege_karte_ab(karte);
|
||
|
|
||
|
// ansonsten den richtigen stapel suchen ...
|
||
|
else
|
||
|
{
|
||
|
for (register int idx = 0; idx < nachbarn.size() && ziel == 0; idx++) if (nachbarn.at(idx)->objectName().contains(karte->farbe()) == true) ziel = nachbarn.at(idx);
|
||
|
|
||
|
// ... und die karte auf diesem ablegen
|
||
|
if (ziel != 0) erg = ziel->lege_karte_ab(karte);
|
||
|
|
||
|
else
|
||
|
{
|
||
|
qDebug() << tr("Destination not found in Zielstapel::lege_karte_ab(Karte* karte)");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return erg;
|
||
|
}
|
||
|
|
||
|
|
||
|
void Zielstapel::hilfsanfrage_start(Karte* karte)
|
||
|
{
|
||
|
// dafuer sorgen, das der hilfspfeil nur uber dem richtigen zielstapel erscheint
|
||
|
if (objectName().contains(karte->farbe()) == true) Basisstapel::hilfsanfrage_start(karte);
|
||
|
}
|