123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- #include "Auswahl.h"
- #include "../../../Global/Initialisierung.h"
- #include "../../../Global/Variablen.h"
- #include <DateiSystem.h>
- #include <KSGTDatei.h>
- // Inhalt der Auswahl Klasse aus Auswahl.h
- // Konstruktor
- Auswahl::Auswahl(KartenEditor* kEditor)
- : Thread()
- {
- this->kEditor = kEditor;
- alpha = 255;
- sichtbar = 0;
- suchFilterT = initTextFeld(10, 10, 70, 20, TextFeld::Style::Text | TextFeld::Style::VCenter, "Suchfilter:");
- suchFilter = initTextFeld(90, 10, 210, 20, TextFeld::Style::TextFeld, "");
- initToolTip(suchFilter, "Gebe etwas vom Namen der Karte ein, nach der du suchst.");
- suchen = initKnopf(310, 10, 100, 20, Knopf::Style::Sichtbar, "suchen");
- sortSpalte = initAuswahlBox(640, 10, 120, 20, ABSTYLE,
- { "Name", "Spielart", "Preis (Kupfer)", "Verkauft", "Spieleranzahl" });
- sortRichtung = initAuswahlBox(770, 10, 120, 20, ABSTYLE, { "Aufsteigend", "Absteigend" });
- karten = initObjTabelle(10, 40, 880, 520, OTSTYLE, { { "Name", 220, 220, 220 }, { "Spielart", 220, 220, 220 },
- { "Kupfer", 130, 130, 130 }, { "Verkauft", 125, 125, 125 }, { "Spieleranzahl", 140, 140, 140 },
- { "", 20, 20, 20 } }, 20);
- neuKarteName = initTextFeld(10, 570, 195, 20, TextFeld::Style::TextFeld, "");
- initToolTip(neuKarteName, "Name einer neuen Karte");
- neuKarteSpielArt = initAuswahlBox(215, 570, 195, 20, ABSTYLE, {});
- neuKarte = initKnopf(420, 570, 120, 20, Knopf::Style::Sichtbar, "Karte Erstellen");
- laden = (Framework::Animation2D*)ladeAnimation->dublizieren();
- laden->setPosition(425, 275);
- laden->setSichtbar(0);
- aktion = 0;
- tickVal = 0;
- rend = 0;
- }
- // Destruktor
- Auswahl::~Auswahl()
- {
- laden->release();
- suchFilterT->release();
- suchFilter->release();
- suchen->release();
- sortSpalte->release();
- sortRichtung->release();
- karten->release();
- neuKarteName->release();
- neuKarteSpielArt->release();
- neuKarte->release();
- kEditor->release();
- }
- // nicht constant
- void Auswahl::setSichtbar(bool sicht)
- {
- sichtbar = sicht;
- if (sichtbar)
- {
- MausEreignis me;
- me.id = ME_RLinks;
- me.verarbeitet = 0;
- me.mx = suchen->getX() + 1;
- me.my = suchen->getY() + 1;
- doPublicMausEreignis(me);
- }
- }
- void Auswahl::thread()
- {
- laden->setSichtbar(1);
- if (aktion < 0)
- {
- int port = 0;
- Text ip = "";
- KSGClient::EditorServerClient* editorClient = infoClient->createEditorServerClient(0);
- if (!editorClient)
- {
- nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"), new Text(infoClient->getLetzterFehler()), new Text("Ok"));
- aktion = 0;
- laden->setSichtbar(0);
- run = 0;
- return;
- }
- bool ok = 0;
- if (editorClient->verbinde())
- {
- if (editorClient->karteErstellen(neuKarteName->zText()->getText(), infoClient->getSpielId(neuKarteSpielArt->zEintrag(neuKarteSpielArt->getAuswahl())->zText()->getText())))
- ok = 1;
- editorClient->trenne(1);
- }
- if (!ok)
- {
- nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"), new Text(editorClient->getLetzterFehler()), new Text("Ok"));
- aktion = 0;
- laden->setSichtbar(0);
- run = 0;
- editorClient->release();
- return;
- }
- aktion = 0;
- laden->setSichtbar(0);
- run = 0;
- editorClient->release();
- return;
- }
- if (aktion)
- {
- int port = 0;
- Text ip = "";
- if (editorClient)
- editorClient = (KSGClient::EditorServerClient*)editorClient->release();
- editorClient = infoClient->createEditorServerClient(aktion);
- if (!editorClient)
- {
- nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"), new Text(infoClient->getLetzterFehler()), new Text("Ok"));
- aktion = 0;
- laden->setSichtbar(0);
- run = 0;
- return;
- }
- bool ok = 0;
- if (editorClient->verbinde())
- {
- if (editorClient->ladeKarte(aktion))
- ok = 1;
- }
- if (!ok)
- {
- nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"), new Text(editorClient->getLetzterFehler()), new Text("Ok"));
- aktion = 0;
- laden->setSichtbar(0);
- run = 0;
- return;
- }
- kEditor->setKarte(aktion);
- aktion = 0;
- setSichtbar(0);
- while (alpha != 0)
- Sleep(100);
- laden->setSichtbar(0);
- run = 0;
- return;
- }
- Array< int >* saList = infoClient->getAccountSpielArtListe();
- if (saList)
- {
- RCArray< Text >* saNamen = new RCArray< Text >();
- int anz = saList->getEintragAnzahl();
- for (int i = 0; i < anz; i++)
- {
- if (!saList->hat(i))
- continue;
- Text* name = infoClient->getSpielName(saList->hat(i) ? saList->get(i) : 0);
- if (name)
- saNamen->add(name);
- }
- neuKarteSpielArt->lockZeichnung();
- neuKarteSpielArt->setAuswahl(0);
- anz = neuKarteSpielArt->getEintragAnzahl();
- for (int i = 0; i < anz; i++)
- neuKarteSpielArt->removeEintrag(0);
- anz = saNamen->getEintragAnzahl();
- for (int i = 0; i < anz; i++)
- {
- if (saNamen->z(i))
- neuKarteSpielArt->addEintrag(saNamen->z(i)->getText());
- }
- neuKarteSpielArt->unlockZeichnung();
- saNamen->release();
- saList->release();
- }
- karten->lockZeichnung();
- int anz = karten->getZeilenAnzahl();
- for (int i = 1; i < anz; i++)
- karten->removeZeile(1);
- karten->unlockZeichnung();
- Bild* shopWeiter = bilder->get("data/client/bilder/shop.ltdb/weiter.png");
- Array< int >* kId = new Array< int >();
- RCArray< Text >* kName = new RCArray< Text >();
- RCArray< Text >* saName = new RCArray< Text >();
- Array< int >* kupfer = new Array< int >();
- Array< int >* verkauft = new Array< int >();
- Array< int >* maxSpieler = new Array< int >();
- int kAnz = infoClient->getKartenListe(suchFilter->zText()->getText(), (char)sortSpalte->getAuswahl(), (char)sortRichtung->getAuswahl(),
- kId, kName, saName, kupfer, verkauft, maxSpieler);
- for (int i = 0; i < kAnz; i++)
- {
- Text zeile;
- zeile = kId->get(i);
- karten->addZeile(zeile);
- karten->setZeichnungZ(0, i + 1, initTextFeld(0, 0, 0, 0, TextFeld::Style::Text | TextFeld::Style::VCenter, kName->z(i)->getText()));
- karten->setZeichnungZ(1, i + 1, initTextFeld(0, 0, 0, 0, TextFeld::Style::Text | TextFeld::Style::VCenter, saName->z(i)->getText()));
- karten->setZeichnungZ(2, i + 1, initTextFeld(0, 0, 0, 0, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += kupfer->get(i)));
- karten->setZeichnungZ(3, i + 1, initTextFeld(0, 0, 0, 0, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += verkauft->get(i)));
- karten->setZeichnungZ(4, i + 1, initTextFeld(0, 0, 0, 0, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += maxSpieler->get(i)));
- Knopf* weiter = initKnopf(0, 0, 0, 0, 0, "");
- weiter->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
- weiter->setHintergrundBildZ(dynamic_cast<Bild*>(shopWeiter->getThis()));
- weiter->setMausEreignisParameter(this);
- weiter->setMausEreignis(auswahlWeiterME);
- karten->setZeichnungZ(5, i + 1, weiter);
- }
- kId->release();
- kName->release();
- saName->release();
- kupfer->release();
- verkauft->release();
- maxSpieler->release();
- shopWeiter->release();
- laden->setSichtbar(0);
- run = 0;
- }
- bool Auswahl::weiterME(Zeichnung* obj, MausEreignis& me)
- {
- if (me.id != ME_RLinks)
- return 1;
- karten->lockZeichnung();
- int anz = karten->getZeilenAnzahl();
- for (int i = 1; i < anz; i++)
- {
- if (karten->zZeichnung(5, i) == obj)
- {
- aktion = (int)*karten->zZeilenName(i);
- start();
- }
- }
- karten->unlockZeichnung();
- return 1;
- }
- void Auswahl::doPublicMausEreignis(MausEreignis& me)
- {
- if (!sichtbar || run)
- return;
- suchFilter->doPublicMausEreignis(me);
- bool vera = me.verarbeitet;
- suchen->doPublicMausEreignis(me);
- if (!vera && me.verarbeitet && me.id == ME_RLinks)
- {
- aktion = 0;
- start();
- }
- int ausw = sortSpalte->getAuswahl();
- sortSpalte->doPublicMausEreignis(me);
- if (ausw != sortSpalte->getAuswahl())
- {
- aktion = 0;
- start();
- sortSpalte->einklappen();
- }
- ausw = sortRichtung->getAuswahl();
- sortRichtung->doPublicMausEreignis(me);
- if (ausw != sortRichtung->getAuswahl())
- {
- aktion = 0;
- start();
- sortRichtung->einklappen();
- }
- karten->doPublicMausEreignis(me);
- neuKarteName->doPublicMausEreignis(me);
- neuKarteSpielArt->doPublicMausEreignis(me);
- vera = me.verarbeitet;
- neuKarte->doPublicMausEreignis(me);
- if (!vera && me.verarbeitet && me.id == ME_RLinks)
- {
- aktion = -1;
- start();
- }
- }
- void Auswahl::doTastaturEreignis(TastaturEreignis& te)
- {
- if (!sichtbar || run)
- return;
- bool vera = te.verarbeitet;
- suchFilter->doTastaturEreignis(te);
- if (!vera && te.verarbeitet && te.taste == T_Enter && te.id == TE_Release)
- {
- MausEreignis me;
- me.id = ME_RLinks;
- me.verarbeitet = 0;
- me.mx = suchen->getX() + 1;
- me.my = suchen->getY() + 1;
- doPublicMausEreignis(me);
- }
- neuKarteName->doTastaturEreignis(te);
- }
- bool Auswahl::tick(double zeit)
- {
- tickVal += zeit * 250;
- int val = (int)tickVal;
- if (val < 1)
- {
- bool ret = rend;
- rend = 0;
- return ret;
- }
- if (val > 10)
- val = 10;
- rend |= sortSpalte->tick(zeit);
- rend |= sortRichtung->tick(zeit);
- rend |= neuKarteSpielArt->tick(zeit);
- rend |= laden->tick(zeit);
- rend |= suchFilterT->tick(zeit);
- rend |= suchFilter->tick(zeit);
- rend |= suchen->tick(zeit);
- rend |= karten->tick(zeit);
- rend |= neuKarteName->tick(zeit);
- rend |= neuKarte->tick(zeit);
- if (sichtbar && alpha != 255 && !run)
- {
- if (alpha + val > 255)
- alpha = 255;
- else
- alpha += val;
- rend = 1;
- }
- if (sichtbar && alpha != 125 && run)
- {
- if (alpha > 125)
- {
- if (alpha - val < 125)
- alpha = 125;
- else
- alpha -= val;
- rend = 1;
- }
- else
- {
- if (alpha + val > 125)
- alpha = 125;
- else
- alpha += 125;
- rend = 1;
- }
- }
- if (!sichtbar && alpha != 0)
- {
- if (alpha - val < 0)
- alpha = 0;
- else
- alpha -= val;
- rend = 1;
- }
- bool ret = rend;
- rend = 0;
- return ret;
- }
- void Auswahl::render(Bild& zRObj)
- {
- if (!alpha)
- return;
- zRObj.setAlpha(alpha);
- suchFilterT->render(zRObj);
- suchFilter->render(zRObj);
- suchen->render(zRObj);
- karten->render(zRObj);
- neuKarteName->render(zRObj);
- neuKarte->render(zRObj);
- neuKarteSpielArt->render(zRObj);
- sortSpalte->render(zRObj);
- sortRichtung->render(zRObj);
- zRObj.releaseAlpha();
- laden->render(zRObj);
- }
- // constant
- bool Auswahl::istSichtbar() const
- {
- return sichtbar;
- }
- // Ereignisse
- bool auswahlWeiterME(void* p, void* obj, MausEreignis me)
- {
- if (p)
- return ((Auswahl*)p)->weiterME((Zeichnung*)obj, me);
- return 1;
- }
|