#include "NachLogin.h" #include #include #include #include #include "../Global/Variablen.h" // Inhalt der NachLogin Klasse aus NachLogin.h // Konstruktor NachLogin::NachLogin() : Zeichnung() { fenster = 0; titel = 0; freunde = 0; chatLeiste = 0; nachrichtenListe = 0; spielenFenster = 0; shopFenster = 0; accountAnsehenFenster = 0; mgFenster = 0; newsFenster = 0; editorFenster = 0; spielAufzeichnung = 0; editor = 0; op = 0; status = NLALogin; } // Destruktor NachLogin::~NachLogin() { if (fenster) setAnzeige(NLALogin); if (editor) editor->release(); } // nicht constant void NachLogin::login() // Initialisiert die Oberfläche { lockZeichnung(); if (fenster) logout(); fenster = uiFactory.createFenster(uiFactory.initParam); fenster->setStyle(Fenster::Style::Erlaubt | Fenster::Style::Sichtbar); fenster->setSize(uiFactory.initParam.bildschirm->getBackBufferSize()); leistenFenster = uiFactory.createFenster(uiFactory.initParam); leistenFenster->setStyle(Fenster::Style::Erlaubt | Fenster::Style::Sichtbar | Fenster::Style::METransparenz); leistenFenster->setSize( uiFactory.initParam.bildschirm->getBackBufferSize()); titel = new TitelLeiste(leistenFenster); spielenFenster = new Spiele(fenster, titel->getSpielenX()); shopFenster = new Shop(fenster, titel->getSpielenX() + 101); accountAnsehenFenster = new AccountAnsehen(fenster, titel->getSpielenX() + 202); mgFenster = new MiniGames(fenster, titel->getSpielenX() + 303); newsFenster = new Neuigkeiten(fenster, titel->getSpielenX() + 404); editorFenster = new Editor(fenster, titel->getSpielenX()); nachrichtenListe = new NachrichtenListe(leistenFenster); freunde = new FreundesListe(leistenFenster); chatLeiste = new ChatLeiste(leistenFenster); op = new Einstellungen(leistenFenster); imSpiel = new ImSpiel(); fenster->addMember(dynamic_cast(leistenFenster->getThis())); uiFactory.initParam.bildschirm->addMember( dynamic_cast(getThis())); MausEreignis me; me.id = ME_RLinks; uiFactory.initParam.bildschirm->lock(); titel->druckSpielen(me); uiFactory.initParam.bildschirm->unlock(); status = NLANormal; unlockZeichnung(); } void NachLogin::logout() // Setzt die Oberfläche zurück { lockZeichnung(); status = NLALogin; uiFactory.initParam.bildschirm->removeMember(this); if (spielenFenster) spielenFenster = (Spiele*)spielenFenster->release(); if (shopFenster) shopFenster = (Shop*)shopFenster->release(); if (accountAnsehenFenster) accountAnsehenFenster = (AccountAnsehen*)accountAnsehenFenster->release(); if (mgFenster) mgFenster = (MiniGames*)mgFenster->release(); if (newsFenster) newsFenster = (Neuigkeiten*)newsFenster->release(); if (editorFenster) editorFenster = (Editor*)editorFenster->release(); if (titel) { titel->warteAufThread(10000); titel->ende(); titel = (TitelLeiste*)titel->release(); } if (freunde) { freunde->warteAufThread(10000); freunde->ende(); freunde = (FreundesListe*)freunde->release(); } if (chatLeiste) chatLeiste = (ChatLeiste*)chatLeiste->release(); if (nachrichtenListe) nachrichtenListe = (NachrichtenListe*)nachrichtenListe->release(); if (leistenFenster) leistenFenster = (Fenster*)leistenFenster->release(); if (fenster) fenster = (Fenster*)fenster->release(); if (imSpiel) imSpiel = (ImSpiel*)imSpiel->release(); if (op) op->release(); unlockZeichnung(); } void NachLogin::setSpielAufzeichnung( AufzeichnungV* video) // Setzt die Spiel Aufzeichnung { spielAufzeichnung = video; } void NachLogin::setEditor(EditorV* editor) // Setzt die Spiel Aufzeichnung { if (this->editor) this->editor->release(); this->editor = editor; } void NachLogin::setAnzeige(NachLoginAnzeige s) // Setzt den Status des Programms { lockZeichnung(); if (s == NLAImSpiel) { imSpiel->setSichtbar(1); MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; leistenFenster->doPublicMausEreignis(me); leistenFenster->removeStyle(Fenster::Style::Sichtbar); fenster->removeMember(leistenFenster); uiFactory.initParam.bildschirm->addMember( dynamic_cast(leistenFenster->getThis())); titel->setImSpiel(1); } else if (status == NLAImSpiel) { imSpiel->setSichtbar(0); fenster->addMember(dynamic_cast(leistenFenster->getThis())); uiFactory.initParam.bildschirm->removeMember(leistenFenster); leistenFenster->addStyle(Fenster::Style::Sichtbar); titel->setImSpiel(0); } if (s == NLASpielVideo) { MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; leistenFenster->doPublicMausEreignis(me); leistenFenster->removeStyle(Fenster::Style::Sichtbar); fenster->removeMember(leistenFenster); uiFactory.initParam.bildschirm->addMember( dynamic_cast(leistenFenster->getThis())); titel->setImVideo(1); } else if (status == NLASpielVideo) { fenster->addMember(dynamic_cast(leistenFenster->getThis())); uiFactory.initParam.bildschirm->removeMember(leistenFenster); leistenFenster->addStyle(Fenster::Style::Sichtbar); spielAufzeichnung = (AufzeichnungV*)spielAufzeichnung->release(); titel->setImVideo(0); } if (s == NLAEditor) { MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; leistenFenster->doPublicMausEreignis(me); leistenFenster->removeStyle(Fenster::Style::Sichtbar); fenster->removeMember(leistenFenster); uiFactory.initParam.bildschirm->addMember( dynamic_cast(leistenFenster->getThis())); titel->setImSpiel(1); } else if (status == NLAEditor) { fenster->addMember(dynamic_cast(leistenFenster->getThis())); uiFactory.initParam.bildschirm->removeMember(leistenFenster); leistenFenster->addStyle(Fenster::Style::Sichtbar); editor = (EditorV*)editor->release(); titel->setImSpiel(0); } if (s == NLALogin) logout(); else { if (!fenster) login(); else status = s; } unlockZeichnung(); } void NachLogin::hideBars() { leistenFenster->removeStyle(Fenster::Style::Sichtbar); } void NachLogin::showBars() { leistenFenster->addStyle(Fenster::Style::Sichtbar); } void NachLogin::doPublicMausEreignis(MausEreignis& me) { if (status == NLASpielVideo) { lockZeichnung(); if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->doPublicMausEreignis(me); else { spielAufzeichnung->doPublicMausEreignis(me); if (spielAufzeichnung->hatVerlassen(1)) { MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; spielAufzeichnung->doPublicMausEreignis(me); aktion = 8; // Aufzeichnung verlassen } } unlockZeichnung(); return; } if (status == NLAEditor) { lockZeichnung(); if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->doPublicMausEreignis(me); else { editor->doPublicMausEreignis(me); if (editor->hatVerlassen(1)) { MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; editor->doPublicMausEreignis(me); aktion = 8; // Editor verlassen } } unlockZeichnung(); return; } if (status == NLAImSpiel) { lockZeichnung(); if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->doPublicMausEreignis(me); else imSpiel->doPublicMausEreignis(me); unlockZeichnung(); return; } if (status != NLANormal) return; lockZeichnung(); if (fenster) fenster->doPublicMausEreignis(me); unlockZeichnung(); } void NachLogin::doTastaturEreignis(TastaturEreignis& te) { if (status == NLASpielVideo) { lockZeichnung(); if (te.virtualKey == T_F2 && te.id == TE_Release) { leistenFenster->setStyle(Fenster::Style::Sichtbar, !leistenFenster->hatStyle(Fenster::Style::Sichtbar)); MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; leistenFenster->doPublicMausEreignis(me); } else { if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->doTastaturEreignis(te); else spielAufzeichnung->doTastaturEreignis(te); } unlockZeichnung(); return; } if (status == NLAEditor) { lockZeichnung(); if (te.virtualKey == T_F2 && te.id == TE_Release) { leistenFenster->setStyle(Fenster::Style::Sichtbar, !leistenFenster->hatStyle(Fenster::Style::Sichtbar)); MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; leistenFenster->doPublicMausEreignis(me); } else { if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->doTastaturEreignis(te); else editor->doTastaturEreignis(te); } unlockZeichnung(); return; } if (status == NLAImSpiel) { lockZeichnung(); if (te.virtualKey == T_F2 && te.id == TE_Release) { leistenFenster->setStyle(Fenster::Style::Sichtbar, !leistenFenster->hatStyle(Fenster::Style::Sichtbar)); MausEreignis me = {ME_Bewegung, -1, -1, 0, 0}; leistenFenster->doPublicMausEreignis(me); } else { if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->doTastaturEreignis(te); else imSpiel->doTastaturEreignis(te); } unlockZeichnung(); return; } if (status != NLANormal) return; if (te.virtualKey == T_F2 && te.id == TE_Release) { if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) hideBars(); else showBars(); } lockZeichnung(); if (fenster) fenster->doTastaturEreignis(te); unlockZeichnung(); } bool NachLogin::tick(double tickVal) { if (status == NLASpielVideo) { lockZeichnung(); bool ret = 0; if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) ret |= leistenFenster->tick(tickVal); ret |= spielAufzeichnung->tick(tickVal); unlockZeichnung(); return ret; } if (status == NLAEditor) { lockZeichnung(); bool ret = 0; if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) ret |= leistenFenster->tick(tickVal); ret |= editor->tick(tickVal); unlockZeichnung(); return ret; } if (status == NLAImSpiel) { lockZeichnung(); bool ret = 0; if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) ret |= leistenFenster->tick(tickVal); ret |= imSpiel->tick(tickVal); unlockZeichnung(); return ret; } if (status != NLANormal) return 0; lockZeichnung(); bool ret = 0; if (titel) ret |= titel->tick(); if (fenster) ret |= fenster->tick(tickVal); unlockZeichnung(); return ret; } void NachLogin::render(Bild& zRObj) { if (status == NLASpielVideo) { lockZeichnung(); spielAufzeichnung->render(zRObj); if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->render(zRObj); unlockZeichnung(); return; } if (status == NLAEditor) { lockZeichnung(); editor->render(zRObj); if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->render(zRObj); unlockZeichnung(); return; } if (status == NLAImSpiel) { lockZeichnung(); imSpiel->render(zRObj); if (leistenFenster->hatStyle(Fenster::Style::Sichtbar)) leistenFenster->render(zRObj); unlockZeichnung(); return; } if (status != NLANormal) return; lockZeichnung(); if (fenster) fenster->render(zRObj); unlockZeichnung(); } // constant TitelLeiste* NachLogin::zTitelLeiste() const // gibt die Titelleiste zurück { return titel; } FreundesListe* NachLogin::zFreundesListe() const // gibt die FreundesListe zurück { return freunde; } ChatLeiste* NachLogin::zChatLeiste() const // gibt die ChatLeiste zurück { return chatLeiste; } NachrichtenListe* NachLogin::zNachrichtenListe() const // gibt die NachrichtenListe zurück { return nachrichtenListe; } Spiele* NachLogin::zSpielenFenster() const // gibt das Spiele Fenster zurück { return spielenFenster; } Shop* NachLogin::zShopFenster() const // gibt das Shop Fenster zurück { return shopFenster; } AccountAnsehen* NachLogin::zAccountAnsehenFenster() const // gibt das Account Ansehen Fenster zurück { return accountAnsehenFenster; } MiniGames* NachLogin::zMGFenster() const // gibt das MiniGames Fenster zurück { return mgFenster; } Neuigkeiten* NachLogin::zNewsFenster() const // gibt das News Fenster zurück { return newsFenster; } Editor* NachLogin::zEditorFenster() const // gibt das News Fenster zurück { return editorFenster; } ImSpiel* NachLogin::zImSpiel() const // Gibt das Im Spiel Zeichnung zurück { return imSpiel; } Einstellungen* NachLogin::zEinstellungen() const // Gibt das Einstellungen Zeichnung zurück { return op; }