Interface.cpp 2.4 KB

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