Spiele.cpp 23 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, 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( 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, 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. }