#include "NachLogin.h" #include #include #include #include #include "../Global/Variablen.h" // Inhalt der NachLogin Klasse aus NachLogin.h // Konstruktor NachLogin::NachLogin( Schrift *zSchrift, Bildschirm *zBildschirm ) : Zeichnung() { if( zSchrift ) schrift = zSchrift->getThis(); if( zBildschirm ) bildschirm = zBildschirm->getThis(); 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; ref = 1; } // Destruktor NachLogin::~NachLogin() { if( fenster ) setAnzeige( NLALogin ); if( schrift ) schrift = schrift->release(); if( bildschirm ) bildschirm = bildschirm->release(); } // nicht constant void NachLogin::login() // Initialisiert die Oberfläche { lockZeichnung(); if( fenster ) logout(); fenster = new Fenster(); fenster->setStyle( Fenster::Style::Erlaubt | Fenster::Style::Sichtbar ); fenster->setGröße( bildschirm->getBackBufferGröße() ); leistenFenster = new Fenster(); leistenFenster->setStyle( Fenster::Style::Erlaubt | Fenster::Style::Sichtbar | Fenster::Style::METransparenz ); leistenFenster->setGröße( bildschirm->getBackBufferGröße() ); titel = new TitelLeiste( leistenFenster, schrift ); spielenFenster = new Spiele( schrift, fenster, titel->getSpielenX() ); shopFenster = new Shop( schrift, fenster, titel->getSpielenX() + 101 ); accountAnsehenFenster = new AccountAnsehen( schrift, fenster, titel->getSpielenX() + 202 ); mgFenster = new MiniGames( schrift, fenster, titel->getSpielenX() + 303 ); newsFenster = new Neuigkeiten( schrift, fenster, titel->getSpielenX() + 404 ); editorFenster = new Editor( schrift, fenster, titel->getSpielenX() ); nachrichtenListe = new NachrichtenListe( schrift, leistenFenster ); freunde = new FreundesListe( schrift, leistenFenster ); chatLeiste = new ChatLeiste( schrift, leistenFenster ); op = new Einstellungen( schrift, leistenFenster ); imSpiel = new ImSpiel( schrift ); fenster->addMember( leistenFenster ); bildschirm->addMember( this ); MausEreignis me; me.id = ME_RLinks; bildschirm->lock(); titel->druckSpielen( me ); bildschirm->unlock(); status = NLANormal; unlockZeichnung(); } void NachLogin::logout() // Setzt die Oberfläche zurück { lockZeichnung(); status = NLALogin; if( bildschirm ) bildschirm->removeMember( this ); if( spielenFenster ) spielenFenster = spielenFenster->release(); if( shopFenster ) shopFenster = shopFenster->release(); if( accountAnsehenFenster ) accountAnsehenFenster = accountAnsehenFenster->release(); if( mgFenster ) mgFenster = mgFenster->release(); if( newsFenster ) newsFenster = newsFenster->release(); if( editorFenster ) editorFenster = editorFenster->release(); if( titel ) titel = titel->release(); if( freunde ) freunde = freunde->release(); if( chatLeiste ) chatLeiste = chatLeiste->release(); if( nachrichtenListe ) nachrichtenListe = nachrichtenListe->release(); if( leistenFenster ) leistenFenster = leistenFenster->release(); if( fenster ) fenster = fenster->release(); if( 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 { 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, -1, -1, 0 }; leistenFenster->doMausEreignis( me ); leistenFenster->löscheStyle( Fenster::Style::Sichtbar ); fenster->removeMember( leistenFenster ); bildschirm->addMember( leistenFenster ); titel->setImSpiel( 1 ); } else if( status == NLAImSpiel ) { imSpiel->setSichtbar( 0 ); fenster->addMember( leistenFenster ); bildschirm->removeMember( leistenFenster ); leistenFenster->addStyle( Fenster::Style::Sichtbar ); titel->setImSpiel( 0 ); } if( s == NLASpielVideo ) { MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 }; leistenFenster->doMausEreignis( me ); leistenFenster->löscheStyle( Fenster::Style::Sichtbar ); fenster->removeMember( leistenFenster ); bildschirm->addMember( leistenFenster ); titel->setImVideo( 1 ); } else if( status == NLASpielVideo ) { fenster->addMember( leistenFenster ); bildschirm->removeMember( leistenFenster ); leistenFenster->addStyle( Fenster::Style::Sichtbar ); spielAufzeichnung = spielAufzeichnung->release(); titel->setImVideo( 0 ); } if( s == NLAEditor ) { MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 }; leistenFenster->doMausEreignis( me ); leistenFenster->löscheStyle( Fenster::Style::Sichtbar ); fenster->removeMember( leistenFenster ); bildschirm->addMember( leistenFenster ); titel->setImSpiel( 1 ); } else if( status == NLAEditor ) { fenster->addMember( leistenFenster ); bildschirm->removeMember( leistenFenster ); leistenFenster->addStyle( Fenster::Style::Sichtbar ); editor = editor->release(); titel->setImSpiel( 0 ); } if( s == NLALogin ) logout(); else { if( !fenster ) login(); else status = s; } unlockZeichnung(); } void NachLogin::doMausEreignis( MausEreignis &me ) { if( status == NLASpielVideo ) { lockZeichnung(); if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) ) leistenFenster->doMausEreignis( me ); else { spielAufzeichnung->doMausEreignis( me ); if( spielAufzeichnung->hatVerlassen( 1 ) ) { MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 }; spielAufzeichnung->doMausEreignis( me ); aktion = 8; // Aufzeichnung verlassen } } unlockZeichnung(); return; } if( status == NLAEditor ) { lockZeichnung(); if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) ) leistenFenster->doMausEreignis( me ); else { editor->doMausEreignis( me ); if( editor->hatVerlassen( 1 ) ) { MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 }; editor->doMausEreignis( me ); aktion = 8; // Editor verlassen } } unlockZeichnung(); return; } if( status == NLAImSpiel ) { lockZeichnung(); if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) ) leistenFenster->doMausEreignis( me ); else imSpiel->doMausEreignis( me ); unlockZeichnung(); return; } if( status != NLANormal ) return; lockZeichnung(); if( fenster ) fenster->doMausEreignis( 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, -1, -1, 0 }; leistenFenster->doMausEreignis( 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, -1, -1, 0 }; leistenFenster->doMausEreignis( 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, -1, -1, 0 }; leistenFenster->doMausEreignis( me ); } else { if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) ) leistenFenster->doTastaturEreignis( te ); else imSpiel->doTastaturEreignis( te ); } unlockZeichnung(); return; } if( status != NLANormal ) return; 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 == NLASpielVideo ) { 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; } // Reference Counting NachLogin *NachLogin::getThis() { ref++; return this; } NachLogin *NachLogin::release() { ref--; if( !ref ) delete this; return 0; }