#include "Interface.h" #include "../../Initialisierung/Initialisierung.h" #include "RightTools\SpielerOptionen\SpielerOptionen.h" #include "RightTools\TeamOptionen\TeamOptionen.h" #include using namespace Editor; // Inhalt der Interface Klasse aus Interface.h // Konstruktor // zS: Ein Zeiger auf die zu verwendende Schrift Interface::Interface( Schrift *zS, Punkt maxSize ) { beenden = initKnopf( 10, 10, 100, 20, zS, Knopf::Style::Normal, "beenden" ); right = new RightTools( zS, maxSize ); verlassen = 0; schrift = zS->getThis(); daten = 0; ref = 1; } // Destruktor Interface::~Interface() { if( daten ) daten->release(); schrift->release(); beenden->release(); right->release(); } void Interface::setDaten( KarteDaten *daten ) { if( this->daten ) this->daten->release(); this->daten = daten; right->addTool( new SpielerTool( schrift, daten->getThis() ), "Spieler" ); right->addTool( new TeamTool( schrift, daten->getThis() ), "Teams" ); } // Verarbeitet eine Mausnachricht // me: Die Nachricht die verarbeitet werden soll void Interface::doMausEreignis( MausEreignis &me ) { bool vera = me.verarbeitet; beenden->doMausEreignis( me ); if( me.verarbeitet && !vera && me.id == ME_RLinks ) { verlassen = 1; } right->doMausEreignis( me ); } // Verarbeitet eine Tastaturnachricht // te: Die Nachricht die verarbeitet werden soll void Interface::doTastaturEreignis( TastaturEreignis &te ) { right->doTastaturEreignis( te ); } bool Interface::tick( double time ) { rend |= beenden->tick( time ); rend |= right->tick( time ); return __super::tick( time ); } // Zeichnet das Interface nach uRObj // zRObj: Das Bild in das gezeichnet werden soll void Interface::render( Bild &zRObj ) { beenden->render( zRObj ); right->render( zRObj ); } // Setzt das Interface in den Initialisierungszustand zurück void Interface::reset() { verlassen = 0; } // Gibt zurück, ob der Benutzer den Editor verlassen möchte bool Interface::hatVerlassen() const { return verlassen; } // erhöht den Reference Counter // return: this Interface *Interface::getThis() { ref++; return this; } // verringert den Reference Counter und löscht das Objekt wenn es nicht mehr gebraucht wird. // return: 0 Interface *Interface::release() { if( !--ref ) delete this; return 0; }