#include "RightTools.h" #include "../../../Initialisierung/Initialisierung.h" RightTool::RightTool() : Zeichnung() {} RightTool::~RightTool() {} void RightTool::renderDialogs( Bild& rObj ) {} RightTools::RightTools( UIInit& uiFactory, Punkt maxSize ) : ZeichnungHintergrund() { this->maxSize = maxSize; toolAuswahl = initAuswahlBox( 5, 5, 290, 20, uiFactory, AuswahlBox::Style::Normal | AuswahlBox::Style::Hintergrund, {} ); toolAuswahl->setEventAktion( [this]( void*, AuswahlBox*, int, int neu ) { this->selectTool( neu ); } ); tools = new RCArray< RightTool >(); setSize( 300, maxSize.y ); setPosition( maxSize.x - 300, 0 ); setStyle( ZeichnungHintergrund::Style::Sichtbar | ZeichnungHintergrund::Style::Rahmen | ZeichnungHintergrund::Style::Hintergrund ); setHintergrundFarbe( 0xFF000000 ); setRahmenBreite( 1 ); setRahmenFarbe( 0xFFFFFFFF ); } RightTools::~RightTools() { tools->release(); toolAuswahl->release(); } void RightTools::addTool( RightTool* tool, char* name ) { if( !toolAuswahl->getEintragAnzahl() ) tool->addStyle( Zeichnung::Style::Sichtbar ); toolAuswahl->addEintrag( name ); tools->add( tool ); tool->setPosition( 5, 30 ); tool->setSize( 290, maxSize.y - 35 ); } void RightTools::doPublicMausEreignis( MausEreignis& me ) { me.mx -= pos.x, me.my -= pos.y; toolAuswahl->doPublicMausEreignis( me ); int anz = tools->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) { tools->z( i )->doPublicMausEreignis( me ); } me.mx += pos.x, me.my += pos.y; } void RightTools::doTastaturEreignis( TastaturEreignis& te ) { toolAuswahl->doTastaturEreignis( te ); int anz = tools->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) { tools->z( i )->doTastaturEreignis( te ); } } bool RightTools::tick( double tickVal ) { bool ret = __super::tick( tickVal ); ret |= toolAuswahl->tick( tickVal ); int anz = tools->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) { ret |= tools->z( i )->tick( tickVal ); } return ret; } void RightTools::render( Bild& rObj ) { __super::render( rObj ); if( rObj.setDrawOptions( pos, gr ) ) { int anz = tools->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) { tools->z( i )->render( rObj ); } toolAuswahl->render( rObj ); rObj.releaseDrawOptions(); } int anz = tools->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) { tools->z( i )->renderDialogs( rObj ); } } void RightTools::selectTool( int index ) { int i = 0; for( auto e : *tools ) e->setStyle( Zeichnung::Style::Sichtbar, i++ == index ); }