AktionsThread.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  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 17: // account Löschen Fertig
  334. // arg1 = char* -- Account Name
  335. // arg2 = char* -- Account Passwort
  336. // arg3 = char* -- Account Geheimnis
  337. if( 1 )
  338. {
  339. hauptScreen->setdeckFarbe( 0x00000000 );
  340. hauptScreen->setOnTop( 1 );
  341. ladeAnimation->setSichtbar( 1 );
  342. bool ret = registerKlient->accountLöschen( (const char*)arg1, (const char*)arg2, (const char*)arg3 );
  343. ladeAnimation->setSichtbar( 0 );
  344. hauptScreen->setOnTop( 0 );
  345. vorLogin->zUnregistrierung()->setWeiterReturn( ret );
  346. }
  347. break;
  348. case 18: // account Löschen Fertig
  349. // arg1 = char* -- Schlüssel
  350. if( 1 )
  351. {
  352. hauptScreen->setdeckFarbe( 0x00000000 );
  353. hauptScreen->setOnTop( 1 );
  354. ladeAnimation->setSichtbar( 1 );
  355. bool ret = registerKlient->bestätigen( (const char*)arg1 );
  356. ladeAnimation->setSichtbar( 0 );
  357. hauptScreen->setOnTop( 0 );
  358. vorLogin->zUnregistrierung()->setFertigReturn( ret );
  359. }
  360. break;
  361. case 19: // Spiel Laden
  362. if( 1 )
  363. {
  364. hauptScreen->setdeckFarbe( 0x00000000 );
  365. hauptScreen->setOnTop( 1 );
  366. ladeAnimation->setSichtbar( 1 );
  367. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  368. {
  369. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  370. Sleep( 40 );
  371. deckAlpha += 15;
  372. }
  373. hauptScreen->setdeckFarbe( 255 << 24 );
  374. _render = 0;
  375. hauptScreen->lock();
  376. int karteId = nachLogin->zSpielenFenster()->getKarteId();
  377. SpielerTeamStruktur *sts = nachLogin->zSpielenFenster()->getSTS();
  378. nachLogin->setAnzeige( NLAImSpiel );
  379. hauptScreen->unlock();
  380. _render = 1;
  381. nachLogin->zImSpiel()->beginnLaden( karteId, sts );
  382. ladeAnimation->setSichtbar( 0 );
  383. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  384. {
  385. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  386. Sleep( 40 );
  387. deckAlpha -= 15;
  388. }
  389. hauptScreen->setdeckFarbe( 0 << 24 );
  390. hauptScreen->setOnTop( 0 );
  391. }
  392. break;
  393. case 20: // Spiel Statistik laden
  394. if( 1 )
  395. {
  396. hauptScreen->setdeckFarbe( 0x00000000 );
  397. hauptScreen->setOnTop( 1 );
  398. ladeAnimation->setSichtbar( 1 );
  399. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  400. {
  401. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  402. Sleep( 40 );
  403. deckAlpha += 15;
  404. }
  405. hauptScreen->setdeckFarbe( 255 << 24 );
  406. _render = 0;
  407. hauptScreen->lock();
  408. int karteId = nachLogin->zImSpiel()->getKarteId();
  409. nachLogin->setAnzeige( NLANormal );
  410. hauptScreen->unlock();
  411. _render = 1;
  412. if( spielKlient->istVerbunden() )
  413. nachLogin->zSpielenFenster()->ladeSpielStatistik( karteId );
  414. ladeAnimation->setSichtbar( 0 );
  415. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  416. {
  417. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  418. Sleep( 40 );
  419. deckAlpha -= 15;
  420. }
  421. hauptScreen->setdeckFarbe( 0 << 24 );
  422. hauptScreen->setOnTop( 0 );
  423. }
  424. break;
  425. case 21: // Spiel Aufzeichnung betreten
  426. if( 1 )
  427. {
  428. hauptScreen->setdeckFarbe( 0x00000000 );
  429. hauptScreen->setOnTop( 1 );
  430. ladeAnimation->setSichtbar( 1 );
  431. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  432. {
  433. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  434. Sleep( 40 );
  435. deckAlpha += 15;
  436. }
  437. hauptScreen->setdeckFarbe( 255 << 24 );
  438. _render = 0;
  439. hauptScreen->lock();
  440. nachLogin->setAnzeige( NLASpielVideo );
  441. hauptScreen->unlock();
  442. _render = 1;
  443. ladeAnimation->setSichtbar( 0 );
  444. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  445. {
  446. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  447. Sleep( 40 );
  448. deckAlpha -= 15;
  449. }
  450. hauptScreen->setdeckFarbe( 0 << 24 );
  451. hauptScreen->setOnTop( 0 );
  452. }
  453. break;
  454. case 22: // Spiel Aufzeichnung / Editor verlassen
  455. if( 1 )
  456. {
  457. hauptScreen->setdeckFarbe( 0x00000000 );
  458. hauptScreen->setOnTop( 1 );
  459. ladeAnimation->setSichtbar( 1 );
  460. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  461. {
  462. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  463. Sleep( 40 );
  464. deckAlpha += 15;
  465. }
  466. hauptScreen->setdeckFarbe( 255 << 24 );
  467. _render = 0;
  468. hauptScreen->lock();
  469. nachLogin->setAnzeige( NLANormal );
  470. hauptScreen->unlock();
  471. _render = 1;
  472. ladeAnimation->setSichtbar( 0 );
  473. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  474. {
  475. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  476. Sleep( 40 );
  477. deckAlpha -= 15;
  478. }
  479. hauptScreen->setdeckFarbe( 0 << 24 );
  480. hauptScreen->setOnTop( 0 );
  481. }
  482. break;
  483. case 23: // Editor betreten
  484. if( 1 )
  485. {
  486. hauptScreen->setdeckFarbe( 0x00000000 );
  487. hauptScreen->setOnTop( 1 );
  488. ladeAnimation->setSichtbar( 1 );
  489. for( unsigned char deckAlpha = 0; deckAlpha < 255; )
  490. {
  491. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  492. Sleep( 40 );
  493. deckAlpha += 15;
  494. }
  495. hauptScreen->setdeckFarbe( 255 << 24 );
  496. _render = 0;
  497. hauptScreen->lock();
  498. nachLogin->setAnzeige( NLAEditor );
  499. hauptScreen->unlock();
  500. _render = 1;
  501. ladeAnimation->setSichtbar( 0 );
  502. for( unsigned char deckAlpha = 255; deckAlpha > 0; )
  503. {
  504. hauptScreen->setdeckFarbe( deckAlpha << 24 );
  505. Sleep( 40 );
  506. deckAlpha -= 15;
  507. }
  508. hauptScreen->setdeckFarbe( 0 << 24 );
  509. hauptScreen->setOnTop( 0 );
  510. }
  511. break;
  512. }
  513. release();
  514. }
  515. // constant
  516. // Reference Counting
  517. AktionsThread *AktionsThread::getThis()
  518. {
  519. ref++;
  520. return this;
  521. }
  522. AktionsThread *AktionsThread::release()
  523. {
  524. ref--;
  525. if( !ref )
  526. delete this;
  527. return 0;
  528. }