NachLogin.cpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. #include "NachLogin.h"
  2. #include <Schrift.h>
  3. #include <Bildschirm.h>
  4. #include <DateiSystem.h>
  5. #include <Text.h>
  6. #include "../Global/Variablen.h"
  7. // Inhalt der NachLogin Klasse aus NachLogin.h
  8. // Konstruktor
  9. NachLogin::NachLogin( Schrift *zSchrift, Bildschirm *zBildschirm )
  10. : Zeichnung()
  11. {
  12. if( zSchrift )
  13. schrift = zSchrift->getThis();
  14. if( zBildschirm )
  15. bildschirm = zBildschirm->getThis();
  16. fenster = 0;
  17. titel = 0;
  18. freunde = 0;
  19. chatLeiste = 0;
  20. nachrichtenListe = 0;
  21. spielenFenster = 0;
  22. shopFenster = 0;
  23. accountAnsehenFenster = 0;
  24. mgFenster = 0;
  25. newsFenster = 0;
  26. editorFenster = 0;
  27. spielAufzeichnung = 0;
  28. editor = 0;
  29. op = 0;
  30. status = NLALogin;
  31. }
  32. // Destruktor
  33. NachLogin::~NachLogin()
  34. {
  35. if( fenster )
  36. setAnzeige( NLALogin );
  37. if( schrift )
  38. schrift = schrift->release();
  39. if( bildschirm )
  40. bildschirm = bildschirm->release();
  41. if( editor )
  42. editor->release();
  43. }
  44. // nicht constant
  45. void NachLogin::login() // Initialisiert die Oberfläche
  46. {
  47. lockZeichnung();
  48. if( fenster )
  49. logout();
  50. fenster = new Fenster();
  51. fenster->setStyle( Fenster::Style::Erlaubt | Fenster::Style::Sichtbar );
  52. fenster->setSize( bildschirm->getBackBufferSize() );
  53. leistenFenster = new Fenster();
  54. leistenFenster->setStyle( Fenster::Style::Erlaubt | Fenster::Style::Sichtbar | Fenster::Style::METransparenz );
  55. leistenFenster->setSize( bildschirm->getBackBufferSize() );
  56. titel = new TitelLeiste( leistenFenster, schrift );
  57. spielenFenster = new Spiele( schrift, fenster, titel->getSpielenX() );
  58. shopFenster = new Shop( schrift, fenster, titel->getSpielenX() + 101 );
  59. accountAnsehenFenster = new AccountAnsehen( schrift, fenster, titel->getSpielenX() + 202 );
  60. mgFenster = new MiniGames( schrift, fenster, titel->getSpielenX() + 303 );
  61. newsFenster = new Neuigkeiten( schrift, fenster, titel->getSpielenX() + 404 );
  62. editorFenster = new Editor( schrift, fenster, titel->getSpielenX() );
  63. nachrichtenListe = new NachrichtenListe( schrift, leistenFenster );
  64. freunde = new FreundesListe( schrift, leistenFenster );
  65. chatLeiste = new ChatLeiste( schrift, leistenFenster );
  66. op = new Einstellungen( schrift, leistenFenster );
  67. imSpiel = new ImSpiel( schrift );
  68. fenster->addMember( leistenFenster->getThis() );
  69. bildschirm->addMember( getThis() );
  70. MausEreignis me;
  71. me.id = ME_RLinks;
  72. bildschirm->lock();
  73. titel->druckSpielen( me );
  74. bildschirm->unlock();
  75. status = NLANormal;
  76. unlockZeichnung();
  77. }
  78. void NachLogin::logout() // Setzt die Oberfläche zurück
  79. {
  80. bildschirm->lock();
  81. lockZeichnung();
  82. status = NLALogin;
  83. if( bildschirm )
  84. bildschirm->removeMember( this );
  85. if( spielenFenster )
  86. spielenFenster = (Spiele *)spielenFenster->release();
  87. if( shopFenster )
  88. shopFenster = (Shop *)shopFenster->release();
  89. if( accountAnsehenFenster )
  90. accountAnsehenFenster = (AccountAnsehen *)accountAnsehenFenster->release();
  91. if( mgFenster )
  92. mgFenster = (MiniGames *)mgFenster->release();
  93. if( newsFenster )
  94. newsFenster = (Neuigkeiten *)newsFenster->release();
  95. if( editorFenster )
  96. editorFenster = (Editor *)editorFenster->release();
  97. if( titel )
  98. {
  99. titel->ende();
  100. titel = (TitelLeiste *)titel->release();
  101. }
  102. if( freunde )
  103. freunde = (FreundesListe *)freunde->release();
  104. if( chatLeiste )
  105. chatLeiste = (ChatLeiste *)chatLeiste->release();
  106. if( nachrichtenListe )
  107. nachrichtenListe = nachrichtenListe->release();
  108. if( leistenFenster )
  109. leistenFenster = (Fenster *)leistenFenster->release();
  110. if( fenster )
  111. fenster = (Fenster *)fenster->release();
  112. if( imSpiel )
  113. imSpiel = (ImSpiel *)imSpiel->release();
  114. if( op )
  115. op->release();
  116. unlockZeichnung();
  117. bildschirm->unlock();
  118. }
  119. void NachLogin::setSpielAufzeichnung( AufzeichnungV * video ) // Setzt die Spiel Aufzeichnung
  120. {
  121. spielAufzeichnung = video;
  122. }
  123. void NachLogin::setEditor( EditorV * editor ) // Setzt die Spiel Aufzeichnung
  124. {
  125. if( this->editor )
  126. this->editor->release();
  127. this->editor = editor;
  128. }
  129. void NachLogin::setAnzeige( NachLoginAnzeige s ) // Setzt den Status des Programms
  130. {
  131. lockZeichnung();
  132. if( s == NLAImSpiel )
  133. {
  134. imSpiel->setSichtbar( 1 );
  135. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  136. leistenFenster->doMausEreignis( me );
  137. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  138. fenster->removeMember( leistenFenster );
  139. bildschirm->addMember( leistenFenster->getThis() );
  140. titel->setImSpiel( 1 );
  141. }
  142. else if( status == NLAImSpiel )
  143. {
  144. imSpiel->setSichtbar( 0 );
  145. fenster->addMember( leistenFenster->getThis() );
  146. bildschirm->removeMember( leistenFenster );
  147. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  148. titel->setImSpiel( 0 );
  149. }
  150. if( s == NLASpielVideo )
  151. {
  152. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  153. leistenFenster->doMausEreignis( me );
  154. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  155. fenster->removeMember( leistenFenster );
  156. bildschirm->addMember( leistenFenster->getThis() );
  157. titel->setImVideo( 1 );
  158. }
  159. else if( status == NLASpielVideo )
  160. {
  161. fenster->addMember( leistenFenster->getThis() );
  162. bildschirm->removeMember( leistenFenster );
  163. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  164. spielAufzeichnung = spielAufzeichnung->release();
  165. titel->setImVideo( 0 );
  166. }
  167. if( s == NLAEditor )
  168. {
  169. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  170. leistenFenster->doMausEreignis( me );
  171. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  172. fenster->removeMember( leistenFenster );
  173. bildschirm->addMember( leistenFenster->getThis() );
  174. titel->setImSpiel( 1 );
  175. }
  176. else if( status == NLAEditor )
  177. {
  178. fenster->addMember( leistenFenster->getThis() );
  179. bildschirm->removeMember( leistenFenster );
  180. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  181. editor = editor->release();
  182. titel->setImSpiel( 0 );
  183. }
  184. if( s == NLALogin )
  185. logout();
  186. else
  187. {
  188. if( !fenster )
  189. login();
  190. else
  191. status = s;
  192. }
  193. unlockZeichnung();
  194. }
  195. void NachLogin::hideBars()
  196. {
  197. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  198. }
  199. void NachLogin::showBars()
  200. {
  201. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  202. }
  203. void NachLogin::doMausEreignis( MausEreignis & me )
  204. {
  205. if( status == NLASpielVideo )
  206. {
  207. lockZeichnung();
  208. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  209. leistenFenster->doMausEreignis( me );
  210. else
  211. {
  212. spielAufzeichnung->doMausEreignis( me );
  213. if( spielAufzeichnung->hatVerlassen( 1 ) )
  214. {
  215. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  216. spielAufzeichnung->doMausEreignis( me );
  217. aktion = 8; // Aufzeichnung verlassen
  218. }
  219. }
  220. unlockZeichnung();
  221. return;
  222. }
  223. if( status == NLAEditor )
  224. {
  225. lockZeichnung();
  226. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  227. leistenFenster->doMausEreignis( me );
  228. else
  229. {
  230. editor->doMausEreignis( me );
  231. if( editor->hatVerlassen( 1 ) )
  232. {
  233. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  234. editor->doMausEreignis( me );
  235. aktion = 8; // Editor verlassen
  236. }
  237. }
  238. unlockZeichnung();
  239. return;
  240. }
  241. if( status == NLAImSpiel )
  242. {
  243. lockZeichnung();
  244. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  245. leistenFenster->doMausEreignis( me );
  246. else
  247. imSpiel->doMausEreignis( me );
  248. unlockZeichnung();
  249. return;
  250. }
  251. if( status != NLANormal )
  252. return;
  253. lockZeichnung();
  254. if( fenster )
  255. fenster->doMausEreignis( me );
  256. unlockZeichnung();
  257. }
  258. void NachLogin::doTastaturEreignis( TastaturEreignis & te )
  259. {
  260. if( status == NLASpielVideo )
  261. {
  262. lockZeichnung();
  263. if( te.taste == T_F2 && te.id == TE_Release )
  264. {
  265. leistenFenster->setStyle( Fenster::Style::Sichtbar, !leistenFenster->hatStyle( Fenster::Style::Sichtbar ) );
  266. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  267. leistenFenster->doMausEreignis( me );
  268. }
  269. else
  270. {
  271. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  272. leistenFenster->doTastaturEreignis( te );
  273. else
  274. spielAufzeichnung->doTastaturEreignis( te );
  275. }
  276. unlockZeichnung();
  277. return;
  278. }
  279. if( status == NLAEditor )
  280. {
  281. lockZeichnung();
  282. if( te.taste == T_F2 && te.id == TE_Release )
  283. {
  284. leistenFenster->setStyle( Fenster::Style::Sichtbar, !leistenFenster->hatStyle( Fenster::Style::Sichtbar ) );
  285. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  286. leistenFenster->doMausEreignis( me );
  287. }
  288. else
  289. {
  290. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  291. leistenFenster->doTastaturEreignis( te );
  292. else
  293. editor->doTastaturEreignis( te );
  294. }
  295. unlockZeichnung();
  296. return;
  297. }
  298. if( status == NLAImSpiel )
  299. {
  300. lockZeichnung();
  301. if( te.taste == T_F2 && te.id == TE_Release )
  302. {
  303. leistenFenster->setStyle( Fenster::Style::Sichtbar, !leistenFenster->hatStyle( Fenster::Style::Sichtbar ) );
  304. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  305. leistenFenster->doMausEreignis( me );
  306. }
  307. else
  308. {
  309. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  310. leistenFenster->doTastaturEreignis( te );
  311. else
  312. imSpiel->doTastaturEreignis( te );
  313. }
  314. unlockZeichnung();
  315. return;
  316. }
  317. if( status != NLANormal )
  318. return;
  319. if( te.taste == T_F2 && te.id == TE_Release )
  320. {
  321. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  322. hideBars();
  323. else
  324. showBars();
  325. }
  326. lockZeichnung();
  327. if( fenster )
  328. fenster->doTastaturEreignis( te );
  329. unlockZeichnung();
  330. }
  331. bool NachLogin::tick( double tickVal )
  332. {
  333. if( status == NLASpielVideo )
  334. {
  335. lockZeichnung();
  336. bool ret = 0;
  337. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  338. ret |= leistenFenster->tick( tickVal );
  339. ret |= spielAufzeichnung->tick( tickVal );
  340. unlockZeichnung();
  341. return ret;
  342. }
  343. if( status == NLAEditor )
  344. {
  345. lockZeichnung();
  346. bool ret = 0;
  347. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  348. ret |= leistenFenster->tick( tickVal );
  349. ret |= editor->tick( tickVal );
  350. unlockZeichnung();
  351. return ret;
  352. }
  353. if( status == NLAImSpiel )
  354. {
  355. lockZeichnung();
  356. bool ret = 0;
  357. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  358. ret |= leistenFenster->tick( tickVal );
  359. ret |= imSpiel->tick( tickVal );
  360. unlockZeichnung();
  361. return ret;
  362. }
  363. if( status != NLANormal )
  364. return 0;
  365. lockZeichnung();
  366. bool ret = 0;
  367. if( titel )
  368. ret |= titel->tick();
  369. if( fenster )
  370. ret |= fenster->tick( tickVal );
  371. unlockZeichnung();
  372. return ret;
  373. }
  374. void NachLogin::render( Bild & zRObj )
  375. {
  376. if( status == NLASpielVideo )
  377. {
  378. lockZeichnung();
  379. spielAufzeichnung->render( zRObj );
  380. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  381. leistenFenster->render( zRObj );
  382. unlockZeichnung();
  383. return;
  384. }
  385. if( status == NLAEditor )
  386. {
  387. lockZeichnung();
  388. editor->render( zRObj );
  389. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  390. leistenFenster->render( zRObj );
  391. unlockZeichnung();
  392. return;
  393. }
  394. if( status == NLAImSpiel )
  395. {
  396. lockZeichnung();
  397. imSpiel->render( zRObj );
  398. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  399. leistenFenster->render( zRObj );
  400. unlockZeichnung();
  401. return;
  402. }
  403. if( status != NLANormal )
  404. return;
  405. lockZeichnung();
  406. if( fenster )
  407. fenster->render( zRObj );
  408. unlockZeichnung();
  409. }
  410. // constant
  411. TitelLeiste * NachLogin::zTitelLeiste() const // gibt die Titelleiste zurück
  412. {
  413. return titel;
  414. }
  415. FreundesListe *NachLogin::zFreundesListe() const // gibt die FreundesListe zurück
  416. {
  417. return freunde;
  418. }
  419. ChatLeiste *NachLogin::zChatLeiste() const // gibt die ChatLeiste zurück
  420. {
  421. return chatLeiste;
  422. }
  423. NachrichtenListe *NachLogin::zNachrichtenListe() const // gibt die NachrichtenListe zurück
  424. {
  425. return nachrichtenListe;
  426. }
  427. Spiele *NachLogin::zSpielenFenster() const // gibt das Spiele Fenster zurück
  428. {
  429. return spielenFenster;
  430. }
  431. Shop *NachLogin::zShopFenster() const // gibt das Shop Fenster zurück
  432. {
  433. return shopFenster;
  434. }
  435. AccountAnsehen *NachLogin::zAccountAnsehenFenster() const // gibt das Account Ansehen Fenster zurück
  436. {
  437. return accountAnsehenFenster;
  438. }
  439. MiniGames *NachLogin::zMGFenster() const // gibt das MiniGames Fenster zurück
  440. {
  441. return mgFenster;
  442. }
  443. Neuigkeiten *NachLogin::zNewsFenster() const // gibt das News Fenster zurück
  444. {
  445. return newsFenster;
  446. }
  447. Editor *NachLogin::zEditorFenster() const // gibt das News Fenster zurück
  448. {
  449. return editorFenster;
  450. }
  451. ImSpiel *NachLogin::zImSpiel() const // Gibt das Im Spiel Zeichnung zurück
  452. {
  453. return imSpiel;
  454. }
  455. Einstellungen *NachLogin::zEinstellungen() const // Gibt das Einstellungen Zeichnung zurück
  456. {
  457. return op;
  458. }