FreundesListe.cpp 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165
  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. fenster = (Fenster *)fenster->release();
  673. minimierenBild = minimierenBild->release();
  674. maximierenBild = maximierenBild->release();
  675. minMax = (Knopf *)minMax->release();
  676. überschrift = (TextFeld *)überschrift->release();
  677. accountName = (TextFeld *)accountName->release();
  678. freundesListe = (FreundesListeObj *)freundesListe->release();
  679. neuerFreund = (Knopf *)neuerFreund->release();
  680. neuerChat = (Knopf *)neuerChat->release();
  681. neuerFreundFenster = (Fenster *)neuerFreundFenster->release();
  682. neuerFreundSpielerName = (TextFeld *)neuerFreundSpielerName->release();
  683. neuerFreundFertig = (Knopf *)neuerFreundFertig->release();
  684. neuerChatFenster = (Fenster *)neuerChatFenster->release();
  685. neuerChatName = (TextFeld *)neuerChatName->release();
  686. neuerChatFertig = (Knopf *)neuerChatFertig->release();
  687. neuesChatroomName = (TextFeld *)neuesChatroomName->release();
  688. neuesChatroomFertig = (Knopf *)neuesChatroomFertig->release();
  689. }
  690. // nicht constant
  691. void FreundesListe::addMember( int accountId )
  692. {
  693. freundesListe->addMember( accountId );
  694. }
  695. void FreundesListe::removeMember( int accountId )
  696. {
  697. freundesListe->removeMember( accountId );
  698. }
  699. void FreundesListe::removeMember( FreundData * member )
  700. {
  701. freundesListe->removeMember( member );
  702. }
  703. void FreundesListe::removeAll()
  704. {
  705. freundesListe->removeAll();
  706. }
  707. void FreundesListe::setName( int accountId, char *txt )
  708. {
  709. freundesListe->setName( accountId, txt );
  710. }
  711. void FreundesListe::setStatus( int accountId, char *txt )
  712. {
  713. freundesListe->setStatus( accountId, txt );
  714. }
  715. void FreundesListe::setOnline( int accountId, bool online )
  716. {
  717. freundesListe->setOnline( accountId, online );
  718. }
  719. void FreundesListe::setAnimation( int animation )
  720. {
  721. this->animation = animation;
  722. }
  723. void FreundesListe::thread()
  724. {
  725. bool err = 1;
  726. if( infoClient && loginClient )
  727. {
  728. Text *name = infoClient->getSpielerName( loginClient->getAccountId() );
  729. if( name )
  730. {
  731. accountName->setText( name->getText() );
  732. name->release();
  733. err = 0;
  734. }
  735. }
  736. if( err &&nachLogin->zNachrichtenListe() )
  737. {
  738. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
  739. new Text( "Dein Accountname konnte nicht ermittelt werden." ),
  740. new Text( "Ok" ),
  741. 0 );
  742. }
  743. err = 0;
  744. if( ( !chatClient || !chatClient->freundesListeAnfragen() ) && nachLogin->zNachrichtenListe() )
  745. {
  746. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
  747. new Text( "Deine Freunde konnten nicht geladen werden." ),
  748. new Text( "Ok" ),
  749. 0 );
  750. }
  751. run = 0;
  752. }
  753. void FreundesListe::zeigeEinladeKnopf( bool zeigen )
  754. {
  755. freundesListe->zeigeEinladeKnopf( zeigen );
  756. }
  757. bool FreundesListe::tick( double tickVal )
  758. {
  759. this->tickVal += tickVal * 400;
  760. int val = (int)this->tickVal;
  761. if( val < 1 )
  762. {
  763. bool ret = rend;
  764. rend = 0;
  765. return ret;
  766. }
  767. if( val > 14 )
  768. val = 14;
  769. this->tickVal -= val;
  770. switch( animation )
  771. {
  772. case 1:
  773. if( fenster->getX() < 0 )
  774. {
  775. fenster->setPosition( fenster->getX() + val, fenster->getY() );
  776. if( fenster->getX() > 0 )
  777. fenster->setPosition( 0, fenster->getY() );
  778. }
  779. else if( fenster->getHeight() < bildschirmGröße.y - 100 )
  780. {
  781. fenster->setSize( fenster->getBreite(), fenster->getHeight() + val );
  782. if( fenster->getHeight() > bildschirmGröße.y - 100 )
  783. fenster->setSize( fenster->getBreite(), bildschirmGröße.y - 100 );
  784. }
  785. else
  786. animation = 0;
  787. rend = 1;
  788. break;
  789. case 2:
  790. if( fenster->getHeight() > 20 )
  791. {
  792. fenster->setSize( fenster->getBreite(), fenster->getHeight() - val );
  793. if( fenster->getHeight() < 20 )
  794. fenster->setSize( fenster->getBreite(), 20 );
  795. }
  796. else if( fenster->getX() > -250 )
  797. {
  798. fenster->setPosition( fenster->getX() - val, fenster->getY() );
  799. if( fenster->getX() < -250 )
  800. fenster->setPosition( -250, fenster->getY() );
  801. }
  802. else
  803. animation = 0;
  804. rend = 1;
  805. break;
  806. }
  807. if( neuerFreundSichtbar )
  808. {
  809. if( neuerFreundFenster->getHeight() != 30 && neuerChatFenster->hatStyleNicht( Fenster::Style::Sichtbar ) )
  810. {
  811. neuerFreundFenster->addStyle( Fenster::Style::Sichtbar );
  812. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), neuerFreundFenster->getHeight() + val );
  813. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() + val );
  814. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() - val );
  815. if( neuerFreundFenster->getHeight() > 30 )
  816. {
  817. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), 30 );
  818. freundesListe->setPosition( freundesListe->getX(), 130 );
  819. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 230 );
  820. }
  821. rend = 1;
  822. }
  823. }
  824. else
  825. {
  826. if( neuerFreundFenster->hatStyle( Fenster::Style::Sichtbar ) )
  827. {
  828. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), neuerFreundFenster->getHeight() - val );
  829. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() - val );
  830. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() + val );
  831. if( neuerFreundFenster->getHeight() < 0 )
  832. {
  833. neuerFreundFenster->setSize( neuerFreundFenster->getBreite(), 0 );
  834. neuerFreundFenster->removeStyle( Fenster::Style::Sichtbar );
  835. freundesListe->setPosition( freundesListe->getX(), 100 );
  836. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 200 );
  837. }
  838. rend = 1;
  839. }
  840. }
  841. if( neuerChatSichtbar )
  842. {
  843. if( neuerChatFenster->getHeight() != 55 && neuerFreundFenster->hatStyleNicht( Fenster::Style::Sichtbar ) )
  844. {
  845. neuerChatFenster->addStyle( Fenster::Style::Sichtbar );
  846. neuerChatFenster->setSize( neuerChatFenster->getBreite(), neuerChatFenster->getHeight() + val );
  847. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() + val );
  848. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() - val );
  849. if( neuerChatFenster->getHeight() > 55 )
  850. {
  851. neuerChatFenster->setSize( neuerChatFenster->getBreite(), 55 );
  852. freundesListe->setPosition( freundesListe->getX(), 155 );
  853. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 255 );
  854. }
  855. rend = 1;
  856. }
  857. }
  858. else
  859. {
  860. if( neuerChatFenster->hatStyle( Fenster::Style::Sichtbar ) )
  861. {
  862. neuerChatFenster->setSize( neuerChatFenster->getBreite(), neuerChatFenster->getHeight() - val );
  863. freundesListe->setPosition( freundesListe->getX(), freundesListe->getY() - val );
  864. freundesListe->setSize( freundesListe->getBreite(), freundesListe->getHeight() + val );
  865. if( neuerChatFenster->getHeight() < 0 )
  866. {
  867. neuerChatFenster->setSize( neuerChatFenster->getBreite(), 0 );
  868. neuerChatFenster->removeStyle( Fenster::Style::Sichtbar );
  869. freundesListe->setPosition( freundesListe->getX(), 100 );
  870. freundesListe->setSize( freundesListe->getBreite(), bildschirmGröße.y - 200 );
  871. }
  872. rend = 1;
  873. }
  874. }
  875. bool ret = rend;
  876. rend = 0;
  877. return ret;
  878. }
  879. bool FreundesListe::druckMinMax( MausEreignis & me )
  880. {
  881. if( me.id == ME_RLinks )
  882. {
  883. if( minMax->zHintergrundBild() == minimierenBild )
  884. {
  885. animation = 2;
  886. minMax->setHintergrundBildZ( maximierenBild->getThis() );
  887. // TODO minMax->zToolTip()->setText( "Freundes Leiste maximieren." );
  888. }
  889. else
  890. {
  891. animation = 1;
  892. minMax->setHintergrundBildZ( minimierenBild->getThis() );
  893. // TODO minMax->zToolTip()->setText( "Freundes Leiste minimieren." );
  894. }
  895. }
  896. return 1;
  897. }
  898. bool FreundesListe::druckName( TastaturEreignis & te )
  899. {
  900. if( te.id == TE_Release && te.taste == T_Enter )
  901. chatClient->accountNameÄndern( accountName->zText()->getText() );
  902. return 1;
  903. }
  904. bool FreundesListe::druckNeuerFreund( MausEreignis & me )
  905. {
  906. if( me.id == ME_RLinks )
  907. {
  908. neuerChatSichtbar = 0;
  909. neuerFreundSichtbar = !neuerFreundSichtbar;
  910. }
  911. return 1;
  912. }
  913. bool FreundesListe::druckNeuerChat( MausEreignis & me )
  914. {
  915. if( me.id == ME_RLinks )
  916. {
  917. neuerFreundSichtbar = 0;
  918. neuerChatSichtbar = !neuerChatSichtbar;
  919. }
  920. return 1;
  921. }
  922. bool FreundesListe::druckNeuerFreundSpielerName( TastaturEreignis & te )
  923. {
  924. if( !neuerFreundSichtbar )
  925. return 0;
  926. if( te.id == TE_Release && te.taste == T_Enter )
  927. {
  928. MausEreignis me = { ME_RLinks, 0, 0, 0 };
  929. druckNeuerFreundFertig( me );
  930. }
  931. return 1;
  932. }
  933. bool FreundesListe::druckNeuerFreundFertig( MausEreignis & me )
  934. {
  935. if( !neuerFreundSichtbar )
  936. return 0;
  937. if( me.id == ME_RLinks )
  938. {
  939. if( neuerFreundSpielerName->zText()->getLength() )
  940. {
  941. int accountId = infoClient->getAccountId( neuerFreundSpielerName->zText()->getText() );
  942. if( accountId )
  943. {
  944. if( chatClient->freundesAnfrage( accountId ) )
  945. {
  946. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Freundesanfrage" ), new Text( "Es wurde eine Anfrage an den Spieler gesendet." ),
  947. new Text( "Ok" ), 0 );
  948. neuerFreundSichtbar = 0;
  949. }
  950. }
  951. else
  952. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Der Spieler wurde nicht gefunden." ),
  953. new Text( "Ok" ), 0 );
  954. }
  955. }
  956. return 1;
  957. }
  958. bool FreundesListe::druckNeuerChatName( TastaturEreignis & te )
  959. {
  960. if( !neuerChatSichtbar )
  961. return 0;
  962. if( te.id == TE_Release && te.taste == T_Enter )
  963. {
  964. MausEreignis me = { ME_RLinks, 0, 0, 0 };
  965. druckNeuerChatFertig( me );
  966. }
  967. return 1;
  968. }
  969. bool FreundesListe::druckNeuerChatFertig( MausEreignis & me )
  970. {
  971. if( !neuerChatSichtbar )
  972. return 0;
  973. if( me.id == ME_RLinks )
  974. {
  975. if( neuerChatName->zText()->getLength() )
  976. {
  977. int accountId = infoClient->getAccountId( neuerChatName->zText()->getText() );
  978. if( accountId )
  979. {
  980. nachLogin->zChatLeiste()->addChat( accountId, 0 );
  981. neuerChatSichtbar = 0;
  982. }
  983. else
  984. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Der Spieler wurde nicht gefunden." ),
  985. new Text( "Ok" ), 0 );
  986. }
  987. }
  988. return 1;
  989. }
  990. bool FreundesListe::druckNeuesChatroomName( TastaturEreignis & te )
  991. {
  992. if( !neuerChatSichtbar )
  993. return 0;
  994. if( te.id == TE_Release && te.taste == T_Enter )
  995. {
  996. MausEreignis me = { ME_RLinks, 0, 0, 0 };
  997. druckNeuesChatroomFertig( me );
  998. }
  999. return 1;
  1000. }
  1001. bool FreundesListe::druckNeuesChatroomFertig( MausEreignis & me )
  1002. {
  1003. if( !neuerChatSichtbar )
  1004. return 0;
  1005. if( me.id == ME_RLinks )
  1006. {
  1007. if( neuesChatroomName->zText()->getLength() )
  1008. {
  1009. int chatroomId = infoClient->getChatroomId( neuesChatroomName->zText()->getText() );
  1010. if( chatroomId )
  1011. {
  1012. if( chatClient->chatroomBetreten( chatroomId ) )
  1013. {
  1014. nachLogin->zChatLeiste()->addChat( 0, chatroomId );
  1015. neuerChatSichtbar = 0;
  1016. }
  1017. }
  1018. else
  1019. {
  1020. chatroomId = chatClient->chatroomErstellen( neuesChatroomName->zText()->getText() );
  1021. if( chatroomId )
  1022. {
  1023. nachLogin->zChatLeiste()->addChat( 0, chatroomId );
  1024. neuerChatSichtbar = 0;
  1025. }
  1026. }
  1027. }
  1028. }
  1029. return 1;
  1030. }
  1031. // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread
  1032. Thread *FreundesListe::release()
  1033. {
  1034. if( ref == 2 && run )
  1035. ende();
  1036. return Thread::release();
  1037. }
  1038. // constant
  1039. bool FreundesListe::istFreund( int accId ) const
  1040. {
  1041. return freundesListe->istFreund( accId );
  1042. }
  1043. // Nachrichten
  1044. bool freundesListeMinMaxME( void *p, void *obj, MausEreignis me )
  1045. {
  1046. return ( (FreundesListe *)p )->druckMinMax( me );
  1047. }
  1048. bool freundesListeNameTE( void *p, void *obj, TastaturEreignis te )
  1049. {
  1050. return ( (FreundesListe *)p )->druckName( te );
  1051. }
  1052. bool freundesListeNeuerFreundME( void *p, void *obj, MausEreignis me )
  1053. {
  1054. return ( (FreundesListe *)p )->druckNeuerFreund( me );
  1055. }
  1056. bool freundesListeNeuerChatME( void *p, void *obj, MausEreignis me )
  1057. {
  1058. return ( (FreundesListe *)p )->druckNeuerChat( me );
  1059. }
  1060. bool freundesListeNeuerFreundSpielerNameTE( void *p, void *obj, TastaturEreignis te )
  1061. {
  1062. return ( (FreundesListe *)p )->druckNeuerFreundSpielerName( te );
  1063. }
  1064. bool freundesListeNeuerFreundFertigME( void *p, void *obj, MausEreignis me )
  1065. {
  1066. return ( (FreundesListe *)p )->druckNeuerFreundFertig( me );
  1067. }
  1068. bool freundesListeNeuerChatNameTE( void *p, void *obj, TastaturEreignis te )
  1069. {
  1070. return ( (FreundesListe *)p )->druckNeuerChatName( te );
  1071. }
  1072. bool freundesListeNeuerChatFertigME( void *p, void *obj, MausEreignis me )
  1073. {
  1074. return ( (FreundesListe *)p )->druckNeuerChatFertig( me );
  1075. }
  1076. bool freundesListeNeuesChatroomNameTE( void *p, void *obj, TastaturEreignis te )
  1077. {
  1078. return ( (FreundesListe *)p )->druckNeuesChatroomName( te );
  1079. }
  1080. bool freundesListeNeuesChatroomFertigME( void *p, void *obj, MausEreignis me )
  1081. {
  1082. return ( (FreundesListe *)p )->druckNeuesChatroomFertig( me );
  1083. }