Spiele.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  1. #include "Spiele.h"
  2. #include <Rahmen.h>
  3. #include <Punkt.h>
  4. #include <DateiSystem.h>
  5. #include <Text.h>
  6. #include "..\..\Global\Initialisierung.h"
  7. #include "..\..\Global\Variablen.h"
  8. #include <InitDatei.h>
  9. // Inhalt der Spiele Klasse aus Spiele.h
  10. // Konstruktor
  11. Spiele::Spiele(Fenster* zNachLoginFenster, int x)
  12. : Zeichnung()
  13. {
  14. bildschirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize();
  15. pos = Punkt(x, 67);
  16. gr = Punkt(102, 32);
  17. LTDBDatei* spielenBilder = new LTDBDatei();
  18. spielenBilder->setDatei(new Text("data/client/bilder/spielen.ltdb"));
  19. spielenBilder->leseDaten(0);
  20. rahmen = new LRahmen();
  21. rahmen->setFarbe(0xFFFFFFFF);
  22. rahmen->setSize(102, 32);
  23. spielAuswahl = new SpielAuswahlFenster();
  24. karteAuswahl = new KarteAuswahlFenster();
  25. anmeldung = new AngemeldetFenster();
  26. gruppe = new GruppeFenster();
  27. teamAuswahl = new TeamAuswahl();
  28. statistik = new SpielStatistik();
  29. oben = initKnopf(380, 450, 40, 15, 0, "");
  30. oben->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
  31. oben->setHintergrundBildZ(spielenBilder->laden(0, new Text("oben.png")));
  32. initToolTip(oben, "Nach oben umblättern.");
  33. links = initKnopf(360, 450, 15, 40, 0, "");
  34. links->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
  35. links->setHintergrundBildZ(spielenBilder->laden(0, new Text("links.png")));
  36. initToolTip(links, "Zurück.");
  37. unten = initKnopf(380, 475, 40, 15, 0, "");
  38. unten->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
  39. unten->setHintergrundBildZ(spielenBilder->laden(0, new Text("unten.png")));
  40. initToolTip(unten, "Nach unten umblättern.");
  41. rechts = initKnopf(425, 450, 15, 40, 0, "");
  42. rechts->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
  43. rechts->setHintergrundBildZ(spielenBilder->laden(0, new Text("rechts.png")));
  44. initToolTip(rechts, "Weiter.");
  45. spielenBilder->release();
  46. alpha = 0;
  47. ladenAlpha = 0;
  48. ladenJetzt = 0;
  49. animation = 0;
  50. sichtbar = 0;
  51. tickVal = 0;
  52. tickVal2 = 0;
  53. jetzt = 0;
  54. prozent1 = 0;
  55. prozent2 = 0;
  56. prozent3 = 0;
  57. prozent4 = 0;
  58. prozent5 = 0;
  59. prozent6 = 0;
  60. spielGefundenB = 0;
  61. begPos = Punkt(0, 0);
  62. begGröße = Punkt(0, 0);
  63. größe1 = Punkt(102, 32);
  64. pos1 = Punkt(x, 67);
  65. größe2 = Punkt(800, 500);
  66. pos2 = bildschirmGröße / 2 - größe2 / 2;
  67. größe3 = Punkt(950, 550);
  68. pos3 = bildschirmGröße / 2 - größe3 / 2;
  69. größe4 = Punkt(700, 600);
  70. pos4 = bildschirmGröße / 2 - größe4 / 2;
  71. getThis();
  72. zNachLoginFenster->addMember(this);
  73. }
  74. // Destruktor
  75. Spiele::~Spiele()
  76. {
  77. rahmen->release();
  78. spielAuswahl->warteAufThread(10000);
  79. spielAuswahl->ende();
  80. spielAuswahl->release();
  81. karteAuswahl->warteAufThread(10000);
  82. karteAuswahl->ende();
  83. karteAuswahl->release();
  84. anmeldung->release();
  85. gruppe->release();
  86. teamAuswahl->release();
  87. statistik->release();
  88. oben->release();
  89. links->release();
  90. unten->release();
  91. rechts->release();
  92. }
  93. // nicht constant
  94. void Spiele::setSichtbar(bool sicht)
  95. {
  96. begPos = pos;
  97. begGröße = gr;
  98. animation |= (sicht ? 0x1 : 0x2);
  99. updateErlaubt();
  100. rend = 1;
  101. }
  102. void Spiele::updateErlaubt()
  103. {
  104. if (sichtbar)
  105. {
  106. if (jetzt == 1)
  107. spielAuswahl->updateListe();
  108. if (jetzt == 2)
  109. karteAuswahl->updateListe();
  110. }
  111. }
  112. void Spiele::anmelden(int karteId)
  113. {
  114. if (anmeldung->setKarteId(karteId))
  115. {
  116. karteAuswahl->setSichtbar(0);
  117. anmeldung->setSichtbar(1);
  118. jetzt = 3;
  119. }
  120. }
  121. void Spiele::anmeldungAbbrechen()
  122. {
  123. anmeldung->setSichtbar(0);
  124. spielAuswahl->setSichtbar(1);
  125. jetzt = 1;
  126. }
  127. void Spiele::gruppeBetreten(int gruppeId)
  128. {
  129. begPos = pos;
  130. begGröße = gr;
  131. größe2 = größe3;
  132. pos2 = pos3;
  133. gruppe->setGruppeId(gruppeId);
  134. gruppe->neuerSpieler(loginClient->getAccountId());
  135. animation |= 0x4;
  136. spielGefundenB = 0;
  137. }
  138. void Spiele::gruppeVerlassen()
  139. {
  140. begPos = pos;
  141. begGröße = gr;
  142. größe2.x = 800;
  143. größe2.y = 500;
  144. pos2 = bildschirmGröße / 2 - größe2 / 2;
  145. animation |= 0x8;
  146. }
  147. void Spiele::spielerBetrittGruppe(int gruppeId, int accountId)
  148. {
  149. if (gruppe->getGruppeId() == gruppeId)
  150. gruppe->neuerSpieler(accountId);
  151. }
  152. void Spiele::spielerVerlässtGruppe(int gruppeId, int accountId)
  153. {
  154. if (gruppe->getGruppeId() == gruppeId)
  155. gruppe->spielerVerlässt(accountId);
  156. }
  157. void Spiele::gruppeNachricht(int gruppeId, const char* nachricht)
  158. {
  159. if (gruppe->getGruppeId() == gruppeId)
  160. gruppe->chatNachricht(nachricht);
  161. }
  162. void Spiele::gruppeAnmelden(int gruppeId)
  163. {
  164. if (gruppe->getGruppeId() == gruppeId)
  165. gruppe->setAngemeldet(1);
  166. }
  167. void Spiele::gruppeAbmelden(int gruppeId)
  168. {
  169. if (gruppe->getGruppeId() == gruppeId)
  170. gruppe->setAngemeldet(0);
  171. }
  172. void Spiele::setGruppeSpielStarten(int gruppeId, bool spielStarten)
  173. {
  174. if (gruppe->getGruppeId() == gruppeId)
  175. gruppe->setSpielerHinzufügen(!spielStarten);
  176. }
  177. void Spiele::setGruppeAdmin(int gruppeId, int admin)
  178. {
  179. if (gruppe->getGruppeId() == gruppeId)
  180. gruppe->setAdmin(admin);
  181. nachLogin->zFreundesListe()->zeigeEinladeKnopf(admin == loginClient->getAccountId());
  182. }
  183. void Spiele::kickAusGruppe(int gruppeId)
  184. {
  185. if (gruppe->getGruppeId() == gruppeId)
  186. {
  187. gruppe->kick();
  188. gruppeVerlassen();
  189. }
  190. }
  191. void Spiele::gruppeEinladungNeu(int gruppeId, int accountId)
  192. {
  193. if (gruppe->getGruppeId() == gruppeId)
  194. gruppe->neueEinladung(accountId);
  195. }
  196. void Spiele::gruppeEinladungAbgebrochen(int gruppeId, int accountId)
  197. {
  198. if (gruppe->getGruppeId() == gruppeId)
  199. gruppe->einladungEntfernt(accountId);
  200. }
  201. void Spiele::gruppeEinadungAbgelehnt(int gruppeId, int accountId)
  202. {
  203. if (gruppe->getGruppeId() == gruppeId)
  204. gruppe->einladungAbgelehnt(accountId);
  205. }
  206. void Spiele::spielGefunden(int karteId)
  207. {
  208. MausEreignis me;
  209. me.id = ME_RLinks;
  210. uiFactory.initParam.bildschirm->lock();
  211. nachLogin->zTitelLeiste()->druckSpielen(me);
  212. uiFactory.initParam.bildschirm->unlock();
  213. if (jetzt == 3)
  214. anmeldung->setSpielGefunden();
  215. else if (jetzt == 4)
  216. gruppe->spielGefunden();
  217. else
  218. spielGefundenB = 1;
  219. }
  220. void Spiele::spielGefundenZeitVerbleibend(int sekunden)
  221. {
  222. if (jetzt == 3)
  223. anmeldung->setVerbleibendeZeit(sekunden);
  224. if (jetzt == 4)
  225. gruppe->verbleibendeZeit(sekunden);
  226. if (jetzt == 5)
  227. teamAuswahl->verbleibendeZeit(sekunden);
  228. }
  229. void Spiele::spielGefundenAbbruch()
  230. {
  231. if (jetzt == 3)
  232. anmeldung->spielGefundenAbbruch();
  233. if (jetzt == 4)
  234. gruppe->spielGefundenAbbruch();
  235. }
  236. void Spiele::zurückInWarteschlange(int stunden, int minuten, int sekunden)
  237. {
  238. if (jetzt == 3)
  239. anmeldung->zurückInWarteschlange(stunden, minuten, sekunden);
  240. if (jetzt == 4)
  241. gruppe->zurückInWarteschlange(stunden, minuten, sekunden);
  242. }
  243. void Spiele::teamAuswahlBetreten()
  244. {
  245. begPos = pos;
  246. begGröße = gr;
  247. größe2 = größe4;
  248. pos2 = pos4;
  249. animation |= 0x10;
  250. }
  251. void Spiele::teamAuswahlInit(SpielerTeamStruktur* sts)
  252. {
  253. int karteId = 0;
  254. if (jetzt == 3)
  255. karteId = anmeldung->getKarteId();
  256. if (jetzt == 4)
  257. karteId = gruppe->getKarteId();
  258. teamAuswahl->setKarteId(karteId);
  259. teamAuswahl->initSTS(sts);
  260. }
  261. void Spiele::teamAuswahlAddSpieler(int accountId)
  262. {
  263. teamAuswahl->addSpieler(accountId);
  264. }
  265. void Spiele::teamAuswahlRemoveSpieler(int accountId)
  266. {
  267. teamAuswahl->removeSpieler(accountId);
  268. }
  269. void Spiele::teamAuswahlSpielerWehseltTeam(int accountId, int spielerNummer)
  270. {
  271. teamAuswahl->setSpielerNummer(accountId, spielerNummer);
  272. }
  273. void Spiele::teamAuswahlChatNachricht(const char* nachricht)
  274. {
  275. teamAuswahl->addNachricht(nachricht);
  276. }
  277. void Spiele::teamAuswahlAbbrechen()
  278. {
  279. begPos = pos;
  280. begGröße = gr;
  281. größe2.x = 800;
  282. größe2.y = 500;
  283. pos2 = bildschirmGröße / 2 - größe2 / 2;
  284. animation |= 0x20;
  285. }
  286. void Spiele::statistikNachricht(int län, const char* bytes)
  287. {
  288. statistik->nachricht(län, bytes);
  289. }
  290. void Spiele::ladeSpielStatistik(int karteId)
  291. {
  292. pos = pos1;
  293. gr = größe1;
  294. größe2 = Punkt(800, 500);
  295. pos2 = bildschirmGröße / 2 - größe2 / 2;
  296. teamAuswahl->setSichtbar(0, 1);
  297. animation = 0;
  298. sichtbar = 0;
  299. alpha = 0;
  300. jetzt = 6;
  301. statistik->setSpielArt(infoClient->getSpielId(karteId));
  302. setSichtbar(1);
  303. }
  304. bool Spiele::tick(double tickVal)
  305. {
  306. rend |= spielAuswahl->tick(tickVal);
  307. rend |= karteAuswahl->tick(tickVal);
  308. rend |= anmeldung->tick(tickVal);
  309. rend |= gruppe->tick(tickVal);
  310. rend |= teamAuswahl->tick(tickVal);
  311. rend |= statistik->tick(tickVal);
  312. rend |= oben->tick(tickVal);
  313. rend |= rechts->tick(tickVal);
  314. rend |= unten->tick(tickVal);
  315. rend |= links->tick(tickVal);
  316. if (jetzt == 6 && !statistik->istSichtbar())
  317. {
  318. spielAuswahl->setSichtbar(1);
  319. jetzt = 1;
  320. statistik->reset();
  321. }
  322. tickVal2 += tickVal;
  323. if (tickVal2 >= 1 / 60.0)
  324. {
  325. tickVal2 -= 1 / 60.0;
  326. if (ladenAlpha && ladeAnimation->zAnimationData())
  327. {
  328. rend = 1;
  329. ladenJetzt++;
  330. if (ladenJetzt >= ladeAnimation->zAnimationData()->getBildAnzahl())
  331. ladenJetzt = 0;
  332. }
  333. }
  334. this->tickVal += tickVal * 150;
  335. int val = (int)this->tickVal;
  336. if (val < 1)
  337. {
  338. bool ret = rend;
  339. rend = 0;
  340. return ret;
  341. }
  342. this->tickVal -= val;
  343. if ((animation | 0x1) == animation) // Einblenden
  344. {
  345. if (prozent1 != 100)
  346. {
  347. prozent1 += val;
  348. if (prozent1 >= 100)
  349. {
  350. prozent1 = 100;
  351. if (!jetzt)
  352. {
  353. spielAuswahl->setSichtbar(1);
  354. jetzt = 1;
  355. }
  356. }
  357. pos = begPos + (Punkt)(((Vec2< double >)(pos2 - begPos) / 100.0) * prozent1);
  358. gr = begGröße + (Punkt)(((Vec2< double >)(größe2 - begGröße) / 100.0) * prozent1);
  359. }
  360. else if (alpha != 255)
  361. {
  362. alpha += val * 2;
  363. if (alpha >= 255 || (animation | 0x2) == animation)
  364. {
  365. alpha = 255;
  366. animation &= ~0x1;
  367. sichtbar = 1;
  368. prozent1 = 0;
  369. }
  370. }
  371. rend = 1;
  372. }
  373. if ((animation | 0x2) == animation) // ausblenden
  374. {
  375. if (alpha != 0)
  376. {
  377. alpha -= val * 2;
  378. if (alpha < 0)
  379. alpha = 0;
  380. }
  381. else
  382. {
  383. prozent2 += val;
  384. if (prozent2 > 100)
  385. prozent2 = 100;
  386. pos = begPos + (Punkt)(((Vec2< double >)(pos1 - begPos) / 100.0) * prozent2);
  387. gr = begGröße + (Punkt)(((Vec2< double >)(größe1 - begGröße) / 100.0) * prozent2);
  388. if (prozent2 == 100)
  389. {
  390. prozent2 = 0;
  391. animation &= ~0x2;
  392. sichtbar = 0;
  393. }
  394. }
  395. rend = 1;
  396. }
  397. if ((animation | 0x4) == animation) // Gruppe betreten
  398. {
  399. if (ladenAlpha < 255 && !prozent3)
  400. {
  401. alpha -= val * 3;
  402. if (alpha < 0)
  403. alpha = 0;
  404. ladenAlpha += val * 3;
  405. if (ladenAlpha >= 255)
  406. {
  407. ladenAlpha = 255;
  408. if (jetzt == 1)
  409. spielAuswahl->setSichtbar(0);
  410. if (jetzt == 2)
  411. karteAuswahl->setSichtbar(0);
  412. if (jetzt == 6)
  413. statistik->verlassen();
  414. }
  415. }
  416. else if (ladenAlpha == 255 && prozent3 != 100)
  417. {
  418. prozent3 += val;
  419. if (prozent3 >= 100)
  420. {
  421. prozent3 = 100;
  422. gruppe->setSichtbar(1);
  423. jetzt = 4;
  424. if (spielGefundenB)
  425. {
  426. spielGefundenB = 0;
  427. gruppe->spielGefunden();
  428. }
  429. }
  430. pos = begPos + (Punkt)(((Vec2< double >)(pos3 - begPos) / 100.0) * prozent3);
  431. gr = begGröße + (Punkt)(((Vec2< double >)(größe3 - begGröße) / 100.0) * prozent3);
  432. }
  433. else if (prozent3 == 100)
  434. {
  435. alpha += val * 3;
  436. if (alpha > 255)
  437. alpha = 255;
  438. ladenAlpha -= val * 3;
  439. if (ladenAlpha <= 0)
  440. {
  441. ladenAlpha = 0;
  442. animation &= ~0x4;
  443. prozent3 = 0;
  444. }
  445. }
  446. rend = 1;
  447. }
  448. if ((animation | 0x8) == animation) // Gruppe Verlassen
  449. {
  450. if (ladenAlpha < 255 && prozent4 == 0)
  451. {
  452. alpha -= val * 3;
  453. if (alpha < 0)
  454. alpha = 0;
  455. ladenAlpha += val * 3;
  456. if (ladenAlpha >= 255)
  457. {
  458. ladenAlpha = 255;
  459. gruppe->setSichtbar(0);
  460. }
  461. }
  462. else if (ladenAlpha == 255 && prozent4 != 100)
  463. {
  464. prozent4 += val;
  465. if (prozent4 >= 100)
  466. {
  467. prozent4 = 100;
  468. spielAuswahl->setSichtbar(1);
  469. jetzt = 1;
  470. }
  471. pos = begPos + (Punkt)(((Vec2< double >)(pos2 - begPos) / 100.0) * prozent4);
  472. gr = begGröße + (Punkt)(((Vec2< double >)(größe2 - begGröße) / 100.0) * prozent4);
  473. }
  474. else if (prozent4 == 100)
  475. {
  476. alpha += val * 3;
  477. if (alpha > 255)
  478. alpha = 255;
  479. ladenAlpha -= val * 3;
  480. if (ladenAlpha <= 0)
  481. {
  482. ladenAlpha = 0;
  483. animation &= ~0x8;
  484. prozent4 = 0;
  485. }
  486. }
  487. rend = 1;
  488. }
  489. if ((animation | 0x10) == animation) // Team Auswahl betreten
  490. {
  491. if (ladenAlpha < 255 && !prozent5)
  492. {
  493. alpha -= val * 3;
  494. if (alpha < 0)
  495. alpha = 0;
  496. ladenAlpha += val * 3;
  497. if (ladenAlpha >= 255)
  498. {
  499. ladenAlpha = 255;
  500. if (jetzt == 1)
  501. spielAuswahl->setSichtbar(0);
  502. if (jetzt == 2)
  503. karteAuswahl->setSichtbar(0);
  504. }
  505. }
  506. else if (ladenAlpha == 255 && prozent5 != 100)
  507. {
  508. prozent5 += val;
  509. if (prozent5 >= 100)
  510. {
  511. prozent5 = 100;
  512. gruppe->setSichtbar(0);
  513. anmeldung->setSichtbar(0);
  514. teamAuswahl->setSichtbar(1);
  515. jetzt = 5;
  516. }
  517. pos = begPos + (Punkt)(((Vec2< double >)(pos4 - begPos) / 100.0) * prozent5);
  518. gr = begGröße + (Punkt)(((Vec2< double >)(größe4 - begGröße) / 100.0) * prozent5);
  519. }
  520. else if (prozent5 == 100)
  521. {
  522. alpha += val * 3;
  523. if (alpha > 255)
  524. alpha = 255;
  525. ladenAlpha -= val * 3;
  526. if (ladenAlpha <= 0)
  527. {
  528. ladenAlpha = 0;
  529. animation &= ~0x10;
  530. prozent5 = 0;
  531. }
  532. }
  533. rend = 1;
  534. }
  535. if ((animation | 0x20) == animation) // Team Auswahl Verlassen
  536. {
  537. if (ladenAlpha < 255 && prozent6 == 0)
  538. {
  539. alpha -= val * 3;
  540. if (alpha < 0)
  541. alpha = 0;
  542. ladenAlpha += val * 3;
  543. if (ladenAlpha >= 255)
  544. {
  545. ladenAlpha = 255;
  546. teamAuswahl->setSichtbar(0);
  547. }
  548. }
  549. else if (ladenAlpha == 255 && prozent6 != 100)
  550. {
  551. prozent6 += val;
  552. if (prozent6 >= 100)
  553. {
  554. prozent6 = 100;
  555. spielAuswahl->setSichtbar(1);
  556. jetzt = 1;
  557. }
  558. pos = begPos + (Punkt)(((Vec2< double >)(pos2 - begPos) / 100.0) * prozent6);
  559. gr = begGröße + (Punkt)(((Vec2< double >)(größe2 - begGröße) / 100.0) * prozent6);
  560. }
  561. else if (prozent6 == 100)
  562. {
  563. alpha += val * 3;
  564. if (alpha > 255)
  565. alpha = 255;
  566. ladenAlpha -= val * 3;
  567. if (ladenAlpha <= 0)
  568. {
  569. ladenAlpha = 0;
  570. animation &= ~0x20;
  571. prozent6 = 0;
  572. }
  573. }
  574. rend = 1;
  575. }
  576. bool ret = rend;
  577. rend = 0;
  578. return ret;
  579. }
  580. void Spiele::doPublicMausEreignis(MausEreignis& me)
  581. {
  582. if (!sichtbar)
  583. return;
  584. if (animation)
  585. return;
  586. int mx = me.mx;
  587. int my = me.my;
  588. me.mx -= pos.x;
  589. me.my -= pos.y;
  590. int ak = 0;
  591. bool tmp = me.verarbeitet;
  592. oben->doPublicMausEreignis(me);
  593. ak = me.verarbeitet ? 1 : 0;
  594. links->doPublicMausEreignis(me);
  595. ak = me.verarbeitet && !ak ? 2 : ak;
  596. unten->doPublicMausEreignis(me);
  597. ak = me.verarbeitet && !ak ? 3 : ak;
  598. rechts->doPublicMausEreignis(me);
  599. ak = me.verarbeitet && !ak ? 4 : ak;
  600. if (tmp)
  601. ak = 0;
  602. switch (jetzt)
  603. {
  604. case 1: // Spiel Auswahl
  605. if (spielAuswahl)
  606. {
  607. spielAuswahl->doPublicMausEreignis(me);
  608. if (spielAuswahl->hatAuswahl() && spielAuswahl->istAuswahlErlubt())
  609. rechts->addStyle(Knopf::Style::Erlaubt);
  610. else
  611. rechts->removeStyle(Knopf::Style::Erlaubt);
  612. if (!spielAuswahl->getSeite())
  613. oben->removeStyle(Knopf::Style::Erlaubt);
  614. else
  615. oben->addStyle(Knopf::Style::Erlaubt);
  616. if (spielAuswahl->getSeite() < spielAuswahl->getSeiteAnzahl() - 1)
  617. unten->addStyle(Knopf::Style::Erlaubt);
  618. else
  619. unten->removeStyle(Knopf::Style::Erlaubt);
  620. links->removeStyle(Knopf::Style::Erlaubt);
  621. if (me.id != ME_RLinks)
  622. break;
  623. switch (ak)
  624. {
  625. case 1: // oben Klick
  626. spielAuswahl->blättern(1);
  627. break;
  628. case 3: // unten Klick
  629. spielAuswahl->blättern(0);
  630. break;
  631. case 4: // rehts Klick
  632. if (rechts->hatStyle(Knopf::Style::Erlaubt))
  633. {
  634. karteAuswahl->setSpielId(spielAuswahl->zAuswahl()->getSpielId());
  635. spielAuswahl->setSichtbar(0);
  636. karteAuswahl->setSichtbar(1);
  637. jetzt = 2;
  638. }
  639. break;
  640. }
  641. }
  642. break;
  643. case 2: // Karten Auswahl
  644. if (karteAuswahl)
  645. {
  646. karteAuswahl->doPublicMausEreignis(me);
  647. rechts->removeStyle(Knopf::Style::Erlaubt);
  648. if (!karteAuswahl->getSeite())
  649. oben->removeStyle(Knopf::Style::Erlaubt);
  650. else
  651. oben->addStyle(Knopf::Style::Erlaubt);
  652. if (karteAuswahl->getSeite() < karteAuswahl->getSeiteAnzahl() - 1)
  653. unten->addStyle(Knopf::Style::Erlaubt);
  654. else
  655. unten->removeStyle(Knopf::Style::Erlaubt);
  656. links->addStyle(Knopf::Style::Erlaubt);
  657. if (me.id != ME_RLinks)
  658. break;
  659. switch (ak)
  660. {
  661. case 1: // oben Klick
  662. karteAuswahl->blättern(1);
  663. break;
  664. case 2: // links Klick
  665. karteAuswahl->setSichtbar(0);
  666. spielAuswahl->setSichtbar(1);
  667. jetzt = 1;
  668. break;
  669. case 3: // unten Klick
  670. karteAuswahl->blättern(0);
  671. break;
  672. }
  673. }
  674. break;
  675. case 3: // Anmeldung
  676. anmeldung->doPublicMausEreignis(me);
  677. break;
  678. case 4: // Gruppe
  679. gruppe->doPublicMausEreignis(me);
  680. break;
  681. case 5: // TeamAuswahl
  682. teamAuswahl->doPublicMausEreignis(me);
  683. break;
  684. case 6:
  685. statistik->doPublicMausEreignis(me);
  686. break;
  687. }
  688. me.mx = mx;
  689. me.my = my;
  690. }
  691. void Spiele::doTastaturEreignis(TastaturEreignis& te)
  692. {
  693. if (!sichtbar)
  694. return;
  695. switch (jetzt)
  696. {
  697. case 1:
  698. break;
  699. case 2:
  700. break;
  701. case 3:
  702. break;
  703. case 4:
  704. gruppe->doTastaturEreignis(te);
  705. break;
  706. case 5:
  707. teamAuswahl->doTastaturEreignis(te);
  708. break;
  709. case 6:
  710. statistik->doTastaturEreignis(te);
  711. }
  712. }
  713. void Spiele::render(Bild& zRObj)
  714. {
  715. if (pos == pos1)
  716. return;
  717. int x = pos.x;
  718. int y = pos.y;
  719. int br = gr.x;
  720. int hö = gr.y;
  721. if (!zRObj.setDrawOptions(x, y, br, hö))
  722. return;
  723. rahmen->setSize(br, hö);
  724. rahmen->render(zRObj);
  725. int rbr = rahmen->getRBreite();
  726. zRObj.setAlpha((unsigned char)alpha);
  727. if (jetzt == 1 || jetzt == 2)
  728. {
  729. oben->render(zRObj);
  730. links->render(zRObj);
  731. unten->render(zRObj);
  732. rechts->render(zRObj);
  733. }
  734. if (!zRObj.setDrawOptions(rbr, rbr, br - rbr * 2, hö - rbr * 2))
  735. {
  736. zRObj.releaseDrawOptions();
  737. zRObj.releaseAlpha();
  738. return;
  739. }
  740. if (jetzt != 4 && jetzt != 5)
  741. {
  742. spielAuswahl->render(zRObj);
  743. karteAuswahl->render(zRObj);
  744. anmeldung->render(zRObj);
  745. }
  746. if (jetzt != 5)
  747. gruppe->render(zRObj);
  748. teamAuswahl->render(zRObj);
  749. statistik->render(zRObj);
  750. zRObj.releaseDrawOptions();
  751. zRObj.releaseAlpha();
  752. if (ladenAlpha && ladeAnimation->zAnimationData())
  753. {
  754. zRObj.setAlpha(ladenAlpha);
  755. zRObj.drawBild(br / 2 - 25, hö / 2 - 25, 50, 50, *ladeAnimation->zAnimationData()->zBild(ladenJetzt));
  756. zRObj.releaseAlpha();
  757. }
  758. zRObj.releaseDrawOptions();
  759. }
  760. // constant
  761. bool Spiele::istAnimiert() const
  762. {
  763. return animation != 0;
  764. }
  765. bool Spiele::istSichtbar() const
  766. {
  767. return sichtbar || prozent1 != 0;
  768. }
  769. int Spiele::getKarteId() const
  770. {
  771. if (jetzt == 3)
  772. return anmeldung->getKarteId();
  773. if (jetzt == 4)
  774. return gruppe->getKarteId();
  775. if (jetzt == 5)
  776. return teamAuswahl->getKarteId();
  777. return 0;
  778. }
  779. int Spiele::getGruppeId() const
  780. {
  781. return gruppe->getGruppeId();
  782. }
  783. SpielerTeamStruktur* Spiele::getSTS() const
  784. {
  785. if (jetzt == 5)
  786. return teamAuswahl->getSTS();
  787. return 0;
  788. }