NachLogin.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  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. lockZeichnung();
  81. status = NLALogin;
  82. if( bildschirm )
  83. bildschirm->removeMember( this );
  84. if( spielenFenster )
  85. spielenFenster = (Spiele *)spielenFenster->release();
  86. if( shopFenster )
  87. shopFenster = (Shop *)shopFenster->release();
  88. if( accountAnsehenFenster )
  89. accountAnsehenFenster = (AccountAnsehen *)accountAnsehenFenster->release();
  90. if( mgFenster )
  91. mgFenster = (MiniGames *)mgFenster->release();
  92. if( newsFenster )
  93. newsFenster = (Neuigkeiten *)newsFenster->release();
  94. if( editorFenster )
  95. editorFenster = (Editor *)editorFenster->release();
  96. if( titel )
  97. titel = (TitelLeiste *)titel->release();
  98. if( freunde )
  99. freunde = (FreundesListe *)freunde->release();
  100. if( chatLeiste )
  101. chatLeiste = (ChatLeiste *)chatLeiste->release();
  102. if( nachrichtenListe )
  103. nachrichtenListe = nachrichtenListe->release();
  104. if( leistenFenster )
  105. leistenFenster = (Fenster *)leistenFenster->release();
  106. if( fenster )
  107. fenster = (Fenster *)fenster->release();
  108. if( imSpiel )
  109. imSpiel = (ImSpiel *)imSpiel->release();
  110. if( op )
  111. op->release();
  112. unlockZeichnung();
  113. }
  114. void NachLogin::setSpielAufzeichnung( AufzeichnungV * video ) // Setzt die Spiel Aufzeichnung
  115. {
  116. spielAufzeichnung = video;
  117. }
  118. void NachLogin::setEditor( EditorV * editor ) // Setzt die Spiel Aufzeichnung
  119. {
  120. if( this->editor )
  121. this->editor->release();
  122. this->editor = editor;
  123. }
  124. void NachLogin::setAnzeige( NachLoginAnzeige s ) // Setzt den Status des Programms
  125. {
  126. lockZeichnung();
  127. if( s == NLAImSpiel )
  128. {
  129. imSpiel->setSichtbar( 1 );
  130. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  131. leistenFenster->doMausEreignis( me );
  132. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  133. fenster->removeMember( leistenFenster );
  134. bildschirm->addMember( leistenFenster->getThis() );
  135. titel->setImSpiel( 1 );
  136. }
  137. else if( status == NLAImSpiel )
  138. {
  139. imSpiel->setSichtbar( 0 );
  140. fenster->addMember( leistenFenster->getThis() );
  141. bildschirm->removeMember( leistenFenster );
  142. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  143. titel->setImSpiel( 0 );
  144. }
  145. if( s == NLASpielVideo )
  146. {
  147. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  148. leistenFenster->doMausEreignis( me );
  149. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  150. fenster->removeMember( leistenFenster );
  151. bildschirm->addMember( leistenFenster->getThis() );
  152. titel->setImVideo( 1 );
  153. }
  154. else if( status == NLASpielVideo )
  155. {
  156. fenster->addMember( leistenFenster->getThis() );
  157. bildschirm->removeMember( leistenFenster );
  158. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  159. spielAufzeichnung = spielAufzeichnung->release();
  160. titel->setImVideo( 0 );
  161. }
  162. if( s == NLAEditor )
  163. {
  164. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  165. leistenFenster->doMausEreignis( me );
  166. leistenFenster->removeStyle( Fenster::Style::Sichtbar );
  167. fenster->removeMember( leistenFenster );
  168. bildschirm->addMember( leistenFenster->getThis() );
  169. titel->setImSpiel( 1 );
  170. }
  171. else if( status == NLAEditor )
  172. {
  173. fenster->addMember( leistenFenster->getThis() );
  174. bildschirm->removeMember( leistenFenster );
  175. leistenFenster->addStyle( Fenster::Style::Sichtbar );
  176. editor = editor->release();
  177. titel->setImSpiel( 0 );
  178. }
  179. if( s == NLALogin )
  180. logout();
  181. else
  182. {
  183. if( !fenster )
  184. login();
  185. else
  186. status = s;
  187. }
  188. unlockZeichnung();
  189. }
  190. void NachLogin::doMausEreignis( MausEreignis & me )
  191. {
  192. if( status == NLASpielVideo )
  193. {
  194. lockZeichnung();
  195. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  196. leistenFenster->doMausEreignis( me );
  197. else
  198. {
  199. spielAufzeichnung->doMausEreignis( me );
  200. if( spielAufzeichnung->hatVerlassen( 1 ) )
  201. {
  202. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  203. spielAufzeichnung->doMausEreignis( me );
  204. aktion = 8; // Aufzeichnung verlassen
  205. }
  206. }
  207. unlockZeichnung();
  208. return;
  209. }
  210. if( status == NLAEditor )
  211. {
  212. lockZeichnung();
  213. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  214. leistenFenster->doMausEreignis( me );
  215. else
  216. {
  217. editor->doMausEreignis( me );
  218. if( editor->hatVerlassen( 1 ) )
  219. {
  220. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  221. editor->doMausEreignis( me );
  222. aktion = 8; // Editor verlassen
  223. }
  224. }
  225. unlockZeichnung();
  226. return;
  227. }
  228. if( status == NLAImSpiel )
  229. {
  230. lockZeichnung();
  231. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  232. leistenFenster->doMausEreignis( me );
  233. else
  234. imSpiel->doMausEreignis( me );
  235. unlockZeichnung();
  236. return;
  237. }
  238. if( status != NLANormal )
  239. return;
  240. lockZeichnung();
  241. if( fenster )
  242. fenster->doMausEreignis( me );
  243. unlockZeichnung();
  244. }
  245. void NachLogin::doTastaturEreignis( TastaturEreignis & te )
  246. {
  247. if( status == NLASpielVideo )
  248. {
  249. lockZeichnung();
  250. if( te.taste == T_F2 && te.id == TE_Release )
  251. {
  252. leistenFenster->setStyle( Fenster::Style::Sichtbar, !leistenFenster->hatStyle( Fenster::Style::Sichtbar ) );
  253. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  254. leistenFenster->doMausEreignis( me );
  255. }
  256. else
  257. {
  258. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  259. leistenFenster->doTastaturEreignis( te );
  260. else
  261. spielAufzeichnung->doTastaturEreignis( te );
  262. }
  263. unlockZeichnung();
  264. return;
  265. }
  266. if( status == NLAEditor )
  267. {
  268. lockZeichnung();
  269. if( te.taste == T_F2 && te.id == TE_Release )
  270. {
  271. leistenFenster->setStyle( Fenster::Style::Sichtbar, !leistenFenster->hatStyle( Fenster::Style::Sichtbar ) );
  272. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  273. leistenFenster->doMausEreignis( me );
  274. }
  275. else
  276. {
  277. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  278. leistenFenster->doTastaturEreignis( te );
  279. else
  280. editor->doTastaturEreignis( te );
  281. }
  282. unlockZeichnung();
  283. return;
  284. }
  285. if( status == NLAImSpiel )
  286. {
  287. lockZeichnung();
  288. if( te.taste == T_F2 && te.id == TE_Release )
  289. {
  290. leistenFenster->setStyle( Fenster::Style::Sichtbar, !leistenFenster->hatStyle( Fenster::Style::Sichtbar ) );
  291. MausEreignis me = { ME_Bewegung, -1, -1, -1, -1, 0 };
  292. leistenFenster->doMausEreignis( me );
  293. }
  294. else
  295. {
  296. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  297. leistenFenster->doTastaturEreignis( te );
  298. else
  299. imSpiel->doTastaturEreignis( te );
  300. }
  301. unlockZeichnung();
  302. return;
  303. }
  304. if( status != NLANormal )
  305. return;
  306. lockZeichnung();
  307. if( fenster )
  308. fenster->doTastaturEreignis( te );
  309. unlockZeichnung();
  310. }
  311. bool NachLogin::tick( double tickVal )
  312. {
  313. if( status == NLASpielVideo )
  314. {
  315. lockZeichnung();
  316. bool ret = 0;
  317. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  318. ret |= leistenFenster->tick( tickVal );
  319. ret |= spielAufzeichnung->tick( tickVal );
  320. unlockZeichnung();
  321. return ret;
  322. }
  323. if( status == NLAEditor )
  324. {
  325. lockZeichnung();
  326. bool ret = 0;
  327. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  328. ret |= leistenFenster->tick( tickVal );
  329. ret |= editor->tick( tickVal );
  330. unlockZeichnung();
  331. return ret;
  332. }
  333. if( status == NLAImSpiel )
  334. {
  335. lockZeichnung();
  336. bool ret = 0;
  337. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  338. ret |= leistenFenster->tick( tickVal );
  339. ret |= imSpiel->tick( tickVal );
  340. unlockZeichnung();
  341. return ret;
  342. }
  343. if( status != NLANormal )
  344. return 0;
  345. lockZeichnung();
  346. bool ret = 0;
  347. if( titel )
  348. ret |= titel->tick();
  349. if( fenster )
  350. ret |= fenster->tick( tickVal );
  351. unlockZeichnung();
  352. return ret;
  353. }
  354. void NachLogin::render( Bild & zRObj )
  355. {
  356. if( status == NLASpielVideo )
  357. {
  358. lockZeichnung();
  359. spielAufzeichnung->render( zRObj );
  360. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  361. leistenFenster->render( zRObj );
  362. unlockZeichnung();
  363. return;
  364. }
  365. if( status == NLAEditor )
  366. {
  367. lockZeichnung();
  368. editor->render( zRObj );
  369. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  370. leistenFenster->render( zRObj );
  371. unlockZeichnung();
  372. return;
  373. }
  374. if( status == NLAImSpiel )
  375. {
  376. lockZeichnung();
  377. imSpiel->render( zRObj );
  378. if( leistenFenster->hatStyle( Fenster::Style::Sichtbar ) )
  379. leistenFenster->render( zRObj );
  380. unlockZeichnung();
  381. return;
  382. }
  383. if( status != NLANormal )
  384. return;
  385. lockZeichnung();
  386. if( fenster )
  387. fenster->render( zRObj );
  388. unlockZeichnung();
  389. }
  390. // constant
  391. TitelLeiste * NachLogin::zTitelLeiste() const // gibt die Titelleiste zurück
  392. {
  393. return titel;
  394. }
  395. FreundesListe *NachLogin::zFreundesListe() const // gibt die FreundesListe zurück
  396. {
  397. return freunde;
  398. }
  399. ChatLeiste *NachLogin::zChatLeiste() const // gibt die ChatLeiste zurück
  400. {
  401. return chatLeiste;
  402. }
  403. NachrichtenListe *NachLogin::zNachrichtenListe() const // gibt die NachrichtenListe zurück
  404. {
  405. return nachrichtenListe;
  406. }
  407. Spiele *NachLogin::zSpielenFenster() const // gibt das Spiele Fenster zurück
  408. {
  409. return spielenFenster;
  410. }
  411. Shop *NachLogin::zShopFenster() const // gibt das Shop Fenster zurück
  412. {
  413. return shopFenster;
  414. }
  415. AccountAnsehen *NachLogin::zAccountAnsehenFenster() const // gibt das Account Ansehen Fenster zurück
  416. {
  417. return accountAnsehenFenster;
  418. }
  419. MiniGames *NachLogin::zMGFenster() const // gibt das MiniGames Fenster zurück
  420. {
  421. return mgFenster;
  422. }
  423. Neuigkeiten *NachLogin::zNewsFenster() const // gibt das News Fenster zurück
  424. {
  425. return newsFenster;
  426. }
  427. Editor *NachLogin::zEditorFenster() const // gibt das News Fenster zurück
  428. {
  429. return editorFenster;
  430. }
  431. ImSpiel *NachLogin::zImSpiel() const // Gibt das Im Spiel Zeichnung zurück
  432. {
  433. return imSpiel;
  434. }
  435. Einstellungen *NachLogin::zEinstellungen() const // Gibt das Einstellungen Zeichnung zurück
  436. {
  437. return op;
  438. }