Aktionen.cpp 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440
  1. #include "Aktionen.h"
  2. #include "Trigger.h"
  3. #include "Spiel.h"
  4. Aktion::Aktion( AktionTyp typ, RCArray< Aktion > *subActions )
  5. : Variable( AKTION )
  6. {
  7. this->subActions = subActions;
  8. for( int i = 0; i < subActions->getEintragAnzahl(); i++ )
  9. erlaubteTypen.add( ALLE );
  10. this->typ = typ;
  11. }
  12. Aktion::~Aktion()
  13. {
  14. subActions->release();
  15. }
  16. Variable *Aktion::zEvaluatedParam( int number, LocalMemory *zMemory, ProgramCounter *zPC )
  17. {
  18. return zMemory->zVariable( zPC->getUniqueString() + "R" + number + "__" );
  19. }
  20. Variable *Aktion::getEvaluatedParam( int number, LocalMemory *zMemory, ProgramCounter *zPC )
  21. {
  22. return zMemory->getVariable( zPC->getUniqueString() + "R" + number + "__" );
  23. }
  24. bool Aktion::runNext( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  25. {
  26. if( waitCount > 0 )
  27. return 0;
  28. zPC->stepIn();
  29. // evaluate parameters
  30. for( int i = zPC->currentPosition(); i < subActions->getEintragAnzahl(); i++ )
  31. {
  32. if( !subActions->z( i )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount ) )
  33. {
  34. zPC->stepOut();
  35. return 0;
  36. }
  37. Variable *result = zMemory->zVariable( "__return__" );
  38. if( ( !result && erlaubteTypen.get( i ) != NICHTS ) || result->getVariableTyp() != erlaubteTypen.get( i ) )
  39. {
  40. zPC->stepOut();
  41. return 1;
  42. }
  43. if( result )
  44. zMemory->setVar( zPC->getUniqueString() + "R" + i + "__", result->getThis() );
  45. zPC->count();
  46. if( waitCount > 0 )
  47. {
  48. zPC->stepOut();
  49. return 0;
  50. }
  51. }
  52. if( zPC->currentPosition() == subActions->getEintragAnzahl() )
  53. {
  54. // evaluate result
  55. run( zSpiel, zEreignis, zMemory, zPC, waitCount );
  56. zPC->stepOut();
  57. return 1;
  58. }
  59. zPC->stepOut();
  60. return 0;
  61. }
  62. void Aktion::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  63. {}
  64. KonstantNichts::KonstantNichts()
  65. : Aktion( KONSTANT_NICHTS, new RCArray< Aktion >() )
  66. {}
  67. void KonstantNichts::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  68. {
  69. zMemory->setVar( "__return__", new Variable( NICHTS ) );
  70. }
  71. KonstantInteger::KonstantInteger( int val )
  72. : Aktion( KONSTANT_INTEGER, new RCArray< Aktion >() )
  73. {
  74. this->value = val;
  75. }
  76. void KonstantInteger::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  77. {
  78. zMemory->setVar( "__return__", new Integer( value ) );
  79. }
  80. KonstantBoolean::KonstantBoolean( bool val )
  81. : Aktion( KONSTANT_BOOLEAN, new RCArray< Aktion >() )
  82. {
  83. value = val;
  84. }
  85. void KonstantBoolean::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  86. {
  87. zMemory->setVar( "__return__", new Boolean( value ) );
  88. }
  89. KonstantString::KonstantString( Text val )
  90. : Aktion( KONSTANT_STRING, new RCArray< Aktion >() )
  91. {
  92. value = val;
  93. }
  94. void KonstantString::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  95. {
  96. zMemory->setVar( "__return__", new String( value ) );
  97. }
  98. KonstantFloat::KonstantFloat( float val )
  99. : Aktion( KONSTANT_FLOAT, new RCArray< Aktion >() )
  100. {
  101. value = val;
  102. }
  103. void KonstantFloat::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  104. {
  105. zMemory->setVar( "__return__", new Float( value ) );
  106. }
  107. KonstantVariable::KonstantVariable( Text name )
  108. : Aktion( KONSTANT_VARIABLE, new RCArray< Aktion >() )
  109. {
  110. this->name = name;
  111. }
  112. void KonstantVariable::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  113. {
  114. if( zMemory->zVariable( name ) )
  115. zMemory->setVar( "__return__", zMemory->getVariable( name ) );
  116. else if( zEreignis->zParameter( name ) )
  117. zMemory->setVar( "__return__", zEreignis->zParameter( name ) );
  118. else if( zSpiel->zVariable( name ) )
  119. zMemory->setVar( "__return__", zSpiel->getVariable( name ) );
  120. else
  121. zMemory->setVar( "__return__", new Variable( NICHTS ) );
  122. }
  123. Warten::Warten( RCArray< Aktion > *subActions )
  124. : Aktion( WARTEN, subActions )
  125. {
  126. this->erlaubteTypen.add( FLOAT );
  127. }
  128. Warten::~Warten()
  129. {}
  130. void Warten::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  131. {
  132. waitCount += ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue();
  133. }
  134. WennDannSonst::WennDannSonst( RCArray< Aktion > *subActions )
  135. : Aktion( WENN_DANN_SONST, subActions )
  136. {}
  137. WennDannSonst::~WennDannSonst()
  138. {}
  139. bool WennDannSonst::runNext( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  140. {
  141. zPC->stepIn();
  142. if( zPC->currentPosition() == 0 )
  143. {
  144. bool finished = subActions->z( 0 )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount );
  145. if( finished )
  146. {
  147. Variable *ret = zMemory->zVariable( "__return__" );
  148. zPC->count();
  149. if( !isTrue( ret ) )
  150. {
  151. zPC->count();
  152. if( !subActions->z( 2 ) )
  153. {
  154. zPC->stepOut();
  155. return 1;
  156. }
  157. }
  158. else
  159. {
  160. if( !subActions->z( 1 ) )
  161. {
  162. zPC->stepOut();
  163. return 1;
  164. }
  165. }
  166. }
  167. }
  168. if( zPC->currentPosition() == 1 && waitCount <= 0 )
  169. {
  170. bool finished = subActions->z( 1 )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount );
  171. if( finished )
  172. {
  173. zPC->stepOut();
  174. return 1;
  175. }
  176. }
  177. if( zPC->currentPosition() == 2 && waitCount <= 0 )
  178. {
  179. bool finished = subActions->z( 2 )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount );
  180. if( finished )
  181. {
  182. zPC->stepOut();
  183. return 1;
  184. }
  185. }
  186. zPC->stepOut();
  187. return 0;
  188. }
  189. SetVariable::SetVariable( Text name, RCArray< Aktion > *subActions )
  190. : Aktion( SET_VARIABLE, subActions )
  191. {
  192. this->name = name;
  193. }
  194. SetVariable::~SetVariable()
  195. {}
  196. void SetVariable::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  197. {
  198. if( zMemory->zVariable( name ) || zEreignis->zParameter( name ) || !zSpiel->zVariable( name ) )
  199. zMemory->setVar( name, getEvaluatedParam( 0, zMemory, zPC ) );
  200. else
  201. zSpiel->setVariable( name, getEvaluatedParam( 0, zMemory, zPC ) );
  202. }
  203. TriggerAktion::TriggerAktion( RCArray< Aktion > *subActions )
  204. : Aktion( TRIGGER_AKTION, subActions )
  205. {}
  206. TriggerAktion::~TriggerAktion()
  207. {}
  208. bool TriggerAktion::runNext( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  209. {
  210. zPC->stepIn();
  211. if( zPC->currentPosition() == 0 )
  212. {
  213. if( subActions->z( 0 )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount ) )
  214. {
  215. Variable *t = zMemory->zVariable( "__return__" );
  216. if( !t || t->getVariableTyp() != INTEGER )
  217. {
  218. zPC->stepOut();
  219. return 1;
  220. }
  221. zMemory->setVar( zPC->getUniqueString() + "R0__", t->getThis() );
  222. zPC->count();
  223. }
  224. }
  225. if( zPC->currentPosition() == 1 && waitCount <= 0 )
  226. {
  227. if( subActions->z( 1 )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount ) )
  228. {
  229. Variable *t = zMemory->zVariable( "__return__" );
  230. if( !t || t->getVariableTyp() != TRIGGER )
  231. {
  232. zPC->stepOut();
  233. return 1;
  234. }
  235. int id = ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue();
  236. if( id >= ( (Trigger *)t )->getAktionAnzahl() )
  237. {
  238. zPC->stepOut();
  239. return 1;
  240. }
  241. zMemory->setVar( zPC->getUniqueString() + "R0__", ( (Trigger *)t )->getAktion( id ) );
  242. zPC->count();
  243. }
  244. }
  245. if( zPC->currentPosition() == 2 && waitCount <= 0 )
  246. {
  247. if( ( (Aktion *)zEvaluatedParam( 0, zMemory, zPC ) )->runNext( zSpiel, zEreignis, zMemory, zPC, waitCount ) )
  248. {
  249. zPC->stepOut();
  250. return 1;
  251. }
  252. }
  253. zPC->stepOut();
  254. return 0;
  255. }
  256. SpielerNachricht::SpielerNachricht( RCArray< Aktion > *subActions )
  257. : Aktion( SPIELER_NACHRICHT, subActions )
  258. {
  259. erlaubteTypen.add( SPIELER );
  260. erlaubteTypen.add( STRING );
  261. }
  262. SpielerNachricht::~SpielerNachricht()
  263. {}
  264. void SpielerNachricht::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  265. {
  266. // this is handeld on client side directly (no need to send the message to the player)
  267. }
  268. DisplayText::DisplayText( RCArray< Aktion > *subActions )
  269. : Aktion( DISPLAY_TEXT, subActions )
  270. {
  271. erlaubteTypen.add( FLOAT );
  272. erlaubteTypen.add( FLOAT );
  273. erlaubteTypen.add( INTEGER );
  274. erlaubteTypen.add( FLOAT );
  275. erlaubteTypen.add( STRING );
  276. }
  277. DisplayText::~DisplayText()
  278. {}
  279. void DisplayText::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  280. {
  281. // do nothing because the server does not need to show text
  282. }
  283. SpielPause::SpielPause( RCArray< Aktion > *subActions )
  284. : Aktion( SPIEL_PAUSE, subActions )
  285. {
  286. erlaubteTypen.add( BOOLEAN );
  287. }
  288. SpielPause::~SpielPause()
  289. {}
  290. void SpielPause::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  291. {
  292. zSpiel->setPausiert( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  293. }
  294. SpielEnde::SpielEnde( RCArray< Aktion > *subActions )
  295. : Aktion( SPIEL_ENDE, subActions )
  296. {}
  297. SpielEnde::~SpielEnde()
  298. {}
  299. void SpielEnde::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  300. {
  301. Variable *t = zEvaluatedParam( 0, zMemory, zPC );
  302. if( t->getVariableTyp() != NICHTS && t->getVariableTyp() != TEAM )
  303. t = 0;
  304. zSpiel->setEnde( t->getVariableTyp() == NICHTS ? 0 : (Team *)t );
  305. }
  306. SpielerSetLevel::SpielerSetLevel( RCArray< Aktion > *subActions )
  307. : Aktion( SPIELER_SET_LEVEL, subActions )
  308. {
  309. erlaubteTypen.add( INTEGER );
  310. erlaubteTypen.add( SPIELER );
  311. }
  312. SpielerSetLevel::~SpielerSetLevel()
  313. {}
  314. void SpielerSetLevel::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  315. {
  316. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setLevel( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  317. }
  318. SpielerGiveItem::SpielerGiveItem( RCArray< Aktion > *subActions )
  319. : Aktion( SPIELER_GIVE_ITEM, subActions )
  320. {
  321. erlaubteTypen.add( GEGENSTAND_TYP );
  322. erlaubteTypen.add( INTEGER );
  323. erlaubteTypen.add( SPIELER );
  324. }
  325. SpielerGiveItem::~SpielerGiveItem()
  326. {}
  327. void SpielerGiveItem::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  328. {
  329. ( (Spieler *)zEvaluatedParam( 2, zMemory, zPC ) )->addItem( ( (GegenstandTypVar *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue(),
  330. ( (Integer *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue(), zSpiel );
  331. }
  332. SpielerRemoveItem::SpielerRemoveItem( RCArray< Aktion > *subActions )
  333. : Aktion( SPIELER_REMOVE_ITEM, subActions )
  334. {
  335. erlaubteTypen.add( GEGENSTAND_TYP );
  336. erlaubteTypen.add( INTEGER );
  337. erlaubteTypen.add( SPIELER );
  338. }
  339. SpielerRemoveItem::~SpielerRemoveItem()
  340. {}
  341. void SpielerRemoveItem::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  342. {
  343. ( (Spieler *)zEvaluatedParam( 2, zMemory, zPC ) )->removeItem( ( (GegenstandTypVar *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue(),
  344. ( (Integer *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue() );
  345. }
  346. SpielerSetLeben::SpielerSetLeben( RCArray< Aktion > *subActions )
  347. : Aktion( SPIELER_SET_LEBEN, subActions )
  348. {
  349. erlaubteTypen.add( FLOAT );
  350. erlaubteTypen.add( SPIELER );
  351. }
  352. SpielerSetLeben::~SpielerSetLeben()
  353. {}
  354. void SpielerSetLeben::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  355. {
  356. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setLeben( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  357. }
  358. SpielerSetMaxLeben::SpielerSetMaxLeben( RCArray< Aktion > *subActions )
  359. : Aktion( SPIELER_SET_LEBEN, subActions )
  360. {
  361. erlaubteTypen.add( INTEGER );
  362. erlaubteTypen.add( SPIELER );
  363. }
  364. SpielerSetMaxLeben::~SpielerSetMaxLeben()
  365. {}
  366. void SpielerSetMaxLeben::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  367. {
  368. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setMaxLeben( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  369. }
  370. SpielerSetErfahrung::SpielerSetErfahrung( RCArray< Aktion > *subActions )
  371. : Aktion( SPIELER_SET_ERFAHRUNG, subActions )
  372. {
  373. erlaubteTypen.add( FLOAT );
  374. erlaubteTypen.add( SPIELER );
  375. }
  376. SpielerSetErfahrung::~SpielerSetErfahrung()
  377. {}
  378. void SpielerSetErfahrung::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  379. {
  380. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setErfahrung( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  381. }
  382. SpielerSetMaxErfahrung::SpielerSetMaxErfahrung( RCArray< Aktion > *subActions )
  383. : Aktion( SPIELER_SET_MAX_ERFAHRUNG, subActions )
  384. {
  385. erlaubteTypen.add( INTEGER );
  386. erlaubteTypen.add( SPIELER );
  387. }
  388. SpielerSetMaxErfahrung::~SpielerSetMaxErfahrung()
  389. {}
  390. void SpielerSetMaxErfahrung::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  391. {
  392. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setMaxErfahrung( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  393. }
  394. SpielerSetTempo::SpielerSetTempo( RCArray< Aktion > *subActions )
  395. : Aktion( SPIELER_SET_TEMPO, subActions )
  396. {
  397. erlaubteTypen.add( FLOAT );
  398. erlaubteTypen.add( SPIELER );
  399. }
  400. SpielerSetTempo::~SpielerSetTempo()
  401. {}
  402. void SpielerSetTempo::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  403. {
  404. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setLaufTempo( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  405. }
  406. SpielerSetWaffenTempo::SpielerSetWaffenTempo( RCArray< Aktion > *subActions )
  407. : Aktion( SPIELER_SET_GESCHOSS_TEMPO, subActions )
  408. {
  409. erlaubteTypen.add( FLOAT );
  410. erlaubteTypen.add( SPIELER );
  411. }
  412. SpielerSetWaffenTempo::~SpielerSetWaffenTempo()
  413. {}
  414. void SpielerSetWaffenTempo::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  415. {
  416. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setGeschossTempo( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  417. }
  418. SpielerSetArmor::SpielerSetArmor( RCArray< Aktion > *subActions )
  419. : Aktion( SPIELER_SET_ARMOR, subActions )
  420. {
  421. erlaubteTypen.add( FLOAT );
  422. erlaubteTypen.add( SPIELER );
  423. }
  424. SpielerSetArmor::~SpielerSetArmor()
  425. {}
  426. void SpielerSetArmor::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  427. {
  428. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setArmor( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  429. }
  430. SpielerSetSchadenBonus::SpielerSetSchadenBonus( RCArray< Aktion > *subActions )
  431. : Aktion( SPIELER_SET_SCHADEN_BONUS, subActions )
  432. {
  433. erlaubteTypen.add( FLOAT );
  434. erlaubteTypen.add( SPIELER );
  435. }
  436. SpielerSetSchadenBonus::~SpielerSetSchadenBonus()
  437. {}
  438. void SpielerSetSchadenBonus::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  439. {
  440. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setSchadenBonus( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  441. }
  442. SpielerSetLebensraub::SpielerSetLebensraub( RCArray< Aktion > *subActions )
  443. : Aktion( SPIELER_SET_LEBENSRAUB, subActions )
  444. {
  445. erlaubteTypen.add( FLOAT );
  446. erlaubteTypen.add( SPIELER );
  447. }
  448. SpielerSetLebensraub::~SpielerSetLebensraub()
  449. {}
  450. void SpielerSetLebensraub::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  451. {
  452. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setLebensRaub( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  453. }
  454. SpielerSetLebensregeneration::SpielerSetLebensregeneration( RCArray< Aktion > *subActions )
  455. : Aktion( SPIELER_SET_LEBENSRAUB, subActions )
  456. {
  457. erlaubteTypen.add( FLOAT );
  458. erlaubteTypen.add( SPIELER );
  459. }
  460. SpielerSetLebensregeneration::~SpielerSetLebensregeneration()
  461. {}
  462. void SpielerSetLebensregeneration::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  463. {
  464. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setLebensRegeneration( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  465. }
  466. SpielerSetAbklingzeitverringerung::SpielerSetAbklingzeitverringerung( RCArray< Aktion > *subActions )
  467. : Aktion( SPIELER_SET_ABKLINGZEITVERRINGERUNG, subActions )
  468. {
  469. erlaubteTypen.add( FLOAT );
  470. erlaubteTypen.add( SPIELER );
  471. }
  472. SpielerSetAbklingzeitverringerung::~SpielerSetAbklingzeitverringerung()
  473. {}
  474. void SpielerSetAbklingzeitverringerung::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  475. {
  476. ( (Spieler *)zEvaluatedParam( 1, zMemory, zPC ) )->setAbklingZeitVerringerung( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  477. }
  478. DropSetTime::DropSetTime( RCArray< Aktion > *subActions )
  479. : Aktion( DROP_SET_TIME, subActions )
  480. {
  481. erlaubteTypen.add( FLOAT );
  482. erlaubteTypen.add( DROP );
  483. }
  484. DropSetTime::~DropSetTime()
  485. {}
  486. void DropSetTime::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  487. {
  488. ( (Drop *)zEvaluatedParam( 1, zMemory, zPC ) )->setTime( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  489. }
  490. DropSetMaxTime::DropSetMaxTime( RCArray< Aktion > *subActions )
  491. : Aktion( DROP_SET_MAX_TIME, subActions )
  492. {
  493. erlaubteTypen.add( INTEGER );
  494. erlaubteTypen.add( DROP );
  495. }
  496. DropSetMaxTime::~DropSetMaxTime()
  497. {}
  498. void DropSetMaxTime::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  499. {
  500. ( (Drop *)zEvaluatedParam( 1, zMemory, zPC ) )->setMaxTime( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  501. }
  502. DropSetArea::DropSetArea( RCArray< Aktion > *subActions )
  503. : Aktion( DROP_SET_AREA, subActions )
  504. {
  505. erlaubteTypen.add( INTEGER );
  506. erlaubteTypen.add( INTEGER );
  507. erlaubteTypen.add( INTEGER );
  508. erlaubteTypen.add( INTEGER );
  509. erlaubteTypen.add( DROP );
  510. }
  511. DropSetArea::~DropSetArea()
  512. {}
  513. void DropSetArea::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  514. {
  515. ( (Drop *)zEvaluatedParam( 4, zMemory, zPC ) )->setMinX( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  516. ( (Drop *)zEvaluatedParam( 4, zMemory, zPC ) )->setMaxX( ( (Integer *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue() );
  517. ( (Drop *)zEvaluatedParam( 4, zMemory, zPC ) )->setMinY( ( (Integer *)zEvaluatedParam( 2, zMemory, zPC ) )->getValue() );
  518. ( (Drop *)zEvaluatedParam( 4, zMemory, zPC ) )->setMaxY( ( (Integer *)zEvaluatedParam( 3, zMemory, zPC ) )->getValue() );
  519. }
  520. DropDoDrop::DropDoDrop( RCArray< Aktion > *subActions )
  521. : Aktion( DROP_DO_DROP, subActions )
  522. {
  523. erlaubteTypen.add( DROP );
  524. }
  525. DropDoDrop::~DropDoDrop()
  526. {}
  527. void DropDoDrop::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  528. {
  529. ( (Drop *)zEvaluatedParam( 0, zMemory, zPC ) )->doDrop( zSpiel );
  530. }
  531. BariereBewegung::BariereBewegung( RCArray< Aktion > *subActions )
  532. : Aktion( BARIERE_BEWEGUNG, subActions )
  533. {
  534. erlaubteTypen.add( BARIERE );
  535. }
  536. BariereBewegung::~BariereBewegung()
  537. {}
  538. void BariereBewegung::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  539. {
  540. ( (Bariere *)zEvaluatedParam( 0, zMemory, zPC ) )->startAutoVerschiebung( zSpiel );
  541. }
  542. BariereSetEingeschaltet::BariereSetEingeschaltet( RCArray< Aktion > *subActions )
  543. : Aktion( BARIERE_SET_EINGESCHALTET, subActions )
  544. {
  545. erlaubteTypen.add( BOOLEAN );
  546. erlaubteTypen.add( DROP );
  547. }
  548. BariereSetEingeschaltet::~BariereSetEingeschaltet()
  549. {}
  550. void BariereSetEingeschaltet::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  551. {
  552. ( (Bariere *)zEvaluatedParam( 1, zMemory, zPC ) )->setEingeschaltet( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  553. }
  554. GameObjektSetPosition::GameObjektSetPosition( RCArray< Aktion > *subActions )
  555. : Aktion( GAME_OBJEKT_SET_POSITION, subActions )
  556. {
  557. erlaubteTypen.add( FLOAT );
  558. erlaubteTypen.add( FLOAT );
  559. erlaubteTypen.add( GAME_OBJEKT );
  560. }
  561. GameObjektSetPosition::~GameObjektSetPosition()
  562. {}
  563. void GameObjektSetPosition::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  564. {
  565. ( (GameObject *)zEvaluatedParam( 2, zMemory, zPC ) )->setX( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  566. ( (GameObject *)zEvaluatedParam( 2, zMemory, zPC ) )->setY( ( (Float *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue() );
  567. }
  568. GameObjektSetSize::GameObjektSetSize( RCArray< Aktion > *subActions )
  569. : Aktion( GAME_OBJEKT_SET_SIZE, subActions )
  570. {
  571. erlaubteTypen.add( FLOAT );
  572. erlaubteTypen.add( FLOAT );
  573. erlaubteTypen.add( GAME_OBJEKT );
  574. }
  575. GameObjektSetSize::~GameObjektSetSize()
  576. {}
  577. void GameObjektSetSize::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  578. {
  579. ( (GameObject *)zEvaluatedParam( 2, zMemory, zPC ) )->setWidth( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  580. ( (GameObject *)zEvaluatedParam( 2, zMemory, zPC ) )->setHeight( ( (Float *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue() );
  581. }
  582. BariereSetTeam::BariereSetTeam( RCArray< Aktion > *subActions )
  583. : Aktion( BARIERE_SET_TEAM, subActions )
  584. {
  585. erlaubteTypen.add( TEAM );
  586. erlaubteTypen.add( BARIERE );
  587. }
  588. BariereSetTeam::~BariereSetTeam()
  589. {}
  590. void BariereSetTeam::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  591. {
  592. ( (Bariere *)zEvaluatedParam( 1, zMemory, zPC ) )->setTeam( ( (Team *)zEvaluatedParam( 0, zMemory, zPC ) ) );
  593. }
  594. SchalterSetErlaubt::SchalterSetErlaubt( RCArray< Aktion > *subActions )
  595. : Aktion( SCHALTER_SET_ERLAUBT, subActions )
  596. {
  597. erlaubteTypen.add( BOOLEAN );
  598. erlaubteTypen.add( SCHALTER );
  599. }
  600. SchalterSetErlaubt::~SchalterSetErlaubt()
  601. {}
  602. void SchalterSetErlaubt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  603. {
  604. ( (Schalter *)zEvaluatedParam( 1, zMemory, zPC ) )->setAktive( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  605. }
  606. SchalterAktivieren::SchalterAktivieren( RCArray< Aktion > *subActions )
  607. : Aktion( SCHALTER_AKTIVIEREN, subActions )
  608. {
  609. erlaubteTypen.add( SCHALTER );
  610. }
  611. SchalterAktivieren::~SchalterAktivieren()
  612. {}
  613. void SchalterAktivieren::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  614. {
  615. zSpiel->activateShalter( ( (Schalter *)zEvaluatedParam( 0, zMemory, zPC ) )->getId() );
  616. }
  617. TunnelSetZielPosition::TunnelSetZielPosition( RCArray< Aktion > *subActions )
  618. : Aktion( TUNNEL_SET_ZIEL_POSITION, subActions )
  619. {
  620. erlaubteTypen.add( INTEGER );
  621. erlaubteTypen.add( INTEGER );
  622. erlaubteTypen.add( TUNNEL );
  623. }
  624. TunnelSetZielPosition::~TunnelSetZielPosition()
  625. {}
  626. void TunnelSetZielPosition::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  627. {
  628. ( (Tunnel *)zEvaluatedParam( 2, zMemory, zPC ) )->setZielX( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  629. ( (Tunnel *)zEvaluatedParam( 2, zMemory, zPC ) )->setZielY( ( (Integer *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue() );
  630. }
  631. TunnelSetErlaubt::TunnelSetErlaubt( RCArray< Aktion > *subActions )
  632. : Aktion( TUNNEL_SET_ERLAUBT, subActions )
  633. {
  634. erlaubteTypen.add( BOOLEAN );
  635. erlaubteTypen.add( TUNNEL );
  636. }
  637. TunnelSetErlaubt::~TunnelSetErlaubt()
  638. {}
  639. void TunnelSetErlaubt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  640. {
  641. ( (Tunnel *)zEvaluatedParam( 1, zMemory, zPC ) )->setAktiv( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  642. }
  643. UmlenkungSetRichtung::UmlenkungSetRichtung( RCArray< Aktion > *subActions )
  644. : Aktion( UMLENKUNG_SET_RICHTUNG, subActions )
  645. {
  646. erlaubteTypen.add( RICHTUNG );
  647. erlaubteTypen.add( UMLENKUNG );
  648. }
  649. UmlenkungSetRichtung::~UmlenkungSetRichtung()
  650. {}
  651. void UmlenkungSetRichtung::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  652. {
  653. ( (Umlenkung *)zEvaluatedParam( 1, zMemory, zPC ) )->setRichtung( getRichtungFromString( ( (String *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() ) );
  654. }
  655. UmlenkungSetMaxAbk::UmlenkungSetMaxAbk( RCArray< Aktion > *subActions )
  656. : Aktion( UMLENKUNG_SET_MAX_ABK, subActions )
  657. {
  658. erlaubteTypen.add( INTEGER );
  659. erlaubteTypen.add( UMLENKUNG );
  660. }
  661. UmlenkungSetMaxAbk::~UmlenkungSetMaxAbk()
  662. {}
  663. void UmlenkungSetMaxAbk::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  664. {
  665. ( (Umlenkung *)zEvaluatedParam( 1, zMemory, zPC ) )->setMaxAbklingzeit( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  666. }
  667. UmlenkungSetEnabled::UmlenkungSetEnabled( RCArray< Aktion > *subActions )
  668. : Aktion( UMLENKUNG_SET_ERLAUBT, subActions )
  669. {
  670. erlaubteTypen.add( BOOLEAN );
  671. erlaubteTypen.add( UMLENKUNG );
  672. }
  673. UmlenkungSetEnabled::~UmlenkungSetEnabled()
  674. {}
  675. void UmlenkungSetEnabled::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  676. {
  677. ( (Umlenkung *)zEvaluatedParam( 1, zMemory, zPC ) )->setAktiv( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  678. }
  679. BaseSetTeam::BaseSetTeam( RCArray< Aktion > *subActions )
  680. : Aktion( BASE_SET_TEAM, subActions )
  681. {
  682. erlaubteTypen.add( TEAM );
  683. erlaubteTypen.add( BASE );
  684. }
  685. BaseSetTeam::~BaseSetTeam()
  686. {}
  687. void BaseSetTeam::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  688. {
  689. ( (Base *)zEvaluatedParam( 1, zMemory, zPC ) )->setTeam( ( (Team *)zEvaluatedParam( 0, zMemory, zPC ) ) );
  690. }
  691. TriggerRunStart::TriggerRunStart( RCArray< Aktion > *subActions )
  692. : Aktion( TRIGGER_RUN_START, subActions )
  693. {
  694. erlaubteTypen.add( TRIGGER );
  695. }
  696. TriggerRunStart::~TriggerRunStart()
  697. {}
  698. void TriggerRunStart::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  699. {
  700. zSpiel->addTriggerRun( ( (Trigger *)zEvaluatedParam( 0, zMemory, zPC ) )->runTrigger( zEreignis->getThis(), zSpiel ) );
  701. }
  702. TriggerSetEnabled::TriggerSetEnabled( RCArray< Aktion > *subActions )
  703. : Aktion( TRIGGER_SET_ENABLED, subActions )
  704. {
  705. erlaubteTypen.add( BOOLEAN );
  706. erlaubteTypen.add( TRIGGER );
  707. }
  708. TriggerSetEnabled::~TriggerSetEnabled()
  709. {}
  710. void TriggerSetEnabled::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  711. {
  712. ( (Trigger *)zEvaluatedParam( 1, zMemory, zPC ) )->setAktiv( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  713. }
  714. TeamSetPunkte::TeamSetPunkte( RCArray< Aktion > *subActions )
  715. : Aktion( TEAM_SET_PUNKTE, subActions )
  716. {
  717. erlaubteTypen.add( INTEGER );
  718. erlaubteTypen.add( TEAM );
  719. }
  720. TeamSetPunkte::~TeamSetPunkte()
  721. {}
  722. void TeamSetPunkte::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  723. {
  724. ( (Team *)zEvaluatedParam( 1, zMemory, zPC ) )->setPunkte( ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  725. }
  726. TimerSetPause::TimerSetPause( RCArray< Aktion > *subActions )
  727. : Aktion( TIMER_SET_PAUSE, subActions )
  728. {
  729. erlaubteTypen.add( BOOLEAN );
  730. erlaubteTypen.add( TIMER );
  731. }
  732. TimerSetPause::~TimerSetPause()
  733. {}
  734. void TimerSetPause::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  735. {
  736. ( (Timer *)zEvaluatedParam( 1, zMemory, zPC ) )->setPause( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  737. }
  738. TimerStart::TimerStart( RCArray< Aktion > *subActions )
  739. : Aktion( TIMER_START, subActions )
  740. {
  741. erlaubteTypen.add( TIMER );
  742. }
  743. TimerStart::~TimerStart()
  744. {}
  745. void TimerStart::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  746. {
  747. ( (Timer *)zEvaluatedParam( 0, zMemory, zPC ) )->start( zSpiel );
  748. }
  749. TimerSetZeit::TimerSetZeit( RCArray< Aktion > *subActions )
  750. : Aktion( TIMER_SET_ZEIT, subActions )
  751. {
  752. erlaubteTypen.add( FLOAT );
  753. erlaubteTypen.add( TIMER );
  754. }
  755. TimerSetZeit::~TimerSetZeit()
  756. {}
  757. void TimerSetZeit::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  758. {
  759. ( (Timer *)zEvaluatedParam( 1, zMemory, zPC ) )->setZeit( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  760. }
  761. TimerSetSichtbar::TimerSetSichtbar( RCArray< Aktion > *subActions )
  762. : Aktion( TIMER_SET_SICHTBAR, subActions )
  763. {
  764. erlaubteTypen.add( BOOLEAN );
  765. erlaubteTypen.add( TIMER );
  766. }
  767. TimerSetSichtbar::~TimerSetSichtbar()
  768. {}
  769. void TimerSetSichtbar::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  770. {
  771. ( (Timer *)zEvaluatedParam( 1, zMemory, zPC ) )->setSichtbar( ( (Boolean *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  772. }
  773. GeschossNeu::GeschossNeu( RCArray< Aktion > *subActions )
  774. : Aktion( GESCHOSS_NEU, subActions )
  775. {
  776. erlaubteTypen.add( INTEGER );
  777. erlaubteTypen.add( INTEGER );
  778. erlaubteTypen.add( GESCHOSS_TYP );
  779. erlaubteTypen.add( RICHTUNG );
  780. }
  781. GeschossNeu::~GeschossNeu()
  782. {}
  783. void GeschossNeu::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  784. {
  785. Geschoss *g = new Geschoss( zSpiel->getNextId(), 0,
  786. getGeschossTypFromString( ( (String *)zEvaluatedParam( 2, zMemory, zPC ) )->getValue() ),
  787. getRichtungFromString( ( (String *)zEvaluatedParam( 3, zMemory, zPC ) )->getValue() ),
  788. ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue(),
  789. ( (Integer *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue(), 0 );
  790. zSpiel->addGeschoss( (Geschoss *)g->getThis() );
  791. zMemory->setVar( "__return__", g );
  792. }
  793. GeschossSetSpeed::GeschossSetSpeed( RCArray< Aktion > *subActions )
  794. : Aktion( GESCHOSS_SET_SPEED, subActions )
  795. {
  796. erlaubteTypen.add( FLOAT );
  797. erlaubteTypen.add( GESCHOSS );
  798. }
  799. GeschossSetSpeed::~GeschossSetSpeed()
  800. {}
  801. void GeschossSetSpeed::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  802. {
  803. ( (Geschoss *)zEvaluatedParam( 1, zMemory, zPC ) )->setSpeed( ( (Float *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() );
  804. }
  805. GeschossSetPlayer::GeschossSetPlayer( RCArray< Aktion > *subActions )
  806. : Aktion( GESCHOSS_SET_PLAYER, subActions )
  807. {
  808. erlaubteTypen.add( SPIELER );
  809. erlaubteTypen.add( GESCHOSS );
  810. }
  811. GeschossSetPlayer::~GeschossSetPlayer()
  812. {}
  813. void GeschossSetPlayer::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  814. {
  815. ( (Geschoss *)zEvaluatedParam( 1, zMemory, zPC ) )->setBesitzer( ( (Spieler *)zMemory->getVariable( zPC->getUniqueString() + "R0__" ) ) );
  816. }
  817. GeschossSetRichtung::GeschossSetRichtung( RCArray< Aktion > *subActions )
  818. : Aktion( GESCHOSS_SET_RICHTUNG, subActions )
  819. {
  820. erlaubteTypen.add( RICHTUNG );
  821. erlaubteTypen.add( GESCHOSS );
  822. }
  823. GeschossSetRichtung::~GeschossSetRichtung()
  824. {}
  825. void GeschossSetRichtung::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  826. {
  827. ( (Geschoss *)zEvaluatedParam( 1, zMemory, zPC ) )->setRichtung( getRichtungFromString( ( (String *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() ) );
  828. }
  829. GeschossSetType::GeschossSetType( RCArray< Aktion > *subActions )
  830. : Aktion( GESCHOSS_SET_TYPE, subActions )
  831. {
  832. erlaubteTypen.add( GESCHOSS_TYP );
  833. erlaubteTypen.add( GESCHOSS );
  834. }
  835. GeschossSetType::~GeschossSetType()
  836. {}
  837. void GeschossSetType::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  838. {
  839. ( (Geschoss *)zEvaluatedParam( 1, zMemory, zPC ) )->setTyp( getGeschossTypFromString( ( (String *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() ) );
  840. }
  841. TriggerZufall::TriggerZufall()
  842. : Aktion( TRIGGER_ZUFALL, new RCArray< Aktion >() )
  843. {}
  844. void TriggerZufall::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  845. {
  846. zMemory->setVar( "__return__", zSpiel->getRandomTrigger() );
  847. }
  848. TriggerLastRunned::TriggerLastRunned()
  849. : Aktion( TRIGGER_LAST_RUNNED, new RCArray< Aktion >() )
  850. {}
  851. void TriggerLastRunned::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  852. {
  853. zMemory->setVar( "__return__", zSpiel->getLastRunnedTrigger() );
  854. }
  855. BariereZufall::BariereZufall()
  856. : Aktion( BARIERE_ZUFALL, new RCArray< Aktion >() )
  857. {}
  858. void BariereZufall::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  859. {
  860. zMemory->setVar( "__return__", zSpiel->getRandomBariere() );
  861. }
  862. BariereZuletztEingeschaltet::BariereZuletztEingeschaltet()
  863. : Aktion( BARIERE_ZULETZT_EINGESCHALTET, new RCArray< Aktion >() )
  864. {}
  865. void BariereZuletztEingeschaltet::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  866. {
  867. zMemory->setVar( "__return__", zSpiel->getZuletztEingeschalteteBariere() );
  868. }
  869. BariereZuletztAusgeschaltet::BariereZuletztAusgeschaltet()
  870. : Aktion( BARIERE_ZULETZT_AUSGESCHALTET, new RCArray< Aktion >() )
  871. {}
  872. void BariereZuletztAusgeschaltet::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  873. {
  874. zMemory->setVar( "__return__", zSpiel->getZuletztAusgeschalteteBariere() );
  875. }
  876. BariereZuletztBewegt::BariereZuletztBewegt()
  877. : Aktion( BARIERE_ZULETZT_BEWEGT, new RCArray< Aktion >() )
  878. {}
  879. void BariereZuletztBewegt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  880. {
  881. zMemory->setVar( "__return__", zSpiel->getZuletztBewegteBariere() );
  882. }
  883. BaseZufall::BaseZufall()
  884. : Aktion( BASE_ZUFALL, new RCArray< Aktion >() )
  885. {}
  886. void BaseZufall::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  887. {
  888. zMemory->setVar( "__return__", zSpiel->getRandomBase() );
  889. }
  890. BaseZuletztBesitzerGewechselt::BaseZuletztBesitzerGewechselt()
  891. : Aktion( BASE_ZULETZT_BESITZER_GEWECHSELT, new RCArray< Aktion >() )
  892. {}
  893. void BaseZuletztBesitzerGewechselt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  894. {
  895. zMemory->setVar( "__return__", zSpiel->getLastTeamChangedBase() );
  896. }
  897. DropZufall::DropZufall()
  898. : Aktion( DROP_ZUFALL, new RCArray< Aktion >() )
  899. {}
  900. void DropZufall::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  901. {
  902. zMemory->setVar( "__return__", zSpiel->getRandomDrop() );
  903. }
  904. DropZuletztGedropt::DropZuletztGedropt()
  905. : Aktion( DROP_ZULETZT_GEDROPT, new RCArray< Aktion >() )
  906. {}
  907. void DropZuletztGedropt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  908. {
  909. zMemory->setVar( "__return__", zSpiel->getLastDrop() );
  910. }
  911. IntegerRechnen::IntegerRechnen( RCArray< Aktion > *subActions, Operator op )
  912. : Aktion( INTEGER_RECHNEN, subActions )
  913. {
  914. erlaubteTypen.add( INTEGER );
  915. erlaubteTypen.add( INTEGER );
  916. }
  917. IntegerRechnen::~IntegerRechnen()
  918. {}
  919. void IntegerRechnen::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  920. {
  921. Integer *l = (Integer *)zEvaluatedParam( 0, zMemory, zPC );
  922. Integer *r = (Integer *)zEvaluatedParam( 1, zMemory, zPC );
  923. switch( op )
  924. {
  925. case PLUS:
  926. zMemory->setVar( "__return__", new Integer( l->getValue() + r->getValue() ) );
  927. break;
  928. case MINUS:
  929. zMemory->setVar( "__return__", new Integer( l->getValue() - r->getValue() ) );
  930. break;
  931. case MAHL:
  932. zMemory->setVar( "__return__", new Integer( l->getValue() * r->getValue() ) );
  933. break;
  934. case GETEILT:
  935. zMemory->setVar( "__return__", new Integer( l->getValue() / r->getValue() ) );
  936. break;
  937. case HOCH:
  938. zMemory->setVar( "__return__", new Integer( (int)pow( l->getValue(), r->getValue() ) ) );
  939. break;
  940. case WURZEL:
  941. zMemory->setVar( "__return__", new Integer( (int)pow( l->getValue(), 1.0 / r->getValue() ) ) );
  942. break;
  943. case BIT_ODER:
  944. zMemory->setVar( "__return__", new Integer( l->getValue() | r->getValue() ) );
  945. break;
  946. case BIT_UND:
  947. zMemory->setVar( "__return__", new Integer( l->getValue() & r->getValue() ) );
  948. break;
  949. case BIT_XOR:
  950. zMemory->setVar( "__return__", new Integer( l->getValue() ^ r->getValue() ) );
  951. break;
  952. case BIT_FLIP:
  953. zMemory->setVar( "__return__", new Integer( ~l->getValue() ) );
  954. break;
  955. case BIT_SHIFT_LEFT:
  956. zMemory->setVar( "__return__", new Integer( l->getValue() << r->getValue() ) );
  957. break;
  958. case BIT_SHIFT_RIGHT:
  959. zMemory->setVar( "__return__", new Integer( l->getValue() >> r->getValue() ) );
  960. break;
  961. case INVERT_SIGN:
  962. zMemory->setVar( "__return__", new Integer( -l->getValue() ) );
  963. break;
  964. case PLUS_PLUS_LEFT:
  965. l->setValue( l->getValue() + 1 );
  966. zMemory->setVar( "__return__", new Integer( l->getValue() ) );
  967. break;
  968. case PLUS_PLUS_RIGHT:
  969. {
  970. int tmp = l->getValue();
  971. l->setValue( l->getValue() + 1 );
  972. zMemory->setVar( "__return__", new Integer( tmp ) );
  973. break;
  974. }
  975. case MINUS_MINUS_LEFT:
  976. l->setValue( l->getValue() - 1 );
  977. zMemory->setVar( "__return__", new Integer( l->getValue() ) );
  978. break;
  979. case MINUS_MINUS_RIGHT:
  980. {
  981. int tmp = l->getValue();
  982. l->setValue( l->getValue() - 1 );
  983. zMemory->setVar( "__return__", new Integer( tmp ) );
  984. break;
  985. }
  986. case LOGARITHM:
  987. zMemory->setVar( "__return__", new Integer( (int)( log( l->getValue() ) / log( r->getValue() ) ) ) );
  988. break;
  989. case MODULO:
  990. zMemory->setVar( "__return__", new Integer( l->getValue() % r->getValue() ) );
  991. break;
  992. default:
  993. break;
  994. }
  995. }
  996. IntegerZufall::IntegerZufall( RCArray< Aktion > *subActions )
  997. : Aktion( INTEGER_ZUFALL, subActions )
  998. {
  999. erlaubteTypen.add( INTEGER );
  1000. erlaubteTypen.add( INTEGER );
  1001. }
  1002. IntegerZufall::~IntegerZufall()
  1003. {}
  1004. void IntegerZufall::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1005. {
  1006. int mi = ( (Integer *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue();
  1007. int ma = ( (Integer *)zEvaluatedParam( 1, zMemory, zPC ) )->getValue();
  1008. zMemory->setVar( "__return__", new Integer( (int)( zSpiel->getRand() * ( ma - mi ) + mi ) ) );
  1009. }
  1010. IntegerAusText::IntegerAusText( RCArray< Aktion > *subActions )
  1011. : Aktion( INTEGER_AUS_TEXT, subActions )
  1012. {
  1013. erlaubteTypen.add( STRING );
  1014. }
  1015. IntegerAusText::~IntegerAusText()
  1016. {}
  1017. void IntegerAusText::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1018. {
  1019. zMemory->setVar( "__return__", new Integer( ( (String *)zEvaluatedParam( 0, zMemory, zPC ) )->getValue() ) );
  1020. }
  1021. FloatXVonGameObjekt::FloatXVonGameObjekt( RCArray< Aktion > *subActions )
  1022. : Aktion( FLOAT_X_VON_GAME_OBJEKT, subActions )
  1023. {
  1024. erlaubteTypen.add( GAME_OBJEKT );
  1025. }
  1026. FloatXVonGameObjekt::~FloatXVonGameObjekt()
  1027. {}
  1028. void FloatXVonGameObjekt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1029. {
  1030. zMemory->setVar( "__return__", new Float( ( (GameObject *)zEvaluatedParam( 0, zMemory, zPC ) )->getX() ) );
  1031. }
  1032. FloatYVonGameObjekt::FloatYVonGameObjekt( RCArray< Aktion > *subActions )
  1033. : Aktion( FLOAT_Y_VON_GAME_OBJEKT, subActions )
  1034. {
  1035. erlaubteTypen.add( GAME_OBJEKT );
  1036. }
  1037. FloatYVonGameObjekt::~FloatYVonGameObjekt()
  1038. {}
  1039. void FloatYVonGameObjekt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1040. {
  1041. zMemory->setVar( "__return__", new Float( ( (GameObject *)zEvaluatedParam( 0, zMemory, zPC ) )->getY() ) );
  1042. }
  1043. IntegerXVonTunnelZiel::IntegerXVonTunnelZiel( RCArray< Aktion > *subActions )
  1044. : Aktion( INTEGER_X_VON_TUNNEL_ZIEL, subActions )
  1045. {
  1046. erlaubteTypen.add( TUNNEL );
  1047. }
  1048. IntegerXVonTunnelZiel::~IntegerXVonTunnelZiel()
  1049. {}
  1050. void IntegerXVonTunnelZiel::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1051. {
  1052. zMemory->setVar( "__return__", new Integer( ( (Tunnel *)zEvaluatedParam( 0, zMemory, zPC ) )->getZielX() ) );
  1053. }
  1054. IntegerYVonTunnelZiel::IntegerYVonTunnelZiel( RCArray< Aktion > *subActions )
  1055. : Aktion( INTEGER_Y_VON_TUNNEL_ZIEL, subActions )
  1056. {
  1057. erlaubteTypen.add( TUNNEL );
  1058. }
  1059. IntegerYVonTunnelZiel::~IntegerYVonTunnelZiel()
  1060. {}
  1061. void IntegerYVonTunnelZiel::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1062. {
  1063. zMemory->setVar( "__return__", new Integer( ( (Tunnel *)zEvaluatedParam( 0, zMemory, zPC ) )->getZielY() ) );
  1064. }
  1065. IntegerMinXVonDrop::IntegerMinXVonDrop( RCArray< Aktion > *subActions )
  1066. : Aktion( INTEGER_MIN_X_VON_DROP, subActions )
  1067. {
  1068. erlaubteTypen.add( DROP );
  1069. }
  1070. IntegerMinXVonDrop::~IntegerMinXVonDrop()
  1071. {}
  1072. void IntegerMinXVonDrop::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1073. {
  1074. zMemory->setVar( "__return__", new Integer( ( (Drop *)zEvaluatedParam( 0, zMemory, zPC ) )->getMinX() ) );
  1075. }
  1076. IntegerMinYVonDrop::IntegerMinYVonDrop( RCArray< Aktion > *subActions )
  1077. : Aktion( INTEGER_MIN_Y_VON_DROP, subActions )
  1078. {
  1079. erlaubteTypen.add( DROP );
  1080. }
  1081. IntegerMinYVonDrop::~IntegerMinYVonDrop()
  1082. {}
  1083. void IntegerMinYVonDrop::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1084. {
  1085. zMemory->setVar( "__return__", new Integer( ( (Drop *)zEvaluatedParam( 0, zMemory, zPC ) )->getMinY() ) );
  1086. }
  1087. IntegerMaxXVonDrop::IntegerMaxXVonDrop( RCArray< Aktion > *subActions )
  1088. : Aktion( INTEGER_MAX_X_VON_DROP, subActions )
  1089. {
  1090. erlaubteTypen.add( DROP );
  1091. }
  1092. IntegerMaxXVonDrop::~IntegerMaxXVonDrop()
  1093. {}
  1094. void IntegerMaxXVonDrop::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1095. {
  1096. zMemory->setVar( "__return__", new Integer( ( (Drop *)zEvaluatedParam( 0, zMemory, zPC ) )->getMaxX() ) );
  1097. }
  1098. IntegerMaxYVonDrop::IntegerMaxYVonDrop( RCArray< Aktion > *subActions )
  1099. : Aktion( INTEGER_MAX_Y_VON_DROP, subActions )
  1100. {
  1101. erlaubteTypen.add( DROP );
  1102. }
  1103. IntegerMaxYVonDrop::~IntegerMaxYVonDrop()
  1104. {}
  1105. void IntegerMaxYVonDrop::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1106. {
  1107. zMemory->setVar( "__return__", new Integer( ( (Drop *)zEvaluatedParam( 0, zMemory, zPC ) )->getMaxY() ) );
  1108. }
  1109. IntegerSpielerLevel::IntegerSpielerLevel( RCArray< Aktion > *subActions )
  1110. : Aktion( INTEGER_SPIELER_LEVEL, subActions )
  1111. {
  1112. erlaubteTypen.add( SPIELER );
  1113. }
  1114. IntegerSpielerLevel::~IntegerSpielerLevel()
  1115. {}
  1116. void IntegerSpielerLevel::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1117. {
  1118. zMemory->setVar( "__return__", new Integer( ( (Spieler *)zEvaluatedParam( 0, zMemory, zPC ) )->getLevel() ) );
  1119. }
  1120. FloatSpielerLeben::FloatSpielerLeben( RCArray< Aktion > *subActions )
  1121. : Aktion( FLOAT_SPIELER_LEBEN, subActions )
  1122. {
  1123. erlaubteTypen.add( SPIELER );
  1124. }
  1125. FloatSpielerLeben::~FloatSpielerLeben()
  1126. {}
  1127. void FloatSpielerLeben::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
  1128. {
  1129. zMemory->setVar( "__return__", new Float( ( (Spieler *)zEvaluatedParam( 0, zMemory, zPC ) )->getLeben() ) );
  1130. }