Ende.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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::doTastaturEreignis( TastaturEreignis &te )
  63. {
  64. if( te.taste == T_Enter && te.id == TE_Release )
  65. {
  66. ok->removeStyle( Knopf::Style::Sichtbar );
  67. warten->addStyle( TextFeld::Style::Sichtbar );
  68. weiter = 1;
  69. }
  70. }
  71. void Ende::doPublicMausEreignis( MausEreignis &me )
  72. {
  73. bool vera = me.verarbeitet;
  74. ok->doPublicMausEreignis( me );
  75. if( !vera && me.verarbeitet && me.id == ME_RLinks )
  76. {
  77. ok->removeStyle( Knopf::Style::Sichtbar );
  78. warten->addStyle( TextFeld::Style::Sichtbar );
  79. weiter = 1;
  80. }
  81. me.verarbeitet = 1;
  82. }
  83. void Ende::render( Bild &zRObj )
  84. {
  85. rahmen->setPosition( zRObj.getBreite() / 2 - rahmen->getBreite() / 2, zRObj.getHeight() / 2 - rahmen->getHeight() / 2 );
  86. zRObj.alphaRegion( rahmen->getX(), rahmen->getY(), rahmen->getBreite(), rahmen->getHeight(), 0xA0000000 );
  87. rahmen->render( zRObj );
  88. text->setPosition( rahmen->getX(), rahmen->getY() );
  89. text->render( zRObj );
  90. warten->setPosition( rahmen->getX(), rahmen->getY() + 50 );
  91. warten->render( zRObj );
  92. ok->setPosition( rahmen->getX() + rahmen->getBreite() / 2 - ok->getBreite() / 2, rahmen->getY() + 65 );
  93. ok->render( zRObj );
  94. }
  95. // constant
  96. bool Ende::getWeiter() const
  97. {
  98. return weiter;
  99. }
  100. // Reference Counting
  101. Ende *Ende::getThis()
  102. {
  103. ref++;
  104. return this;
  105. }
  106. Ende *Ende::release()
  107. {
  108. ref--;
  109. if( !ref )
  110. delete this;
  111. return 0;
  112. }