FreundesListe.cpp 38 KB

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