KSGSMausEreignis.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #include "KSGSMausEreignis.h"
  2. #include "KSGSTyp.h"
  3. #include "../Error/Error.h"
  4. #include "KSGSInt.h"
  5. #include "KSGSBool.h"
  6. using namespace KSGScript;
  7. // Inhalt der KSGSMausEreignisKlasse Klasse aus KSGSMausEreignis.h
  8. // Konstruktor
  9. KSGSMausEreignisKlasse::KSGSMausEreignisKlasse( KSGScriptObj *zObj, MausEreignis std )
  10. : KSGSKlasseInstanz( KSGS_MAUSEREIGNIS, 0, 0, zObj )
  11. {
  12. val = std;
  13. }
  14. // Destruktor
  15. KSGSMausEreignisKlasse::~KSGSMausEreignisKlasse()
  16. {
  17. }
  18. // nicht constant
  19. KSGSVariable *KSGSMausEreignisKlasse::startFunktion( int id, bool access, RCArray< KSGSVariable > *parameter )
  20. {
  21. KSGSVariable *ret = 0;
  22. switch( id )
  23. {
  24. case 0: // void setId( int id )
  25. if( parameter->getEintragAnzahl() < 1 )
  26. error( 20, {}, obj );
  27. val.id = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  28. break;
  29. case 1: // void setMx( int mx )
  30. if( parameter->getEintragAnzahl() < 1 )
  31. error( 20, {}, obj );
  32. val.mx = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  33. break;
  34. case 2: // void setMy( int my )
  35. if( parameter->getEintragAnzahl() < 1 )
  36. error( 20, {}, obj );
  37. val.my = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  38. break;
  39. case 3: // void setRmx( int rmx )
  40. if( parameter->getEintragAnzahl() < 1 )
  41. error( 20, {}, obj );
  42. val.rmx = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  43. break;
  44. case 4: // void setRmy( int rmy )
  45. if( parameter->getEintragAnzahl() < 1 )
  46. error( 20, {}, obj );
  47. val.rmy = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  48. break;
  49. case 5: // void setVerarbeitet( bool verarbeitet )
  50. if( parameter->getEintragAnzahl() < 1 )
  51. error( 20, {}, obj );
  52. val.verarbeitet = parameter->z( 0 ) ? parameter->z( 0 )->getBool() : 0;
  53. break;
  54. default: // unbekannt
  55. error( 19, {}, obj );
  56. break;
  57. }
  58. parameter->release();
  59. return ret;
  60. }
  61. void KSGSMausEreignisKlasse::set( MausEreignis &me )
  62. {
  63. val = me;
  64. }
  65. KSGSVariable *KSGSMausEreignisKlasse::doOperator( int id, KSGSVariable *rechts )
  66. {
  67. if( !rechts )
  68. {
  69. error( 3, {}, obj );
  70. return 0;
  71. }
  72. KSGSVariable *ret = 0;
  73. switch( id )
  74. {
  75. case KSGS_O_SET:
  76. if( 1 )
  77. {
  78. val = rechts->getMausEreignis();
  79. ret = getThis();
  80. }
  81. break;
  82. }
  83. if( !ret )
  84. error( 21, {}, obj );
  85. if( rechts )
  86. rechts->release();
  87. return ret;
  88. }
  89. // constant
  90. KSGSVariable *KSGSMausEreignisKlasse::getVariable( int id, bool zugriff ) const
  91. {
  92. KSGSVariable *ret = 0;
  93. switch( id )
  94. {
  95. case 0: // int id
  96. ret = new KSGSIntKlasse( obj, val.id );
  97. break;
  98. case 1: // int mx
  99. ret = new KSGSIntKlasse( obj, val.mx );
  100. break;
  101. case 2: // int my
  102. ret = new KSGSIntKlasse( obj, val.my );
  103. break;
  104. case 3: // int rmx
  105. ret = new KSGSIntKlasse( obj, val.rmx );
  106. break;
  107. case 4: // int rmy
  108. ret = new KSGSIntKlasse( obj, val.rmy );
  109. break;
  110. case 5: // bool verarbeitet
  111. ret = new KSGSBoolKlasse( obj, val.verarbeitet );
  112. break;
  113. }
  114. if( !ret )
  115. error( 17, {}, obj );
  116. return ret;
  117. }
  118. MausEreignis KSGSMausEreignisKlasse::getVal() const
  119. {
  120. return val;
  121. }
  122. // Reference Counting
  123. KSGSVariable *KSGSMausEreignisKlasse::release()
  124. {
  125. ref--;
  126. if( !ref )
  127. delete this;
  128. return 0;
  129. }