FreundesListe.cpp 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158
  1. #include "FreundesListe.h"
  2. #include "..\..\Global\Variablen.h"
  3. #include "..\..\Global\Initialisierung.h"
  4. #include <Rahmen.h>
  5. #include <AlphaFeld.h>
  6. #include <MausEreignis.h>
  7. #include <Scroll.h>
  8. #include <Punkt.h>
  9. #include <DateiSystem.h>
  10. #include <Tooltip.h>
  11. // Inhalt der FreundData Klasse aus FreundesListe.h
  12. // Konstruktor
  13. FreundData::FreundData( int accountId, LRahmen *rahmen, AlphaFeld *auswahlBuffer, Schrift *zSchrift )
  14. : Thread()
  15. {
  16. Bild *entfernenBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
  17. Bild *ansehenBild = bilder->get( "data/client/bilder/chat.ltdb/ansehen.png" );
  18. Bild *nachrichtBild = bilder->get( "data/client/bilder/chat.ltdb/nachricht.png" );
  19. Bild *einladenBild = bilder->get( "data/client/bilder/chat.ltdb/neuerfreund.png" );
  20. this->accountId = accountId;
  21. this->rahmen = rahmen;
  22. this->auswahlBuffer = auswahlBuffer;
  23. name = new TextFeld();
  24. name->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  25. name->setSchriftZ( zSchrift->getThis() );
  26. name->setSchriftFarbe( 0xFFFFFFFF );
  27. name->setSchriftSize( 12 );
  28. name->setText( "" );
  29. name->setSize( 200, 20 );
  30. name->setPosition( 25, 1 );
  31. status = new TextFeld();
  32. status->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  33. status->setSchriftZ( zSchrift->getThis() );
  34. status->setSchriftFarbe( 0xFFFF0000 );
  35. status->setSchriftSize( 12 );
  36. status->setText( "offline" );
  37. status->setSize( 200, 20 );
  38. status->setPosition( 25, 24 );
  39. entfernen = initKnopf( 228, 49, 20, 20, 0, 0, "" );
  40. entfernen->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
  41. entfernen->setHintergrundBildZ( entfernenBild );
  42. entfernen->setHintergrundFarbe( 0 );
  43. initToolTip( entfernen, "Freund entfernen.", zSchrift, hauptScreen );
  44. ansehen = initKnopf( 208, 49, 20, 20, 0, 0, "" );
  45. ansehen->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
  46. ansehen->setHintergrundBildZ( ansehenBild );
  47. ansehen->setHintergrundFarbe( 0 );
  48. initToolTip( ansehen, "Account ansehen.", zSchrift, hauptScreen );
  49. nachricht = initKnopf( 188, 49, 20, 20, 0, 0, "" );
  50. nachricht->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
  51. nachricht->setHintergrundBildZ( nachrichtBild );
  52. nachricht->setHintergrundFarbe( 0 );
  53. initToolTip( nachricht, "Nachricht senden.", zSchrift, hauptScreen );
  54. einladen = initKnopf( 168, 49, 20, 20, 0, 0, "" );
  55. einladen->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
  56. einladen->setHintergrundBildZ( einladenBild );
  57. einladen->setHintergrundFarbe( 0 );
  58. initToolTip( einladen, "Spieler in Gruppe einladen.\nDies kann nur der Gruppen Administrator.", zSchrift, hauptScreen );
  59. online = 0;
  60. einladenSichtbar = 0;
  61. ausgewählt = 0;
  62. höhe = 0;
  63. animation = 1;
  64. auswahlAlpha = 0;
  65. tickVal = 0;
  66. rend = 0;
  67. start();
  68. }
  69. // Destruktor
  70. FreundData::~FreundData()
  71. {
  72. rahmen->release();
  73. auswahlBuffer = (AlphaFeld *)auswahlBuffer->release();
  74. name = (TextFeld *)name->release();
  75. status = (TextFeld *)status->release();
  76. entfernen = (Knopf *)entfernen->release();
  77. ansehen = (Knopf *)ansehen->release();
  78. nachricht = (Knopf *)nachricht->release();
  79. einladen = (Knopf *)einladen->release();
  80. }
  81. // nicht constant
  82. void FreundData::thread()
  83. {
  84. if( infoClient )
  85. {
  86. Text *n = infoClient->getSpielerName( accountId );
  87. name->setTextZ( n );
  88. }
  89. run = 0;
  90. }
  91. void FreundData::setName( char *txt )
  92. {
  93. name->setText( txt );
  94. rend = 1;
  95. }
  96. void FreundData::setStatus( char *txt )
  97. {
  98. status->setText( txt );
  99. rend = 1;
  100. }
  101. void FreundData::setOnline( bool online )
  102. {
  103. this->online = online;
  104. if( online )
  105. {
  106. status->setSchriftFarbe( 0xFF00FF00 );
  107. status->setText( "online" );
  108. }
  109. else
  110. {
  111. status->setSchriftFarbe( 0xFFFF0000 );
  112. status->setText( "offline" );
  113. }
  114. einladen->setStyle( Knopf::Style::Erlaubt, einladenSichtbar && online );
  115. rend = 1;
  116. }
  117. void FreundData::setAusgewählt( bool ausw )
  118. {
  119. if( animation != 3 )
  120. {
  121. ausgewählt = ausw;
  122. if( ausw )
  123. animation = 2;
  124. else
  125. animation = 1;
  126. }
  127. }
  128. void FreundData::remove()
  129. {
  130. animation = 3;
  131. }
  132. void FreundData::zeigeEinladeKnopf( bool zeigen )
  133. {
  134. einladenSichtbar = zeigen;
  135. einladen->setStyle( Knopf::Style::Erlaubt, einladenSichtbar && online );
  136. rend = 1;
  137. }
  138. void FreundData::doMausEreignis( MausEreignis & me )
  139. {
  140. if( animation != 3 )
  141. {
  142. bool tmp = 0;
  143. if( me.my > höhe || !ausgewählt )
  144. {
  145. tmp = me.verarbeitet;
  146. me.verarbeitet = 1;
  147. }
  148. char aktion = 0;
  149. bool vera = me.verarbeitet;
  150. nachricht->doMausEreignis( me );
  151. aktion = me.verarbeitet && !vera ? 1 : 0;
  152. ansehen->doMausEreignis( me );
  153. if( !aktion )
  154. aktion = me.verarbeitet && !vera ? 2 : 0;
  155. entfernen->doMausEreignis( me );
  156. if( !aktion )
  157. aktion = me.verarbeitet && !vera ? 3 : 0;
  158. einladen->doMausEreignis( me );
  159. if( !aktion )
  160. aktion = me.verarbeitet && !vera ? 4 : 0;
  161. if( me.my > höhe || !ausgewählt )
  162. {
  163. me.verarbeitet = tmp;
  164. return;
  165. }
  166. switch( aktion )
  167. {
  168. case 1:
  169. // Nachricht senden
  170. if( me.id == ME_RLinks )
  171. nachLogin->zChatLeiste()->addChat( accountId, 0 );
  172. break;
  173. case 2:
  174. // profil ansehen
  175. if( me.id == ME_RLinks )
  176. {
  177. if( nachLogin->zAccountAnsehenFenster()->setSpielerDetails( accountId, 2 ) )
  178. {
  179. MausEreignis me = { ME_RLinks, 0, 0, 0, 0, 0 };
  180. nachLogin->zTitelLeiste()->druckAccountAnsehen( me );
  181. }
  182. }
  183. break;
  184. case 3:
  185. // freund entfernen
  186. if( me.id == ME_RLinks )
  187. {
  188. int id = accountId;
  189. Text *nachricht = new Text( "Möchtest du deine Freundschaft mit " );
  190. nachricht->append( name->zText()->getText() );
  191. nachricht->append( " wirklich beenden?" );
  192. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Bist du dir Sicher?" ), nachricht, new Text( "ja" ),
  193. new Text( "abbrechen" ), [ id ]()
  194. {
  195. chatClient->freundschaftBeenden( id );
  196. } );
  197. }
  198. break;
  199. case 4: // In Gruppe einladen
  200. if( me.id == ME_RLinks )
  201. {
  202. if( !anmeldungClient )
  203. anmeldungClient = mainClient->createAnmeldungServerClient();
  204. if( !anmeldungClient )
  205. {
  206. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( mainClient->getLetzterFehler() ),
  207. new Text( "Ok" ), 0 );
  208. }
  209. if( anmeldungClient &&anmeldungClient->verbinde() )
  210. {
  211. if( !anmeldungClient->gruppeSpielerEinladen( accountId, nachLogin->zSpielenFenster()->getGruppeId() ) )
  212. {
  213. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( anmeldungClient->getLetzterFehler() ),
  214. new Text( "Ok" ), 0 );
  215. }
  216. anmeldungClient->trenne( 0 );
  217. }
  218. else
  219. {
  220. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( anmeldungClient->getLetzterFehler() ),
  221. new Text( "Ok" ), 0 );
  222. }
  223. }
  224. default:
  225. // nichts
  226. break;
  227. }
  228. }
  229. }
  230. bool FreundData::tick( double tickVal )
  231. {
  232. rend |= name->tick( tickVal );
  233. rend |= status->tick( tickVal );
  234. rend |= entfernen->tick( tickVal );
  235. rend |= ansehen->tick( tickVal );
  236. rend |= nachricht->tick( tickVal );
  237. rend |= einladen->tick( tickVal );
  238. this->tickVal += tickVal * 100;
  239. int val = (int)this->tickVal;
  240. if( val < 1 )
  241. {
  242. bool ret = rend;
  243. rend = 0;
  244. return ret;
  245. }
  246. if( val > 4 )
  247. val = 4;
  248. this->tickVal -= val;
  249. switch( animation )
  250. {
  251. case 1:
  252. if( höhe != 50 )
  253. {
  254. if( höhe > 50 )
  255. {
  256. höhe -= val;
  257. if( höhe < 50 )
  258. höhe = 50;
  259. }
  260. else
  261. {
  262. höhe += val;
  263. if( höhe > 50 )
  264. höhe = 50;
  265. }
  266. rend = 1;
  267. }
  268. else
  269. animation = 0;
  270. break;
  271. case 2:
  272. if( höhe != 70 )
  273. {
  274. höhe += val;
  275. if( höhe > 70 )
  276. höhe = 70;
  277. rend = 1;
  278. }
  279. else
  280. animation = 0;
  281. break;
  282. case 3:
  283. höhe -= val;
  284. if( höhe <= 0 )
  285. {
  286. nachLogin->zFreundesListe()->removeMember( this ); // delete this
  287. return 1;
  288. }
  289. rend = 1;
  290. break;
  291. }
  292. if( ausgewählt && auswahlAlpha < 50 )
  293. {
  294. if( auswahlAlpha + val > 50 )
  295. auswahlAlpha = 50;
  296. else
  297. auswahlAlpha += val;
  298. rend = 1;
  299. }
  300. else if( !ausgewählt && auswahlAlpha > 0 )
  301. {
  302. if( auswahlAlpha - val < 0 )
  303. auswahlAlpha = 0;
  304. else
  305. auswahlAlpha -= val;
  306. rend = 1;
  307. }
  308. bool ret = rend;
  309. rend = 0;
  310. return ret;
  311. }
  312. void FreundData::render( int yPos, Bild & zRObj )
  313. {
  314. int br = 250;
  315. if( !zRObj.setDrawOptions( 0, yPos, br, höhe ) )
  316. return;
  317. rahmen->setSize( br, höhe );
  318. rahmen->render( zRObj );
  319. int rbr = rahmen->getRBreite();
  320. if( !zRObj.setDrawOptions( rbr, rbr, br - rbr * 2, höhe - rbr * 2 ) )
  321. {
  322. zRObj.releaseDrawOptions();
  323. return;
  324. }
  325. if( auswahlAlpha > 0 )
  326. {
  327. auswahlBuffer->setFarbe( 0x0000FF00 | ( ( (int)auswahlAlpha << 24 ) & 0xFF000000 ) );
  328. auswahlBuffer->setSize( br - rbr * 2, höhe - rbr * 2 );
  329. auswahlBuffer->render( zRObj );
  330. }
  331. name->render( zRObj );
  332. status->render( zRObj );
  333. einladen->render( zRObj );
  334. nachricht->render( zRObj );
  335. ansehen->render( zRObj );
  336. entfernen->render( zRObj );
  337. zRObj.releaseDrawOptions();
  338. zRObj.releaseDrawOptions();
  339. }
  340. // constant
  341. bool FreundData::istOnline() const
  342. {
  343. return online;
  344. }
  345. bool FreundData::istAusgewählt() const
  346. {
  347. return ausgewählt;
  348. }
  349. char *FreundData::zName() const
  350. {
  351. return name->zText()->getText();
  352. }
  353. Text *FreundData::getName() const
  354. {
  355. return name->getText();
  356. }
  357. char *FreundData::zStatus() const
  358. {
  359. return status->zText()->getText();
  360. }
  361. Text *FreundData::getStatus() const
  362. {
  363. return status->getText();
  364. }
  365. int FreundData::getAccountId() const
  366. {
  367. return accountId;
  368. }
  369. int FreundData::getHeight() const
  370. {
  371. return höhe;
  372. }
  373. // Inhalt der FreundesListeObj Klasse aus FreundesListe.h
  374. // Konstruktor
  375. FreundesListeObj::FreundesListeObj( Schrift * zSchrift )
  376. : Zeichnung()
  377. {
  378. members = new RCArray< FreundData >();
  379. schrift = zSchrift->getThis();
  380. memberRahmen = new LRahmen();
  381. memberRahmen->setFarbe( 0xFFFFFFFF );
  382. memberRahmen->setRamenBreite( 1 );
  383. auswahlBuffer = new AlphaFeld();
  384. auswahlBuffer->setStrength( -2 );
  385. auswahlBuffer->setPosition( 1, 1 );
  386. vsb = new VScrollBar();
  387. vsb->setKlickScroll( 10 );
  388. bildschirmGröße = BildschirmGröße();
  389. vsb->update( 0, bildschirmGröße.y - 200 );
  390. memberNummer = 0;
  391. einladenSichtbar = 0;
  392. }
  393. // Destruktor
  394. FreundesListeObj::~FreundesListeObj()
  395. {
  396. members = members->release();
  397. schrift = schrift->release();
  398. memberRahmen->release();
  399. auswahlBuffer = (AlphaFeld *)auswahlBuffer->release();
  400. vsb = (VScrollBar *)vsb->release();
  401. }
  402. // nicht constant
  403. void FreundesListeObj::addMember( int accountId )
  404. {
  405. FreundData *tmp = new FreundData( accountId, (LRahmen *)memberRahmen->getThis(), (AlphaFeld *)auswahlBuffer->getThis(), schrift );
  406. members->add( tmp, memberNummer );
  407. memberNummer++;
  408. if( einladenSichtbar )
  409. tmp->zeigeEinladeKnopf( 1 );
  410. rend = 1;
  411. }
  412. void FreundesListeObj::removeMember( int accountId )
  413. {
  414. for( int i = 0; i < memberNummer; i++ )
  415. {
  416. FreundData *tmp = members->z( i );
  417. if( tmp->getAccountId() == accountId )
  418. {
  419. tmp->remove();
  420. break;
  421. }
  422. }
  423. }
  424. void FreundesListeObj::removeMember( FreundData * member )
  425. {
  426. for( int i = 0; i < memberNummer; i++ )
  427. {
  428. if( members->z( i ) == member )
  429. {
  430. members->remove( i );
  431. memberNummer--;
  432. rend = 1;
  433. break;
  434. }
  435. }
  436. }
  437. void FreundesListeObj::removeAll()
  438. {
  439. members->leeren();
  440. memberNummer = 0;
  441. rend = 1;
  442. }
  443. void FreundesListeObj::setName( int accountId, char *txt )
  444. {
  445. for( int i = 0; i < memberNummer; i++ )
  446. {
  447. FreundData *tmp = members->z( i );
  448. if( tmp->getAccountId() == accountId )
  449. {
  450. tmp->setName( txt );
  451. break;
  452. }
  453. }
  454. }
  455. void FreundesListeObj::setStatus( int accountId, char *txt )
  456. {
  457. for( int i = 0; i < memberNummer; i++ )
  458. {
  459. FreundData *tmp = members->z( i );
  460. if( tmp->getAccountId() == accountId )
  461. {
  462. tmp->setStatus( txt );
  463. break;
  464. }
  465. }
  466. }
  467. void FreundesListeObj::setOnline( int accountId, bool online )
  468. {
  469. for( int i = 0; i < memberNummer; i++ )
  470. {
  471. FreundData *tmp = members->z( i );
  472. if( tmp->getAccountId() == accountId )
  473. {
  474. tmp->setOnline( online );
  475. break;
  476. }
  477. }
  478. }
  479. void FreundesListeObj::zeigeEinladeKnopf( bool zeigen )
  480. {
  481. einladenSichtbar = zeigen;
  482. for( int i = 0; i < memberNummer; i++ )
  483. {
  484. FreundData *tmp = members->z( i );
  485. tmp->zeigeEinladeKnopf( zeigen );
  486. }
  487. }
  488. bool FreundesListeObj::tick( double tickVal )
  489. {
  490. rend |= vsb->getRend();
  491. rend |= nachLogin->zFreundesListe()->tick( tickVal );
  492. for( int i = 0; i < memberNummer; i++ )
  493. {
  494. FreundData *tmp = members->z( i );
  495. if( tmp )
  496. rend |= tmp->tick( tickVal );
  497. }
  498. bool ret = rend;
  499. rend = 0;
  500. return ret;
  501. }
  502. void FreundesListeObj::doMausEreignis( MausEreignis & me )
  503. {
  504. int my = me.my;
  505. me.my -= pos.y;
  506. if( me.mx <= 250 && me.mx > 0 && me.my >= 0 )
  507. {
  508. me.my += vsb->getScroll();
  509. for( int i = 0; i < memberNummer; i++ )
  510. {
  511. FreundData *tmp = members->z( i );
  512. if( tmp )
  513. {
  514. if( me.my > 0 && me.my < tmp->getHeight() )
  515. tmp->setAusgewählt( 1 );
  516. else
  517. tmp->setAusgewählt( 0 );
  518. tmp->doMausEreignis( me );
  519. me.my -= tmp->getHeight();
  520. }
  521. }
  522. me.my -= vsb->getScroll();
  523. }
  524. else
  525. {
  526. me.my += vsb->getScroll();
  527. for( int i = 0; i < memberNummer; i++ )
  528. {
  529. FreundData *tmp = members->z( i );
  530. if( tmp )
  531. {
  532. tmp->setAusgewählt( 0 );
  533. tmp->doMausEreignis( me );
  534. me.my -= tmp->getHeight();
  535. }
  536. }
  537. me.my -= vsb->getScroll();
  538. }
  539. me.my = my;
  540. vsb->doMausMessage( 250, pos.y, 20, gr.y, me );
  541. }
  542. void FreundesListeObj::render( Bild & zrObj )
  543. {
  544. if( !zrObj.setDrawOptions( pos.x, pos.y, gr.x, gr.y ) )
  545. return;
  546. int höhe = 0;
  547. for( int i = 0; i < memberNummer; i++ )
  548. {
  549. FreundData *tmp = members->z( i );
  550. tmp->render( höhe, zrObj );
  551. höhe += tmp->getHeight();
  552. }
  553. vsb->update( höhe, gr.y );
  554. vsb->render( 250, 0, 20, gr.y, zrObj );
  555. zrObj.releaseDrawOptions();
  556. }
  557. // constant
  558. bool FreundesListeObj::istFreund( int accId ) const
  559. {
  560. for( int i = 0; i < memberNummer; i++ )
  561. {
  562. FreundData *tmp = members->z( i );
  563. if( tmp->getAccountId() == accId )
  564. return 1;
  565. }
  566. return 0;
  567. }
  568. // Inhalt der FreundesListe Klasse aus FreundesListe.h
  569. // Konstruktor
  570. FreundesListe::FreundesListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
  571. : Thread()
  572. {
  573. minimierenBild = bilder->get( "data/client/bilder/chat.ltdb/minimieren.png" );
  574. maximierenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
  575. Bild *neuerFreundBild = bilder->get( "data/client/bilder/chat.ltdb/neuerfreund.png" );
  576. bildschirmGröße = BildschirmGröße();
  577. fenster = new Fenster();
  578. fenster->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::BodyHintergrund );
  579. fenster->setSize( 270, 20 );
  580. fenster->setRFarbe( 0xFFFFFFFF );
  581. fenster->setKBgFarbe( 0xFF000000 );
  582. fenster->setPosition( -250, 100 );
  583. minMax = initKnopf( 249, 1, 20, 20, 0, 0, "" );
  584. minMax->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
  585. minMax->setHintergrundBildZ( minimierenBild->getThis() );
  586. minMax->setMausEreignisParameter( this );
  587. minMax->setMausEreignis( freundesListeMinMaxME );
  588. initToolTip( minMax, "Freundes Leiste minimieren.", zSchrift, hauptScreen );
  589. fenster->addMember( minMax->getThis() );
  590. überschrift = initTextFeld( 0, 5, 250, 25, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center | TextFeld::Style::Sichtbar, "Freunde" );
  591. überschrift->setSchriftSize( 15 );
  592. fenster->addMember( überschrift->getThis() );
  593. accountName = initTextFeld( 25, 40, 200, 20, zSchrift, TextFeld::Style::TextFeld | TextFeld::Style::Sichtbar, "" );
  594. accountName->setTastaturEreignisParameter( this );
  595. accountName->setTastaturEreignis( freundesListeNameTE );
  596. initToolTip( accountName, "Mit diesem Namen bist du bei anderen Spielern sichtbar.", zSchrift, hauptScreen );
  597. fenster->addMember( accountName->getThis() );
  598. LTDBDatei * chatBilder = new LTDBDatei();
  599. chatBilder->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
  600. chatBilder->leseDaten( 0 );
  601. Bild * neuerChatBild = chatBilder->laden( 0, new Text( "neuerchat.png" ) );
  602. chatBilder = chatBilder->release();
  603. neuerFreund = initKnopf( 5, 75, 20, 20, 0, 0, "" );
  604. neuerFreund->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  605. neuerFreund->setHintergrundBildZ( neuerFreundBild );
  606. neuerFreund->setMausEreignisParameter( this );
  607. neuerFreund->setMausEreignis( freundesListeNeuerFreundME );
  608. initToolTip( neuerFreund, "Freundesanfrage senden.", zSchrift, hauptScreen );
  609. fenster->addMember( neuerFreund->getThis() );
  610. neuerChat = initKnopf( 30, 75, 20, 20, 0, 0, "" );
  611. neuerChat->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  612. neuerChat->setHintergrundBildZ( neuerChatBild );
  613. neuerChat->setMausEreignisParameter( this );
  614. neuerChat->setMausEreignis( freundesListeNeuerChatME );
  615. initToolTip( neuerChat, "Nachricht senden.", zSchrift, hauptScreen );
  616. fenster->addMember( neuerChat->getThis() );
  617. neuerFreundFenster = initFenster( 0, 100, 270, 0, 0, Fenster::Style::Erlaubt | Fenster::Style::Rahmen, 0 );
  618. neuerFreundSpielerName = initTextFeld( 5, 5, 235, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::TextFeld, "Spieler Name" );
  619. neuerFreundSpielerName->setTastaturEreignisParameter( this );
  620. neuerFreundSpielerName->setTastaturEreignis( freundesListeNeuerFreundSpielerNameTE );
  621. initToolTip( neuerFreundSpielerName, "Name des Spielers an den eine Freundesanfrage gesendet werden soll.", zSchrift, hauptScreen );
  622. neuerFreundFenster->addMember( neuerFreundSpielerName->getThis() );
  623. neuerFreundFertig = initKnopf( 245, 5, 20, 20, 0, 0, "" );
  624. neuerFreundFertig->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  625. neuerFreundFertig->setHintergrundBildZ( maximierenBild->getThis() );
  626. neuerFreundFertig->setMausEreignisParameter( this );
  627. neuerFreundFertig->setMausEreignis( freundesListeNeuerFreundFertigME );
  628. initToolTip( neuerFreundFertig, "Diesem Spieler eine Freundesanfrage senden.", zSchrift, hauptScreen );
  629. neuerFreundFenster->addMember( neuerFreundFertig->getThis() );
  630. fenster->addMember( neuerFreundFenster->getThis() );
  631. neuerChatFenster = initFenster( 0, 100, 270, 0, 0, Fenster::Style::Erlaubt | Fenster::Style::Rahmen, 0 );
  632. neuerChatName = initTextFeld( 5, 5, 235, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::TextFeld, "Spieler Name" );
  633. neuerChatName->setTastaturEreignisParameter( this );
  634. neuerChatName->setTastaturEreignis( freundesListeNeuerChatNameTE );
  635. initToolTip( neuerChatName, "Name des Spielers an den eine Nachricht gesendet werden soll.", zSchrift, hauptScreen );
  636. neuerChatFenster->addMember( neuerChatName->getThis() );
  637. neuerChatFertig = initKnopf( 245, 5, 20, 20, 0, 0, "" );
  638. neuerChatFertig->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  639. neuerChatFertig->setHintergrundBildZ( maximierenBild->getThis() );
  640. neuerChatFertig->setMausEreignisParameter( this );
  641. neuerChatFertig->setMausEreignis( freundesListeNeuerChatFertigME );
  642. initToolTip( neuerChatFertig, "Diesem Spieler eine Nachricht senden.", zSchrift, hauptScreen );
  643. neuerChatFenster->addMember( neuerChatFertig->getThis() );
  644. neuesChatroomName = initTextFeld( 5, 30, 235, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::TextFeld, "Chatroom Name" );
  645. neuesChatroomName->setTastaturEreignisParameter( this );
  646. neuesChatroomName->setTastaturEreignis( freundesListeNeuesChatroomNameTE );
  647. initToolTip( neuesChatroomName, "Name des Chatroom dem du beitreten möchtest.", zSchrift, hauptScreen );
  648. neuerChatFenster->addMember( neuesChatroomName->getThis() );
  649. neuesChatroomFertig = initKnopf( 245, 30, 20, 20, 0, 0, "" );
  650. neuesChatroomFertig->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  651. neuesChatroomFertig->setHintergrundBildZ( maximierenBild->getThis() );
  652. neuesChatroomFertig->setMausEreignisParameter( this );
  653. neuesChatroomFertig->setMausEreignis( freundesListeNeuesChatroomFertigME );
  654. initToolTip( neuesChatroomFertig, "Chatroom erstellen oder beitreten.", zSchrift, hauptScreen );
  655. neuerChatFenster->addMember( neuesChatroomFertig->getThis() );
  656. fenster->addMember( neuerChatFenster->getThis() );
  657. freundesListe = new FreundesListeObj( zSchrift );
  658. freundesListe->setPosition( 0, 100 );
  659. freundesListe->setSize( 270, bildschirmGröße.y - 200 );
  660. fenster->addMember( freundesListe->getThis() );
  661. zNachLoginFenster->addMember( fenster->getThis() );
  662. animation = 1;
  663. tickVal = 0;
  664. neuerFreundSichtbar = 0;
  665. neuerChatSichtbar = 0;
  666. rend = 0;
  667. start();
  668. }
  669. // Destruktor
  670. FreundesListe::~FreundesListe()
  671. {
  672. ende();
  673. fenster = (Fenster *)fenster->release();
  674. minimierenBild = minimierenBild->release();
  675. maximierenBild = maximierenBild->release();
  676. minMax = (Knopf *)minMax->release();
  677. überschrift = (TextFeld *)überschrift->release();
  678. accountName = (TextFeld *)accountName->release();
  679. freundesListe = (FreundesListeObj *)freundesListe->release();
  680. neuerFreund = (Knopf *)neuerFreund->release();
  681. neuerChat = (Knopf *)neuerChat->release();
  682. neuerFreundFenster = (Fenster *)neuerFreundFenster->release();
  683. neuerFreundSpielerName = (TextFeld *)neuerFreundSpielerName->release();
  684. neuerFreundFertig = (Knopf *)neuerFreundFertig->release();
  685. neuerChatFenster = (Fenster *)neuerChatFenster->release();
  686. neuerChatName = (TextFeld *)neuerChatName->release();
  687. neuerChatFertig = (Knopf *)neuerChatFertig->release();
  688. neuesChatroomName = (TextFeld *)neuesChatroomName->release();
  689. neuesChatroomFertig = (Knopf *)neuesChatroomFertig->release();
  690. }
  691. // nicht constant
  692. void FreundesListe::addMember( int accountId )
  693. {
  694. freundesListe->addMember( accountId );
  695. }
  696. void FreundesListe::removeMember( int accountId )
  697. {
  698. freundesListe->removeMember( accountId );
  699. }
  700. void FreundesListe::removeMember( FreundData * member )
  701. {
  702. freundesListe->removeMember( member );
  703. }
  704. void FreundesListe::removeAll()
  705. {
  706. freundesListe->removeAll();
  707. }
  708. void FreundesListe::setName( int accountId, char *txt )
  709. {
  710. freundesListe->setName( accountId, txt );
  711. }
  712. void FreundesListe::setStatus( int accountId, char *txt )
  713. {
  714. freundesListe->setStatus( accountId, txt );
  715. }
  716. void FreundesListe::setOnline( int accountId, bool online )
  717. {
  718. freundesListe->setOnline( accountId, online );
  719. }
  720. void FreundesListe::setAnimation( int animation )
  721. {
  722. this->animation = animation;
  723. }
  724. void FreundesListe::thread()
  725. {
  726. bool err = 1;
  727. if( infoClient && loginClient )
  728. {
  729. Text *name = infoClient->getSpielerName( loginClient->getAccountId() );
  730. if( name )
  731. {
  732. accountName->setText( name->getText() );
  733. name->release();
  734. err = 0;
  735. }
  736. }
  737. if( err &&nachLogin->zNachrichtenListe() )
  738. {
  739. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
  740. new Text( "Dein Accountname konnte nicht ermittelt werden." ),
  741. new Text( "Ok" ),
  742. 0 );
  743. }
  744. err = 0;
  745. if( ( !chatClient || !chatClient->freundesListeAnfragen() ) && nachLogin->zNachrichtenListe() )
  746. {
  747. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
  748. new Text( "Deine Freunde konnten nicht geladen werden." ),
  749. new Text( "Ok" ),
  750. 0 );
  751. }
  752. run = 0;
  753. }
  754. void FreundesListe::zeigeEinladeKnopf( bool zeigen )
  755. {
  756. freundesListe->zeigeEinladeKnopf( zeigen );
  757. }
  758. bool FreundesListe::tick( double tickVal )
  759. {
  760. this->tickVal += tickVal * 400;
  761. int val = (int)this->tickVal;
  762. if( val < 1 )
  763. {
  764. bool ret = rend;
  765. rend = 0;
  766. return ret;
  767. }
  768. if( val > 14 )
  769. val = 14;
  770. this->tickVal -= val;
  771. switch( animation )
  772. {
  773. case 1:
  774. if( fenster->getX() < 0 )
  775. {
  776. fenster->setPosition( fenster->getX() + val, fenster->getY() );
  777. if( fenster->getX() > 0 )
  778. fenster->setPosition( 0, fenster->getY() );
  779. }
  780. else if( fenster->getHeight() < bildschirmGröße.y - 100 )
  781. {
  782. fenster->setSize( fenster->getBreite(), fenster->getHeight() + val );
  783. if( fenster->getHeight() > bildschirmGröße.y - 100 )
  784. fenster->setSize( fenster->getBreite(), bildschirmGröße.y - 100 );
  785. }
  786. else
  787. animation = 0;
  788. rend = 1;
  789. break;
  790. case 2:
  791. if( fenster->getHeight() > 20 )
  792. {
  793. fenster->setSize( fenster->getBreite(), fenster->getHeight() - val );
  794. if( fenster->getHeight() < 20 )
  795. fenster->setSize( fenster->getBreite(), 20 );
  796. }
  797. else if( fenster->getX() > -250 )
  798. {
  799. fenster->setPosition( fenster->getX() - val, fenster->getY() );
  800. if( fenster->getX() < -250 )
  801. fenster->setPosition( -250, fenster->getY() );
  802. }
  803. else
  804. animation = 0;
  805. rend = 1;
  806. break;
  807. }
  808. if( neuerFreundSichtbar )
  809. {
  810. if( neuerFreundFenster->getHeight() != 30 && neuerChatFenster->hatStyleNicht( Fenster::Style::Sichtbar ) )
  811. {
  812. neuerFreundFenster->addStyle( Fenster::Style::Sichtbar );
  813. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), neuerFreundFenster->getHeight() + val );
  814. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() + val );
  815. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() - val );
  816. if( neuerFreundFenster->getHeight() > 30 )
  817. {
  818. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), 30 );
  819. freundesListe->setPosition( freundesListe->getX(), 130 );
  820. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 230 );
  821. }
  822. rend = 1;
  823. }
  824. }
  825. else
  826. {
  827. if( neuerFreundFenster->hatStyle( Fenster::Style::Sichtbar ) )
  828. {
  829. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), neuerFreundFenster->getHeight() - val );
  830. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() - val );
  831. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() + val );
  832. if( neuerFreundFenster->getHeight() < 0 )
  833. {
  834. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), 0 );
  835. neuerFreundFenster->removeStyle( Fenster::Style::Sichtbar );
  836. freundesListe->setPosition( freundesListe->getX(), 100 );
  837. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 200 );
  838. }
  839. rend = 1;
  840. }
  841. }
  842. if( neuerChatSichtbar )
  843. {
  844. if( neuerChatFenster->getHeight() != 55 && neuerFreundFenster->hatStyleNicht( Fenster::Style::Sichtbar ) )
  845. {
  846. neuerChatFenster->addStyle( Fenster::Style::Sichtbar );
  847. neuerChatFenster->setSize( neuerChatFenster->getBreite(), neuerChatFenster->getHeight() + val );
  848. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() + val );
  849. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() - val );
  850. if( neuerChatFenster->getHeight() > 55 )
  851. {
  852. neuerChatFenster->setSize( neuerChatFenster->getBreite(), 55 );
  853. freundesListe->setPosition( freundesListe->getX(), 155 );
  854. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 255 );
  855. }
  856. rend = 1;
  857. }
  858. }
  859. else
  860. {
  861. if( neuerChatFenster->hatStyle( Fenster::Style::Sichtbar ) )
  862. {
  863. neuerChatFenster->setSize( neuerChatFenster->getBreite(), neuerChatFenster->getHeight() - val );
  864. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() - val );
  865. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() + val );
  866. if( neuerChatFenster->getHeight() < 0 )
  867. {
  868. neuerChatFenster->setSize( neuerChatFenster->getBreite(), 0 );
  869. neuerChatFenster->removeStyle( Fenster::Style::Sichtbar );
  870. freundesListe->setPosition( freundesListe->getX(), 100 );
  871. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 200 );
  872. }
  873. rend = 1;
  874. }
  875. }
  876. bool ret = rend;
  877. rend = 0;
  878. return ret;
  879. }
  880. bool FreundesListe::druckMinMax( MausEreignis & me )
  881. {
  882. if( me.id == ME_RLinks )
  883. {
  884. if( minMax->zHintergrundBild() == minimierenBild )
  885. {
  886. animation = 2;
  887. minMax->setHintergrundBildZ( maximierenBild->getThis() );
  888. // TODO minMax->zToolTip()->setText( "Freundes Leiste maximieren." );
  889. }
  890. else
  891. {
  892. animation = 1;
  893. minMax->setHintergrundBildZ( minimierenBild->getThis() );
  894. // TODO minMax->zToolTip()->setText( "Freundes Leiste minimieren." );
  895. }
  896. }
  897. return 1;
  898. }
  899. bool FreundesListe::druckName( TastaturEreignis & te )
  900. {
  901. if( te.id == TE_Release && te.taste == T_Enter )
  902. chatClient->accountNameÄndern( accountName->zText()->getText() );
  903. return 1;
  904. }
  905. bool FreundesListe::druckNeuerFreund( MausEreignis & me )
  906. {
  907. if( me.id == ME_RLinks )
  908. {
  909. neuerChatSichtbar = 0;
  910. neuerFreundSichtbar = !neuerFreundSichtbar;
  911. }
  912. return 1;
  913. }
  914. bool FreundesListe::druckNeuerChat( MausEreignis & me )
  915. {
  916. if( me.id == ME_RLinks )
  917. {
  918. neuerFreundSichtbar = 0;
  919. neuerChatSichtbar = !neuerChatSichtbar;
  920. }
  921. return 1;
  922. }
  923. bool FreundesListe::druckNeuerFreundSpielerName( TastaturEreignis & te )
  924. {
  925. if( !neuerFreundSichtbar )
  926. return 0;
  927. if( te.id == TE_Release && te.taste == T_Enter )
  928. {
  929. MausEreignis me = { ME_RLinks, 0, 0, 0 };
  930. druckNeuerFreundFertig( me );
  931. }
  932. return 1;
  933. }
  934. bool FreundesListe::druckNeuerFreundFertig( MausEreignis & me )
  935. {
  936. if( !neuerFreundSichtbar )
  937. return 0;
  938. if( me.id == ME_RLinks )
  939. {
  940. if( neuerFreundSpielerName->zText()->getLength() )
  941. {
  942. int accountId = infoClient->getAccountId( neuerFreundSpielerName->zText()->getText() );
  943. if( accountId )
  944. {
  945. if( chatClient->freundesAnfrage( accountId ) )
  946. {
  947. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Freundesanfrage" ), new Text( "Es wurde eine Anfrage an den Spieler gesendet." ),
  948. new Text( "Ok" ), 0 );
  949. neuerFreundSichtbar = 0;
  950. }
  951. }
  952. else
  953. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Der Spieler wurde nicht gefunden." ),
  954. new Text( "Ok" ), 0 );
  955. }
  956. }
  957. return 1;
  958. }
  959. bool FreundesListe::druckNeuerChatName( TastaturEreignis & te )
  960. {
  961. if( !neuerChatSichtbar )
  962. return 0;
  963. if( te.id == TE_Release && te.taste == T_Enter )
  964. {
  965. MausEreignis me = { ME_RLinks, 0, 0, 0 };
  966. druckNeuerChatFertig( me );
  967. }
  968. return 1;
  969. }
  970. bool FreundesListe::druckNeuerChatFertig( MausEreignis & me )
  971. {
  972. if( !neuerChatSichtbar )
  973. return 0;
  974. if( me.id == ME_RLinks )
  975. {
  976. if( neuerChatName->zText()->getLength() )
  977. {
  978. int accountId = infoClient->getAccountId( neuerChatName->zText()->getText() );
  979. if( accountId )
  980. {
  981. nachLogin->zChatLeiste()->addChat( accountId, 0 );
  982. neuerChatSichtbar = 0;
  983. }
  984. else
  985. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Der Spieler wurde nicht gefunden." ),
  986. new Text( "Ok" ), 0 );
  987. }
  988. }
  989. return 1;
  990. }
  991. bool FreundesListe::druckNeuesChatroomName( TastaturEreignis & te )
  992. {
  993. if( !neuerChatSichtbar )
  994. return 0;
  995. if( te.id == TE_Release && te.taste == T_Enter )
  996. {
  997. MausEreignis me = { ME_RLinks, 0, 0, 0 };
  998. druckNeuesChatroomFertig( me );
  999. }
  1000. return 1;
  1001. }
  1002. bool FreundesListe::druckNeuesChatroomFertig( MausEreignis & me )
  1003. {
  1004. if( !neuerChatSichtbar )
  1005. return 0;
  1006. if( me.id == ME_RLinks )
  1007. {
  1008. if( neuesChatroomName->zText()->getLength() )
  1009. {
  1010. int chatroomId = infoClient->getChatroomId( neuesChatroomName->zText()->getText() );
  1011. if( chatroomId )
  1012. {
  1013. if( chatClient->chatroomBetreten( chatroomId ) )
  1014. {
  1015. nachLogin->zChatLeiste()->addChat( 0, chatroomId );
  1016. neuerChatSichtbar = 0;
  1017. }
  1018. }
  1019. else
  1020. {
  1021. chatroomId = chatClient->chatroomErstellen( neuesChatroomName->zText()->getText() );
  1022. if( chatroomId )
  1023. {
  1024. nachLogin->zChatLeiste()->addChat( 0, chatroomId );
  1025. neuerChatSichtbar = 0;
  1026. }
  1027. }
  1028. }
  1029. }
  1030. return 1;
  1031. }
  1032. // constant
  1033. bool FreundesListe::istFreund( int accId ) const
  1034. {
  1035. return freundesListe->istFreund( accId );
  1036. }
  1037. // Nachrichten
  1038. bool freundesListeMinMaxME( void *p, void *obj, MausEreignis me )
  1039. {
  1040. return ( (FreundesListe *)p )->druckMinMax( me );
  1041. }
  1042. bool freundesListeNameTE( void *p, void *obj, TastaturEreignis te )
  1043. {
  1044. return ( (FreundesListe *)p )->druckName( te );
  1045. }
  1046. bool freundesListeNeuerFreundME( void *p, void *obj, MausEreignis me )
  1047. {
  1048. return ( (FreundesListe *)p )->druckNeuerFreund( me );
  1049. }
  1050. bool freundesListeNeuerChatME( void *p, void *obj, MausEreignis me )
  1051. {
  1052. return ( (FreundesListe *)p )->druckNeuerChat( me );
  1053. }
  1054. bool freundesListeNeuerFreundSpielerNameTE( void *p, void *obj, TastaturEreignis te )
  1055. {
  1056. return ( (FreundesListe *)p )->druckNeuerFreundSpielerName( te );
  1057. }
  1058. bool freundesListeNeuerFreundFertigME( void *p, void *obj, MausEreignis me )
  1059. {
  1060. return ( (FreundesListe *)p )->druckNeuerFreundFertig( me );
  1061. }
  1062. bool freundesListeNeuerChatNameTE( void *p, void *obj, TastaturEreignis te )
  1063. {
  1064. return ( (FreundesListe *)p )->druckNeuerChatName( te );
  1065. }
  1066. bool freundesListeNeuerChatFertigME( void *p, void *obj, MausEreignis me )
  1067. {
  1068. return ( (FreundesListe *)p )->druckNeuerChatFertig( me );
  1069. }
  1070. bool freundesListeNeuesChatroomNameTE( void *p, void *obj, TastaturEreignis te )
  1071. {
  1072. return ( (FreundesListe *)p )->druckNeuesChatroomName( te );
  1073. }
  1074. bool freundesListeNeuesChatroomFertigME( void *p, void *obj, MausEreignis me )
  1075. {
  1076. return ( (FreundesListe *)p )->druckNeuesChatroomFertig( me );
  1077. }