Ende.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "Ende.h"
  2. #include <TextFeld.h>
  3. #include <Bild.h>
  4. #include <MausEreignis.h>
  5. #include <Rahmen.h>
  6. #include <Schrift.h>
  7. // Inhalt der Ende Klasse aus Ende.h
  8. // Konstruktor
  9. Ende::Ende( Schrift *zSchrift )
  10. {
  11. rahmen = new LRahmen();
  12. rahmen->setSize( 200, 100 );
  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( 200, 50 );
  21. warten = new TextFeld();
  22. warten->setStyle( ( TextFeld::Style::Text | TextFeld::Style::Center ) & ~TextFeld::Style::Sichtbar );
  23. warten->setSchriftZ( zSchrift->getThis() );
  24. warten->setText( "Bitte warten..." );
  25. warten->setSchriftFarbe( 0xFFFFFFFF );
  26. warten->setSize( 200, 50 );
  27. ok = new Knopf();
  28. ok->setStyle( Knopf::Style::Normal );
  29. ok->setSize( 100, 20 );
  30. ok->setText( "Weiter" );
  31. ok->setSchriftZ( zSchrift->getThis() );
  32. weiter = 0;
  33. ref = 1;
  34. }
  35. // Destruktor
  36. Ende::~Ende()
  37. {
  38. rahmen->release();
  39. text->release();
  40. warten->release();
  41. ok->release();
  42. }
  43. // nicht constant
  44. void Ende::setGewonnen( char gewonnen )
  45. {
  46. if( gewonnen == 1 )
  47. {
  48. text->setText( "Du hast gewonnen." );
  49. text->setSchriftFarbe( 0xFF00FF00 );
  50. }
  51. else if( !gewonnen )
  52. {
  53. text->setText( "Du hast verloren." );
  54. text->setSchriftFarbe( 0xFFFF0000 );
  55. }
  56. else
  57. {
  58. text->setText( "Unentschieden." );
  59. text->setSchriftFarbe( 0xFFFFFFFF );
  60. }
  61. }
  62. void Ende::doMausEreignis( MausEreignis &me )
  63. {
  64. bool vera = me.verarbeitet;
  65. ok->doMausEreignis( me );
  66. if( !vera && me.verarbeitet && me.id == ME_RLinks )
  67. {
  68. ok->removeStyle( Knopf::Style::Sichtbar );
  69. warten->addStyle( TextFeld::Style::Sichtbar );
  70. weiter = 1;
  71. }
  72. me.verarbeitet = 1;
  73. }
  74. void Ende::render( Bild &zRObj )
  75. {
  76. rahmen->setPosition( zRObj.getBreite() / 2 - rahmen->getBreite() / 2, zRObj.getHeight() / 2 - rahmen->getHeight() / 2 );
  77. zRObj.alphaRegion( rahmen->getX(), rahmen->getY(), rahmen->getBreite(), rahmen->getHeight(), 0xA0000000 );
  78. rahmen->render( zRObj );
  79. text->setPosition( rahmen->getX(), rahmen->getY() );
  80. text->render( zRObj );
  81. warten->setPosition( rahmen->getX(), rahmen->getY() + 50 );
  82. warten->render( zRObj );
  83. ok->setPosition( rahmen->getX() + rahmen->getBreite() / 2 - ok->getBreite() / 2, rahmen->getY() + 65 );
  84. ok->render( zRObj );
  85. }
  86. // constant
  87. bool Ende::getWeiter() const
  88. {
  89. return weiter;
  90. }
  91. // Reference Counting
  92. Ende *Ende::getThis()
  93. {
  94. ref++;
  95. return this;
  96. }
  97. Ende *Ende::release()
  98. {
  99. ref--;
  100. if( !ref )
  101. delete this;
  102. return 0;
  103. }