RundenEnde.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "RundenEnde.h"
  2. #include <Bild.h>
  3. #include <MausEreignis.h>
  4. #include <Rahmen.h>
  5. #include <Schrift.h>
  6. #include <Text.h>
  7. // Inhalt der RundenEnde Klasse aus RundenEnde.h
  8. // Konstruktor
  9. RundenEnde::RundenEnde( Schrift *zSchrift )
  10. {
  11. rahmen = new LRahmen();
  12. rahmen->setSize( 220, 70 );
  13. rahmen->setRamenBreite( 2 );
  14. rahmen->setFarbe( 0xFFFFFFFF );
  15. text = new TextFeld();
  16. text->setStyle( TextFeld::Style::Text | TextFeld::Style::Center );
  17. text->setSchriftZ( zSchrift->getThis() );
  18. text->setText( "" );
  19. text->setSchriftFarbe( 0xFFFFFFFF );
  20. text->setSize( 220, 50 );
  21. warten = new TextFeld();
  22. warten->setStyle( TextFeld::Style::Text | TextFeld::Style::Center );
  23. warten->setSchriftZ( zSchrift->getThis() );
  24. warten->setText( "Nächste Runde startet in: 5" );
  25. warten->setSchriftFarbe( 0xFFFFFFFF );
  26. warten->setSize( 220, 45 );
  27. sichtbar = 0;
  28. ref = 1;
  29. }
  30. // Destruktor
  31. RundenEnde::~RundenEnde()
  32. {
  33. rahmen->release();
  34. text->release();
  35. warten->release();
  36. }
  37. // nicht constant
  38. void RundenEnde::setSichtbar( bool b )
  39. {
  40. sichtbar = b;
  41. }
  42. void RundenEnde::setGewonnen( bool gewonnen )
  43. {
  44. if( gewonnen )
  45. {
  46. text->setText( "Du hast die Runde gewonnen." );
  47. text->setSchriftFarbe( 0xFF00FF00 );
  48. }
  49. else
  50. {
  51. text->setText( "Du hast die Runde verloren." );
  52. text->setSchriftFarbe( 0xFFFF0000 );
  53. }
  54. }
  55. void RundenEnde::setZeit( int sekunden )
  56. {
  57. warten->setText( "Nächste Runde startet in: " );
  58. warten->zText()->append( sekunden );
  59. }
  60. void RundenEnde::render( Bild &zRObj )
  61. {
  62. if( sichtbar )
  63. {
  64. rahmen->setPosition( zRObj.getBreite() / 2 - rahmen->getBreite() / 2, zRObj.getHeight() / 2 - rahmen->getHeight() / 2 );
  65. zRObj.alphaRegion( rahmen->getX(), rahmen->getY(), rahmen->getBreite(), rahmen->getHeight(), 0xA0000000 );
  66. rahmen->render( zRObj );
  67. text->setPosition( rahmen->getX(), rahmen->getY() );
  68. text->render( zRObj );
  69. warten->setPosition( rahmen->getX(), rahmen->getY() + 25 );
  70. warten->render( zRObj );
  71. }
  72. }
  73. // constant
  74. bool RundenEnde::istSichtbar() const
  75. {
  76. return sichtbar;
  77. }
  78. // Reference Counting
  79. RundenEnde *RundenEnde::getThis()
  80. {
  81. ref++;
  82. return this;
  83. }
  84. RundenEnde *RundenEnde::release()
  85. {
  86. ref--;
  87. if( !ref )
  88. delete this;
  89. return 0;
  90. }