Interface.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "Interface.h"
  2. #include "../../Initialisierung/Initialisierung.h"
  3. #include "RightTools\SpielerOptionen\SpielerOptionen.h"
  4. #include "RightTools\TeamOptionen\TeamOptionen.h"
  5. #include "RightTools/ObjektOptionen/ObjektOptionen.h"
  6. #include <MausEreignis.h>
  7. using namespace Editor;
  8. // Inhalt der Interface Klasse aus Interface.h
  9. // Konstruktor
  10. // zS: Ein Zeiger auf die zu verwendende Schrift
  11. Interface::Interface( Schrift *zS, Punkt maxSize )
  12. {
  13. beenden = initKnopf( 10, 10, 100, 20, zS, Knopf::Style::Normal, "beenden" );
  14. right = new RightTools( zS, maxSize );
  15. verlassen = 0;
  16. schrift = zS->getThis();
  17. daten = 0;
  18. ref = 1;
  19. }
  20. // Destruktor
  21. Interface::~Interface()
  22. {
  23. if( daten )
  24. daten->release();
  25. schrift->release();
  26. beenden->release();
  27. right->release();
  28. }
  29. void Interface::setDaten( KarteDaten * daten )
  30. {
  31. if( this->daten )
  32. this->daten->release();
  33. this->daten = daten;
  34. right->addTool( new SpielerTool( schrift, (KarteDaten *)daten->getThis() ), "Spieler" );
  35. right->addTool( new TeamTool( schrift, (KarteDaten *)daten->getThis() ), "Teams" );
  36. right->addTool( new ObjektTool( schrift, (KarteDaten *)daten->getThis() ), "Objekte" );
  37. }
  38. // Verarbeitet eine Mausnachricht
  39. // me: Die Nachricht die verarbeitet werden soll
  40. void Interface::doMausEreignis( MausEreignis & me )
  41. {
  42. bool vera = me.verarbeitet;
  43. beenden->doMausEreignis( me );
  44. if( me.verarbeitet && !vera && me.id == ME_RLinks )
  45. {
  46. verlassen = 1;
  47. }
  48. right->doMausEreignis( me );
  49. }
  50. // Verarbeitet eine Tastaturnachricht
  51. // te: Die Nachricht die verarbeitet werden soll
  52. void Interface::doTastaturEreignis( TastaturEreignis & te )
  53. {
  54. right->doTastaturEreignis( te );
  55. }
  56. bool Interface::tick( double time )
  57. {
  58. rend |= beenden->tick( time );
  59. rend |= right->tick( time );
  60. return __super::tick( time );
  61. }
  62. // Zeichnet das Interface nach uRObj
  63. // zRObj: Das Bild in das gezeichnet werden soll
  64. void Interface::render( Bild & zRObj )
  65. {
  66. beenden->render( zRObj );
  67. right->render( zRObj );
  68. }
  69. // Setzt das Interface in den Initialisierungszustand zurück
  70. void Interface::reset()
  71. {
  72. verlassen = 0;
  73. }
  74. // Gibt zurück, ob der Benutzer den Editor verlassen möchte
  75. bool Interface::hatVerlassen() const
  76. {
  77. return verlassen;
  78. }
  79. // erhöht den Reference Counter
  80. // return: this
  81. Interface *Interface::getThis()
  82. {
  83. ref++;
  84. return this;
  85. }
  86. // verringert den Reference Counter und löscht das Objekt wenn es nicht mehr gebraucht wird.
  87. // return: 0
  88. Interface *Interface::release()
  89. {
  90. if( !--ref )
  91. delete this;
  92. return 0;
  93. }