AktionsThread.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. #include "AktionsThread.h"
  2. #include "..\Global\Variablen.h"
  3. // Inhalt der AktionsThread Klasse aus AktionsThread.h
  4. // Konstruktor
  5. AktionsThread::AktionsThread( int aktion, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5 )
  6. : Thread()
  7. {
  8. this->aktion = aktion;
  9. this->arg1 = arg1;
  10. this->arg2 = arg2;
  11. this->arg3 = arg3;
  12. this->arg4 = arg4;
  13. this->arg5 = arg5;
  14. ref = 1;
  15. start();
  16. }
  17. // nicht constant
  18. void AktionsThread::thread()
  19. {
  20. switch( aktion )
  21. {
  22. case 1: // Login
  23. // arg1 = char* -- Account Name
  24. // arg2 = char* -- Account Passwort
  25. if( 1 )
  26. {
  27. hauptScreen->setdeckFarbe( 0x00000000 );
  28. hauptScreen->setOnTop( 1 );
  29. ladeAnimation->setSichtbar( 1 );
  30. int ret = loginKlient->login( (const char*)arg1, (const char*)arg2 );
  31. do
  32. {
  33. if( ret != 1 )
  34. continue;
  35. if( !infoKlient->verbinde() )
  36. {
  37. ret = 0;
  38. loginKlient->setLetzterFehler( infoKlient->getLetzterFehler() );
  39. loginKlient->logout();
  40. continue;
  41. }
  42. if( !chatKlient->verbinde() )
  43. {
  44. ret = 0;
  45. loginKlient->setLetzterFehler( chatKlient->getLetzterFehler() );
  46. loginKlient->logout();
  47. infoKlient->trenne();
  48. continue;
  49. }
  50. loginKlient->trenne();
  51. }
  52. while( 0 );
  53. ladeAnimation->setSichtbar( 0 );
  54. hauptScreen->setOnTop( 0 );
  55. vorLogin->zLogin()->setLoginReturn( ret );
  56. }
  57. break;
  58. case 2: // Login Erfolgreich
  59. hauptScreen->setdeckFarbe( 0x00000000 );
  60. hauptScreen->setOnTop( 1 );
  61. ladeAnimation->setSichtbar( 1 );
  62. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  63. {
  64. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  65. Sleep( 40 );
  66. deckAlpha += 15;
  67. }
  68. hauptScreen->setdeckFarbe( 255 << 24 );
  69. hauptScreen->setRenderZeichnungen( 0 );
  70. vorLogin->setSichtbar( 0 );
  71. nachLogin->setAnzeige( NLANormal );
  72. hauptScreen->setRenderZeichnungen( 1 );
  73. ladeAnimation->setSichtbar( 0 );
  74. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  75. {
  76. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  77. Sleep( 40 );
  78. deckAlpha -= 15;
  79. }
  80. hauptScreen->setdeckFarbe( 0 << 24 );
  81. hauptScreen->setOnTop( 0 );
  82. break;
  83. case 3: // Kick
  84. // arg1 = char* -- Account Geheimnis
  85. if( 1 )
  86. {
  87. hauptScreen->setdeckFarbe( 0x00000000 );
  88. hauptScreen->setOnTop( 1 );
  89. ladeAnimation->setSichtbar( 1 );
  90. int ret = (int)loginKlient->kick( (const char*)arg1 );
  91. do
  92. {
  93. if( !ret )
  94. continue;
  95. if( !infoKlient->verbinde() )
  96. {
  97. ret = 2;
  98. loginKlient->setLetzterFehler( infoKlient->getLetzterFehler() );
  99. loginKlient->logout();
  100. continue;
  101. }
  102. if( !chatKlient->verbinde() )
  103. {
  104. ret = 2;
  105. loginKlient->setLetzterFehler( chatKlient->getLetzterFehler() );
  106. loginKlient->logout();
  107. infoKlient->trenne();
  108. continue;
  109. }
  110. loginKlient->trenne();
  111. }
  112. while( 0 );
  113. ladeAnimation->setSichtbar( 0 );
  114. hauptScreen->setOnTop( 0 );
  115. vorLogin->zLogin()->setKickReturn( ret );
  116. }
  117. break;
  118. case 4: // Logout
  119. if( 1 )
  120. {
  121. hauptScreen->setdeckFarbe( 0x00000000 );
  122. hauptScreen->setOnTop( 1 );
  123. ladeAnimation->setSichtbar( 1 );
  124. bool ret = loginKlient->logout();
  125. if( ret )
  126. {
  127. hauptScreen->lock();
  128. nachLogin->zChatLeiste()->removeAll();
  129. nachLogin->zFreundesListe()->removeAll();
  130. nachLogin->zNachrichtenListe()->removeAll();
  131. hauptScreen->unlock();
  132. infoKlient->trenne();
  133. spielKlient->trenne();
  134. chatKlient->trenne();
  135. loginKlient->trenne();
  136. }
  137. else
  138. {
  139. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Das Ausloggen konnte nicht erfolgreich abgeschlossen werden." ),
  140. new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
  141. ladeAnimation->setSichtbar( 0 );
  142. hauptScreen->setOnTop( 0 );
  143. break;
  144. }
  145. ladeAnimation->setSichtbar( 0 );
  146. hauptScreen->setOnTop( 0 );
  147. }
  148. case 5: // Logout Erfolgreich
  149. hauptScreen->setdeckFarbe( 0x00000000 );
  150. hauptScreen->setOnTop( 1 );
  151. ladeAnimation->setSichtbar( 1 );
  152. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  153. {
  154. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  155. Sleep( 40 );
  156. deckAlpha += 15;
  157. }
  158. hauptScreen->setdeckFarbe( 255 << 24 );
  159. _render = 0;
  160. hauptScreen->lock();
  161. nachLogin->setAnzeige( NLALogin );
  162. vorLogin->setSichtbar( 1 );
  163. hauptScreen->unlock();
  164. _render = 1;
  165. ladeAnimation->setSichtbar( 0 );
  166. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  167. {
  168. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  169. Sleep( 40 );
  170. deckAlpha -= 15;
  171. }
  172. hauptScreen->setdeckFarbe( 0 << 24 );
  173. hauptScreen->setOnTop( 0 );
  174. break;
  175. case 6: // Account Bestätigung
  176. // arg1 = char* -- Account Name
  177. // arg2 = char* -- Account Passwort
  178. if( 1 )
  179. {
  180. hauptScreen->setdeckFarbe( 0x00000000 );
  181. hauptScreen->setOnTop( 1 );
  182. ladeAnimation->setSichtbar( 1 );
  183. int ret = registerKlient->accountBestätigen( (const char*)arg1, (const char*)arg2 );
  184. ladeAnimation->setSichtbar( 0 );
  185. hauptScreen->setOnTop( 0 );
  186. vorLogin->zBestätigung()->setWeiterResult( ret );
  187. }
  188. break;
  189. case 7: // Account Bestätigung Fertig
  190. // arg1 = char* -- Schlüssel
  191. if( 1 )
  192. {
  193. hauptScreen->setdeckFarbe( 0x00000000 );
  194. hauptScreen->setOnTop( 1 );
  195. ladeAnimation->setSichtbar( 1 );
  196. bool ret = registerKlient->bestätigen( (const char*)arg1 );
  197. ladeAnimation->setSichtbar( 0 );
  198. hauptScreen->setOnTop( 0 );
  199. vorLogin->zBestätigung()->setFertigResult( ret );
  200. }
  201. break;
  202. case 8: // Account E-Mail ändern
  203. // arg1 = char* -- Account Name
  204. // arg2 = char* -- Account Passwort
  205. // arg3 = char* -- Account Geheimnis
  206. // arg4 = char* -- Neue E-Mail
  207. if( 1 )
  208. {
  209. hauptScreen->setdeckFarbe( 0x00000000 );
  210. hauptScreen->setOnTop( 1 );
  211. ladeAnimation->setSichtbar( 1 );
  212. bool ret = registerKlient->eMailÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 );
  213. ladeAnimation->setSichtbar( 0 );
  214. hauptScreen->setOnTop( 0 );
  215. vorLogin->zEMailÄndern()->setReturn( ret );
  216. }
  217. break;
  218. case 9: // Account E-Mail Vergessen
  219. // arg1 = char* -- Account Name
  220. // arg2 = char* -- Account Passwort
  221. // arg3 = char* -- Account Geheimnis
  222. if( 1 )
  223. {
  224. hauptScreen->setdeckFarbe( 0x00000000 );
  225. hauptScreen->setOnTop( 1 );
  226. ladeAnimation->setSichtbar( 1 );
  227. char *eMail = 0;
  228. char **pEMail = &eMail;
  229. bool ret = registerKlient->eMailVergessen( (const char*)arg1, (const char*)arg2, (const char*)arg3, pEMail );
  230. ladeAnimation->setSichtbar( 0 );
  231. hauptScreen->setOnTop( 0 );
  232. vorLogin->zEMailVergessen()->setReturn( ret, *pEMail );
  233. }
  234. break;
  235. case 10: // Account Geheimnis Ändern
  236. // arg1 = char* -- Account Name
  237. // arg2 = char* -- Account Passwort
  238. // arg3 = char* -- Account Geheimnis
  239. // arg4 = char* -- Neues Geheimnis
  240. if( 1 )
  241. {
  242. hauptScreen->setdeckFarbe( 0x00000000 );
  243. hauptScreen->setOnTop( 1 );
  244. ladeAnimation->setSichtbar( 1 );
  245. bool ret = registerKlient->geheimnisÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 );
  246. ladeAnimation->setSichtbar( 0 );
  247. hauptScreen->setOnTop( 0 );
  248. vorLogin->zGeheimnisÄndern()->setResult( ret );
  249. }
  250. break;
  251. case 11: // Account Geheimnis Vergessen
  252. // arg1 = char* -- Account Name
  253. // arg2 = char* -- Account Passwort
  254. if( 1 )
  255. {
  256. hauptScreen->setdeckFarbe( 0x00000000 );
  257. hauptScreen->setOnTop( 1 );
  258. ladeAnimation->setSichtbar( 1 );
  259. bool ret = registerKlient->geheimnisVergessen( (const char*)arg1, (const char*)arg2 );
  260. ladeAnimation->setSichtbar( 0 );
  261. hauptScreen->setOnTop( 0 );
  262. vorLogin->zGeheimnisVergessen()->setResult( ret );
  263. }
  264. break;
  265. case 12: // Account Name Vergessen
  266. // arg1 = char* -- Account Passwort
  267. // arg2 = char* -- Account Geheimnis
  268. if( 1 )
  269. {
  270. hauptScreen->setdeckFarbe( 0x00000000 );
  271. hauptScreen->setOnTop( 1 );
  272. ladeAnimation->setSichtbar( 1 );
  273. bool ret = registerKlient->nameVergessen( (const char*)arg1, (const char*)arg2 );
  274. ladeAnimation->setSichtbar( 0 );
  275. hauptScreen->setOnTop( 0 );
  276. vorLogin->zNameVergessen()->setResult( ret );
  277. }
  278. break;
  279. case 13: // Account Passwort Ändern
  280. // arg1 = char* -- Account Name
  281. // arg2 = char* -- Account Passwort
  282. // arg3 = char* -- Account Geheimnis
  283. // arg4 = char* -- Neues Passwort
  284. if( 1 )
  285. {
  286. hauptScreen->setdeckFarbe( 0x00000000 );
  287. hauptScreen->setOnTop( 1 );
  288. ladeAnimation->setSichtbar( 1 );
  289. bool ret = registerKlient->passwortÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 );
  290. ladeAnimation->setSichtbar( 0 );
  291. hauptScreen->setOnTop( 0 );
  292. vorLogin->zPasswortÄndern()->setResult( ret );
  293. }
  294. break;
  295. case 14: // Account Passwort Vergessen
  296. // arg1 = char* -- Account Name
  297. // arg2 = char* -- Account Geheimnis
  298. if( 1 )
  299. {
  300. hauptScreen->setdeckFarbe( 0x00000000 );
  301. hauptScreen->setOnTop( 1 );
  302. ladeAnimation->setSichtbar( 1 );
  303. bool ret = registerKlient->passwortVergessen( (const char*)arg1, (const char*)arg2 );
  304. ladeAnimation->setSichtbar( 0 );
  305. hauptScreen->setOnTop( 0 );
  306. vorLogin->zPasswortVergessen()->setResult( ret );
  307. }
  308. break;
  309. case 15: // Account Erstellen
  310. // arg1 = char* -- Account Name
  311. // arg2 = char* -- Account Passwort
  312. // arg3 = char* -- Account Geheimnis
  313. // arg4 = char* -- Account E-Mail
  314. // arg5 = Datum* -- Geburtsdatum
  315. if( 1 )
  316. {
  317. hauptScreen->setdeckFarbe( 0x00000000 );
  318. hauptScreen->setOnTop( 1 );
  319. ladeAnimation->setSichtbar( 1 );
  320. bool ret = registerKlient->accountErstellen( (const char*)arg1,
  321. (const char*)arg2,
  322. (const char*)arg3,
  323. (const char*)arg4,
  324. (unsigned short)( (Datum*)arg5 )->getJahr(),
  325. (char)( (Datum*)arg5 )->getMonat(),
  326. (char)( (Datum*)arg5 )->getTag() );
  327. ladeAnimation->setSichtbar( 0 );
  328. hauptScreen->setOnTop( 0 );
  329. vorLogin->zRegistrierung()->setWeiterReturn( ret );
  330. ( (Datum*)arg5 )->release();
  331. }
  332. break;
  333. case 16: // account Erstellen Fertig
  334. // arg1 = char* -- Schlüssel
  335. if( 1 )
  336. {
  337. hauptScreen->setdeckFarbe( 0x00000000 );
  338. hauptScreen->setOnTop( 1 );
  339. ladeAnimation->setSichtbar( 1 );
  340. bool ret = registerKlient->bestätigen( (const char*)arg1 );
  341. ladeAnimation->setSichtbar( 0 );
  342. hauptScreen->setOnTop( 0 );
  343. vorLogin->zRegistrierung()->setFertigReturn( ret );
  344. }
  345. break;
  346. case 17: // account Löschen Fertig
  347. // arg1 = char* -- Account Name
  348. // arg2 = char* -- Account Passwort
  349. // arg3 = char* -- Account Geheimnis
  350. if( 1 )
  351. {
  352. hauptScreen->setdeckFarbe( 0x00000000 );
  353. hauptScreen->setOnTop( 1 );
  354. ladeAnimation->setSichtbar( 1 );
  355. bool ret = registerKlient->accountLöschen( (const char*)arg1, (const char*)arg2, (const char*)arg3 );
  356. ladeAnimation->setSichtbar( 0 );
  357. hauptScreen->setOnTop( 0 );
  358. vorLogin->zUnregistrierung()->setWeiterReturn( ret );
  359. }
  360. break;
  361. case 18: // account Löschen Fertig
  362. // arg1 = char* -- Schlüssel
  363. if( 1 )
  364. {
  365. hauptScreen->setdeckFarbe( 0x00000000 );
  366. hauptScreen->setOnTop( 1 );
  367. ladeAnimation->setSichtbar( 1 );
  368. bool ret = registerKlient->bestätigen( (const char*)arg1 );
  369. ladeAnimation->setSichtbar( 0 );
  370. hauptScreen->setOnTop( 0 );
  371. vorLogin->zUnregistrierung()->setFertigReturn( ret );
  372. }
  373. break;
  374. case 19: // Spiel Laden
  375. if( 1 )
  376. {
  377. hauptScreen->setdeckFarbe( 0x00000000 );
  378. hauptScreen->setOnTop( 1 );
  379. ladeAnimation->setSichtbar( 1 );
  380. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  381. {
  382. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  383. Sleep( 40 );
  384. deckAlpha += 15;
  385. }
  386. hauptScreen->setdeckFarbe( 255 << 24 );
  387. _render = 0;
  388. hauptScreen->lock();
  389. int karteId = nachLogin->zSpielenFenster()->getKarteId();
  390. SpielerTeamStruktur *sts = nachLogin->zSpielenFenster()->getSTS();
  391. nachLogin->setAnzeige( NLAImSpiel );
  392. hauptScreen->unlock();
  393. _render = 1;
  394. nachLogin->zImSpiel()->beginnLaden( karteId, sts );
  395. ladeAnimation->setSichtbar( 0 );
  396. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  397. {
  398. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  399. Sleep( 40 );
  400. deckAlpha -= 15;
  401. }
  402. hauptScreen->setdeckFarbe( 0 << 24 );
  403. hauptScreen->setOnTop( 0 );
  404. }
  405. break;
  406. case 20: // Spiel Statistik laden
  407. if( 1 )
  408. {
  409. hauptScreen->setdeckFarbe( 0x00000000 );
  410. hauptScreen->setOnTop( 1 );
  411. ladeAnimation->setSichtbar( 1 );
  412. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  413. {
  414. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  415. Sleep( 40 );
  416. deckAlpha += 15;
  417. }
  418. hauptScreen->setdeckFarbe( 255 << 24 );
  419. _render = 0;
  420. hauptScreen->lock();
  421. int karteId = nachLogin->zImSpiel()->getKarteId();
  422. nachLogin->setAnzeige( NLANormal );
  423. hauptScreen->unlock();
  424. _render = 1;
  425. if( spielKlient->istVerbunden() )
  426. nachLogin->zSpielenFenster()->ladeSpielStatistik( karteId );
  427. ladeAnimation->setSichtbar( 0 );
  428. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  429. {
  430. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  431. Sleep( 40 );
  432. deckAlpha -= 15;
  433. }
  434. hauptScreen->setdeckFarbe( 0 << 24 );
  435. hauptScreen->setOnTop( 0 );
  436. }
  437. break;
  438. case 21: // Spiel Aufzeichnung betreten
  439. if( 1 )
  440. {
  441. hauptScreen->setdeckFarbe( 0x00000000 );
  442. hauptScreen->setOnTop( 1 );
  443. ladeAnimation->setSichtbar( 1 );
  444. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  445. {
  446. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  447. Sleep( 40 );
  448. deckAlpha += 15;
  449. }
  450. hauptScreen->setdeckFarbe( 255 << 24 );
  451. _render = 0;
  452. hauptScreen->lock();
  453. nachLogin->setAnzeige( NLASpielVideo );
  454. hauptScreen->unlock();
  455. _render = 1;
  456. ladeAnimation->setSichtbar( 0 );
  457. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  458. {
  459. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  460. Sleep( 40 );
  461. deckAlpha -= 15;
  462. }
  463. hauptScreen->setdeckFarbe( 0 << 24 );
  464. hauptScreen->setOnTop( 0 );
  465. }
  466. break;
  467. case 22: // Spiel Aufzeichnung / Editor verlassen
  468. if( 1 )
  469. {
  470. hauptScreen->setdeckFarbe( 0x00000000 );
  471. hauptScreen->setOnTop( 1 );
  472. ladeAnimation->setSichtbar( 1 );
  473. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  474. {
  475. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  476. Sleep( 40 );
  477. deckAlpha += 15;
  478. }
  479. hauptScreen->setdeckFarbe( 255 << 24 );
  480. _render = 0;
  481. hauptScreen->lock();
  482. nachLogin->setAnzeige( NLANormal );
  483. hauptScreen->unlock();
  484. _render = 1;
  485. ladeAnimation->setSichtbar( 0 );
  486. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  487. {
  488. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  489. Sleep( 40 );
  490. deckAlpha -= 15;
  491. }
  492. hauptScreen->setdeckFarbe( 0 << 24 );
  493. hauptScreen->setOnTop( 0 );
  494. }
  495. break;
  496. case 23: // Editor betreten
  497. if( 1 )
  498. {
  499. hauptScreen->setdeckFarbe( 0x00000000 );
  500. hauptScreen->setOnTop( 1 );
  501. ladeAnimation->setSichtbar( 1 );
  502. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  503. {
  504. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  505. Sleep( 40 );
  506. deckAlpha += 15;
  507. }
  508. hauptScreen->setdeckFarbe( 255 << 24 );
  509. _render = 0;
  510. hauptScreen->lock();
  511. nachLogin->setAnzeige( NLAEditor );
  512. hauptScreen->unlock();
  513. _render = 1;
  514. ladeAnimation->setSichtbar( 0 );
  515. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  516. {
  517. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  518. Sleep( 40 );
  519. deckAlpha -= 15;
  520. }
  521. hauptScreen->setdeckFarbe( 0 << 24 );
  522. hauptScreen->setOnTop( 0 );
  523. }
  524. break;
  525. }
  526. release();
  527. }
  528. // constant
  529. // Reference Counting
  530. AktionsThread *AktionsThread::getThis()
  531. {
  532. ref++;
  533. return this;
  534. }
  535. AktionsThread *AktionsThread::release()
  536. {
  537. ref--;
  538. if( !ref )
  539. delete this;
  540. return 0;
  541. }