Spiele.cpp 19 KB

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