123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- #include "AccountSuchen.h"
- #include <DateiSystem.h>
- #include <Punkt.h>
- #include "../../../Global/Initialisierung.h"
- #include "../../../Global/Variablen.h"
- // Inhalt der AccountSuchen Klasse aud AccountSuchen.h
- // Konstruktor
- AccountSuchen::AccountSuchen()
- : Thread(),
- pos(810, 0),
- gr(800, 500),
- laden((Animation2D*)ladeAnimation->dublizieren()),
- accountName(initTextFeld(
- 10, 10, 200, 20, TextFeld::Style::TextFeld, "Spieler Suchen")),
- suchen(initKnopf(220, 10, 100, 20, Knopf::Style::Sichtbar, "Suchen")),
- sortSpalte(initAuswahlBox(330,
- 10,
- 150,
- 20,
- ABSTYLE,
- {
- "Name",
- "Zuletzt Online",
- "Letztes Spiel",
- "Letzte Karte",
- "Spielart Punkte"
- })),
- sortRichtung(
- initAuswahlBox(490, 10, 120, 20, ABSTYLE, {"Aufwärts", "Abwärts"})),
- zurück(initKnopf(620, 10, 20, 20, 0, "")),
- seite(initTextFeld(645,
- 10,
- 120,
- 20,
- TextFeld::Style::Text | TextFeld::Style::Center,
- "Seite 0 von 0")),
- vor(initKnopf(770, 10, 20, 20, 0, "")),
- liste(initObjTabelle(10,
- 40,
- 780,
- 450,
- OTSTYLE,
- {{"Name", 158, 0, 0},
- {"Zuletzt Online", 150, 0, 0},
- {"Letztes Spiel", 145, 0, 0},
- {"Letzte Karte", 150, 0, 0},
- {"Spielart Punkte", 150, 0, 0}},
- 30)),
- auswahl(0), tickVal(0), sichtbar(0), jetztSeite(0), maxSeite(0),
- alpha(255), rend(0)
- {
- initToolTip(accountName, "Gebe den Namen eines Spielers ein.");
- initToolTip(sortSpalte,
- "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.");
- initToolTip(sortRichtung,
- "Wähle aus, ob Aufwärts oder Abwärts\nsortiert werden soll.");
- Bild* zurückB = bilder->get("data/client/bilder/shop.ltdb/zurück.png");
- Bild* weiterB = bilder->get("data/client/bilder/shop.ltdb/weiter.png");
- laden->setSichtbar(0);
- laden->setPosition(375, 225);
- zurück->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund
- | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
- zurück->setHintergrundBildZ(zurückB);
- initToolTip(zurück, "Eine Seite zurück blättern.");
- vor->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund
- | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
- vor->setHintergrundBildZ(weiterB);
- initToolTip(vor, "Eine Seite weiter blättern.");
- liste->addSpalte("Weiter");
- liste->setSpaltenBreite("Weiter", 20);
- }
- // Destruktor
- AccountSuchen::~AccountSuchen()
- {
- laden->release();
- accountName->release();
- suchen->release();
- sortSpalte->release();
- sortRichtung->release();
- zurück->release();
- seite->release();
- vor->release();
- tabelleLehren(1);
- liste->release();
- }
- // privat
- void AccountSuchen::lock()
- {
- cs.lock();
- }
- void AccountSuchen::unlock()
- {
- cs.unlock();
- }
- void AccountSuchen::tabelleLehren(bool überschrift)
- {
- lock();
- int zAnz = liste->getZeilenAnzahl();
- for (int i = !überschrift; i < zAnz; i++)
- liste->removeZeile(!überschrift);
- unlock();
- }
- // nicht constant
- void AccountSuchen::setSichtbar(bool sichtbar)
- {
- this->sichtbar = sichtbar;
- }
- void AccountSuchen::thread()
- {
- laden->setSichtbar(1);
- tabelleLehren(0);
- Array<KSGClient::AccountInfo> info;
- int anz = infoClient->getSpielerListe(accountName->zText()->getText(),
- &jetztSeite,
- &maxSeite,
- sortSpalte->getAuswahl(),
- sortRichtung->getAuswahl(),
- &info);
- zurück->setStyle(Knopf::Style::Erlaubt, jetztSeite > 1);
- vor->setStyle(Knopf::Style::Erlaubt, jetztSeite < maxSeite);
- lock();
- seite->setText("Seite ");
- seite->zText()->append(jetztSeite);
- seite->zText()->append(" von ");
- seite->zText()->append(maxSeite);
- unlock();
- for (int i = 0; i < anz; i++)
- {
- KSGClient::AccountInfo inf = info.get(i);
- liste->addZeile(i + 1, Text() += inf.id);
- liste->setZeilenHeight(i + 1, 20);
- liste->setZeichnungZ(liste->getSpaltenNummer("Name"),
- i + 1,
- initTextFeld(0,
- 0,
- 0,
- 0,
- TextFeld::Style::Text | TextFeld::Style::VCenter,
- inf.name));
- if (inf.zuletztOnline.hat('.'))
- inf.zuletztOnline.setText(inf.zuletztOnline.getTeilText(
- 0, inf.zuletztOnline.positionVon('.')));
- liste->setZeichnungZ(liste->getSpaltenNummer("Zuletzt Online"),
- i + 1,
- initTextFeld(0,
- 0,
- 0,
- 0,
- TextFeld::Style::Text | TextFeld::Style::VCenter,
- inf.zuletztOnline));
- liste->setZeichnungZ(liste->getSpaltenNummer("Letztes Spiel"),
- i + 1,
- initTextFeld(0,
- 0,
- 0,
- 0,
- TextFeld::Style::Text | TextFeld::Style::VCenter,
- inf.letztesSpiel));
- liste->setZeichnungZ(liste->getSpaltenNummer("Letzte Karte"),
- i + 1,
- initTextFeld(0,
- 0,
- 0,
- 0,
- TextFeld::Style::Text | TextFeld::Style::VCenter,
- inf.letzteKarte));
- liste->setZeichnungZ(liste->getSpaltenNummer("Spielart Punkte"),
- i + 1,
- initTextFeld(0,
- 0,
- 0,
- 0,
- TextFeld::Style::Text | TextFeld::Style::VCenter,
- inf.punkte));
- Knopf* details = initKnopf(0, 0, 20, 20, 0, "");
- details->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund
- | Knopf::Style::HBild | Knopf::Style::KlickBuffer
- | Knopf::Style::Erlaubt);
- details->setMausEreignisParameter(this);
- details->setMausEreignis(accountSuchenDetailsKlick);
- details->setHintergrundBildZ(vor->getHintergrundBild());
- liste->setZeichnungZ(liste->getSpaltenNummer("Weiter"), i + 1, details);
- }
- laden->setSichtbar(0);
- run = 0;
- }
- bool AccountSuchen::detailsKlick(Knopf* zKnopf, MausEreignis& me)
- {
- if (me.id != ME_RLinks) return 1;
- int zAnz = liste->getZeilenAnzahl();
- for (int i = 1; i < zAnz; i++)
- {
- if (liste->zZeichnung(liste->getSpaltenNummer("Weiter"), i) == zKnopf)
- {
- auswahl = (int)*liste->zZeilenName(i);
- break;
- }
- }
- return 1;
- }
- void AccountSuchen::doPublicMausEreignis(MausEreignis& me)
- {
- if (run) return;
- bool starten = 0;
- lock();
- me.mx -= pos.x;
- me.my -= pos.y;
- int ausw = sortSpalte->getAuswahl();
- sortSpalte->doPublicMausEreignis(me);
- if (ausw != sortSpalte->getAuswahl())
- {
- sortSpalte->einklappen();
- starten = 1;
- }
- ausw = sortRichtung->getAuswahl();
- sortRichtung->doPublicMausEreignis(me);
- if (ausw != sortRichtung->getAuswahl())
- {
- sortRichtung->einklappen();
- starten = 1;
- }
- accountName->doPublicMausEreignis(me);
- bool vera = me.verarbeitet;
- suchen->doPublicMausEreignis(me);
- if (!vera && me.verarbeitet && me.id == ME_RLinks)
- {
- jetztSeite = 1;
- starten = 1;
- }
- vera = me.verarbeitet;
- zurück->doPublicMausEreignis(me);
- if (!vera && me.verarbeitet)
- {
- seite--;
- starten = 1;
- }
- vera = me.verarbeitet;
- vor->doPublicMausEreignis(me);
- if (!vera && me.verarbeitet)
- {
- seite++;
- starten = 1;
- }
- liste->doPublicMausEreignis(me);
- me.mx += pos.x;
- me.my += pos.y;
- unlock();
- if (starten) start();
- }
- void AccountSuchen::doTastaturEreignis(TastaturEreignis& te)
- {
- if (run) return;
- lock();
- bool vera = te.verarbeitet;
- accountName->doTastaturEreignis(te);
- if (!vera && te.verarbeitet && te.virtualKey == T_Enter
- && te.id == TE_Release)
- {
- jetztSeite = 1;
- start();
- }
- unlock();
- }
- bool AccountSuchen::tick(double tickVal)
- {
- lock();
- rend |= laden->tick(tickVal);
- rend |= accountName->tick(tickVal);
- rend |= suchen->tick(tickVal);
- rend |= sortSpalte->tick(tickVal);
- rend |= sortRichtung->tick(tickVal);
- rend |= zurück->tick(tickVal);
- rend |= seite->tick(tickVal);
- rend |= vor->tick(tickVal);
- rend |= liste->tick(tickVal);
- this->tickVal += tickVal;
- int valA = (int)(this->tickVal * 150);
- int valB = (int)(this->tickVal * 500);
- this->tickVal -= valA / 150.0;
- if (valA)
- {
- if (laden->istSichtbar() && alpha != 100)
- {
- if (alpha - valA < 100)
- alpha = 100;
- else
- alpha -= valA;
- rend = 1;
- }
- if (!laden->istSichtbar() && alpha != 255)
- {
- if (alpha + valA > 255)
- alpha = 255;
- else
- alpha += valA;
- rend = 1;
- }
- }
- if (valB)
- {
- if (sichtbar && pos.x != 0)
- {
- if (pos.x + valB > 0)
- pos.x = 0;
- else
- pos.x += valB;
- rend = 1;
- }
- else if (!sichtbar && pos.x != -810)
- {
- if (pos.x - valB < -810)
- pos.x = -810;
- else
- pos.x -= valB;
- rend = 1;
- }
- }
- unlock();
- bool ret = rend;
- rend = 0;
- return ret;
- }
- void AccountSuchen::render(Bild& zRObj)
- {
- if (!zRObj.setDrawOptions(pos, gr)) return;
- lock();
- laden->render(zRObj);
- accountName->render(zRObj);
- suchen->render(zRObj);
- zurück->render(zRObj);
- seite->render(zRObj);
- vor->render(zRObj);
- liste->render(zRObj);
- sortSpalte->render(zRObj);
- sortRichtung->render(zRObj);
- unlock();
- zRObj.releaseDrawOptions();
- }
- int AccountSuchen::getAuswahlAccountId()
- {
- int ret = auswahl;
- auswahl = 0;
- return ret;
- }
- // Nachrichten
- bool accountSuchenDetailsKlick(void* p, void* obj, MausEreignis me)
- {
- if (p) return ((AccountSuchen*)p)->detailsKlick((Knopf*)obj, me);
- return 1;
- }
|