Variablen.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. #include "Variablen.h"
  2. #include "Gegenstand.h"
  3. GeschossTyp getGeschossTypFromString( Text str )
  4. {
  5. if( str.istGleich( "KUGEL" ) )
  6. return GESCHOSS_KUGEL;
  7. if( str.istGleich( "DRACHENAUGE" ) )
  8. return GESCHOSS_DRACHENAUGE;
  9. if( str.istGleich( "FEUERBALL" ) )
  10. return GESCHOSS_FEUERBALL;
  11. if( str.istGleich( "MINE" ) )
  12. return GESCHOSS_MINE;
  13. return GESCHOSS_PFEIL;
  14. }
  15. Richtung invert( Richtung r )
  16. {
  17. if( r == OBEN )
  18. return UNTEN;
  19. if( r == UNTEN )
  20. return OBEN;
  21. if( r == LINKS )
  22. return RECHTS;
  23. if( r == RECHTS )
  24. return LINKS;
  25. return r;
  26. }
  27. Richtung getRichtungFromString( Text str )
  28. {
  29. if( str.istGleich( "OBEN" ) )
  30. return OBEN;
  31. if( str.istGleich( "LINKS" ) )
  32. return LINKS;
  33. if( str.istGleich( "UNTEN" ) )
  34. return UNTEN;
  35. if( str.istGleich( "RECHTS" ) )
  36. return RECHTS;
  37. return MITTE;
  38. }
  39. bool operator==( VariableTyp a, VariableTyp b )
  40. {
  41. if( a == (int)ALLE || b == (int)ALLE )
  42. return 1;
  43. if( a == (int)GAME_OBJEKT || b == (int)GAME_OBJEKT )
  44. {
  45. return ( a == (int)BARIERE || a == (int)BASE || a == (int)GEGENSTAND || a == (int)GESCHOSS ||
  46. a == (int)SCHALTER || a == (int)SCHIENE || a == (int)SPIELER || a == (int)TIMER ||
  47. a == (int)TUNNEL || a == (int)UMLENKUNG || a == (int)GAME_OBJEKT || a == (int)ALLE ) &&
  48. ( b == (int)BARIERE || b == (int)BASE || b == (int)GEGENSTAND || b == (int)GESCHOSS ||
  49. b == (int)SCHALTER || b == (int)SCHIENE || b == (int)SPIELER || b == (int)TIMER || b == (int)TUNNEL ||
  50. b == (int)UMLENKUNG || b == (int)GAME_OBJEKT || b == (int)ALLE );
  51. }
  52. return (int)a == (int)b;
  53. }
  54. bool operator!=( VariableTyp a, VariableTyp b )
  55. {
  56. return !( a == b );
  57. }
  58. Variable::Variable( VariableTyp typ )
  59. : ReferenceCounter()
  60. {
  61. this->typ = typ;
  62. }
  63. Variable::~Variable()
  64. {}
  65. VariableTyp Variable::getVariableTyp() const
  66. {
  67. return typ;
  68. }
  69. bool isTrue( Variable *v )
  70. {
  71. if( !v )
  72. return 0;
  73. switch( v->getVariableTyp() )
  74. {
  75. case NICHTS:
  76. return 0;
  77. case INTEGER:
  78. return ( (Integer *)v )->getValue() != 0;
  79. case BOOLEAN:
  80. return ( (Boolean *)v )->getValue();
  81. case STRING:
  82. return ( (String *)v )->getValue().getLength();
  83. case FLOAT:
  84. return ( (Float *)v )->getValue() != 0;
  85. case TASTE:
  86. return ( (Integer *)v )->getValue() != 0;
  87. case GEGENSTAND_TYP:
  88. return ( (GegenstandTypVar *)v )->getValue() != KEIN_GEGENSTAND;
  89. default:
  90. return 1;
  91. }
  92. }
  93. Integer::Integer( int value, bool taste )
  94. : Variable( taste ? TASTE : INTEGER )
  95. {
  96. this->value = value;
  97. }
  98. void Integer::setValue( int value )
  99. {
  100. this->value = value;
  101. }
  102. int Integer::getValue() const
  103. {
  104. return value;
  105. }
  106. Boolean::Boolean( bool value )
  107. : Variable( BOOLEAN )
  108. {
  109. this->value = value;
  110. }
  111. void Boolean::setValue( bool value )
  112. {
  113. this->value = value;
  114. }
  115. bool Boolean::getValue() const
  116. {
  117. return value;
  118. }
  119. String::String( const char *value )
  120. : Variable( STRING )
  121. {
  122. this->value = value;
  123. }
  124. String::String( Richtung r )
  125. : Variable( RICHTUNG )
  126. {
  127. switch( r )
  128. {
  129. case OBEN:
  130. value = "OBEN";
  131. break;
  132. case UNTEN:
  133. value = "UNTEN";
  134. break;
  135. case LINKS:
  136. value = "LINKS";
  137. break;
  138. case RECHTS:
  139. value = "RECHTS";
  140. break;
  141. case MITTE:
  142. value = "MITTE";
  143. break;
  144. default:
  145. break;
  146. }
  147. }
  148. String::String( GeschossTyp typ )
  149. : Variable( GESCHOSS_TYP )
  150. {
  151. switch( typ )
  152. {
  153. case GESCHOSS_PFEIL:
  154. value = "PFEIL";
  155. break;
  156. case GESCHOSS_KUGEL:
  157. value = "KUGEL";
  158. break;
  159. case GESCHOSS_FEUERBALL:
  160. value = "FEUERBALL";
  161. break;
  162. case GESCHOSS_DRACHENAUGE:
  163. value = "DRACHENAUGE";
  164. break;
  165. case GESCHOSS_MINE:
  166. value = "MINE";
  167. break;
  168. }
  169. }
  170. void String::setValue( Text value )
  171. {
  172. this->value = value;
  173. }
  174. const Text &String::getValue() const
  175. {
  176. return value;
  177. }
  178. Float::Float( float value )
  179. : Variable( FLOAT )
  180. {
  181. this->value = value;
  182. }
  183. void Float::setValue( float value )
  184. {
  185. this->value = value;
  186. }
  187. float Float::getValue() const
  188. {
  189. return value;
  190. }