Umlenkung.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "Umlenkung.h"
  2. #include "Spiel.h"
  3. Umlenkung::Umlenkung( int id, int x, int y, int breite, int height, Richtung richtung, int maxAbklingzeit, bool drehend, bool aktiv )
  4. : GameObject( UMLENKUNG, x, y, breite, height )
  5. {
  6. this->id = id;
  7. this->richtung = richtung;
  8. this->maxAbklingzeit = maxAbklingzeit;
  9. this->drehend = drehend;
  10. this->aktiv = aktiv;
  11. benutzt = 0;
  12. abklingzeitVerbleibend = 0;
  13. }
  14. void Umlenkung::setMaxAbklingzeit( int sekunden )
  15. {
  16. this->maxAbklingzeit = sekunden;
  17. }
  18. void Umlenkung::setAktiv( bool aktiv )
  19. {
  20. this->aktiv = aktiv;
  21. }
  22. void Umlenkung::setDrehend( bool drehend )
  23. {
  24. this->drehend = drehend;
  25. }
  26. void Umlenkung::setRichtung( Richtung r )
  27. {
  28. this->richtung = r;
  29. }
  30. void Umlenkung::addBenutzt( Spiel *zSpiel )
  31. {
  32. benutzt++;
  33. if( drehend )
  34. {
  35. switch( richtung )
  36. {
  37. case OBEN:
  38. richtung = RECHTS;
  39. break;
  40. case RECHTS:
  41. richtung = UNTEN;
  42. break;
  43. case UNTEN:
  44. richtung = LINKS;
  45. break;
  46. case LINKS:
  47. richtung = OBEN;
  48. break;
  49. default:
  50. break;
  51. }
  52. }
  53. abklingzeitVerbleibend = (float)maxAbklingzeit;
  54. zSpiel->setUmlenkungZuletztBenutzt( dynamic_cast<Umlenkung *>( getThis() ) );
  55. }
  56. void Umlenkung::tick( double time )
  57. {
  58. if( abklingzeitVerbleibend > 0 )
  59. {
  60. abklingzeitVerbleibend -= (float)time;
  61. if( abklingzeitVerbleibend < 0 )
  62. abklingzeitVerbleibend = 0;
  63. }
  64. }
  65. bool Umlenkung::isAktive() const
  66. {
  67. return aktiv;
  68. }
  69. bool Umlenkung::hatAbklingzeit() const
  70. {
  71. return abklingzeitVerbleibend > 0;
  72. }
  73. bool Umlenkung::istDrehend() const
  74. {
  75. return drehend;
  76. }
  77. int Umlenkung::getMaxAbklingzeit() const
  78. {
  79. return maxAbklingzeit;
  80. }
  81. Richtung Umlenkung::getRichtung() const
  82. {
  83. return richtung;
  84. }
  85. int Umlenkung::getBenutzungen() const
  86. {
  87. return benutzt;
  88. }
  89. int Umlenkung::getId() const
  90. {
  91. return id;
  92. }