#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.taste == 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.taste == 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.taste == 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.taste == 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; }