SpielMessageProcessor.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "SpielMessageProcessor.h"
  2. #include "../Global/Variablen.h"
  3. SpielMessageProcessor::SpielMessageProcessor()
  4. : Thread()
  5. {
  6. start();
  7. }
  8. void SpielMessageProcessor::thread()
  9. {
  10. KSGClient::SpielServerNachricht msg;
  11. msg.sts = new SpielerTeamStruktur();
  12. while( spielClient && spielClient->istVerbunden() && spielClient->getNextMessage( msg ) )
  13. {
  14. switch( msg.type )
  15. {
  16. case 0: // verbindung getrennt
  17. msg.sts->release();
  18. return;
  19. case 1: // verbleibende Zeit
  20. if( nachLogin && nachLogin->zSpielenFenster() )
  21. nachLogin->zSpielenFenster()->spielGefundenZeitVerbleibend( msg.sekunden );
  22. break;
  23. case 2: // SpielErstellt abbruch
  24. if( nachLogin && nachLogin->zNachrichtenListe() )
  25. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Spiel Abgebrochen" ), msg.message.getThis(), new Text( "Ok" ), 0 );
  26. if( nachLogin && nachLogin->zSpielenFenster() )
  27. nachLogin->zSpielenFenster()->spielGefundenAbbruch();
  28. break;
  29. case 3: // Fehler
  30. hauptScreen->lock();
  31. if( nachLogin && nachLogin->zNachrichtenListe() )
  32. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg.message.getThis(), new Text( "Ok" ), 0 );
  33. hauptScreen->unlock();
  34. break;
  35. case 4: // zurück in Warteschlange
  36. if( nachLogin && nachLogin->zSpielenFenster() )
  37. nachLogin->zSpielenFenster()->zurückInWarteschlange( msg.stunden, msg.minuten, msg.sekunden );
  38. break;
  39. case 5: // Erstellung fortsetzen
  40. if( nachLogin && nachLogin->zSpielenFenster() )
  41. nachLogin->zSpielenFenster()->teamAuswahlBetreten();
  42. break;
  43. case 6: // SpielErstellt Initialisierung
  44. if( nachLogin && nachLogin->zSpielenFenster() )
  45. nachLogin->zSpielenFenster()->teamAuswahlInit( (SpielerTeamStruktur*)msg.sts );
  46. else
  47. msg.sts->release();
  48. msg.sts = new SpielerTeamStruktur();
  49. break;
  50. case 7: // SpielErstellt Spieler hinzugefügt
  51. if( nachLogin && nachLogin->zSpielenFenster() )
  52. nachLogin->zSpielenFenster()->teamAuswahlAddSpieler( msg.accountId );
  53. break;
  54. case 8: // SpielErstellt Spieler entfernt
  55. if( nachLogin && nachLogin->zSpielenFenster() )
  56. nachLogin->zSpielenFenster()->teamAuswahlRemoveSpieler( msg.accountId );
  57. break;
  58. case 9: // SpielErstellt Spieler wechselt Team
  59. if( nachLogin && nachLogin->zSpielenFenster() )
  60. nachLogin->zSpielenFenster()->teamAuswahlSpielerWehseltTeam( msg.accountId, msg.spielerNummer );
  61. break;
  62. case 0xA: // SpielErstellt Chat Nachricht
  63. if( nachLogin && nachLogin->zSpielenFenster() )
  64. nachLogin->zSpielenFenster()->teamAuswahlChatNachricht( msg.message );
  65. break;
  66. case 0xB: // Spiel gefunden
  67. if( nachLogin && nachLogin->zSpielenFenster() )
  68. nachLogin->zSpielenFenster()->spielGefunden( msg.karteId );
  69. break;
  70. case 0xC: // Spiel Laden beginnen
  71. aktion = 5;
  72. break;
  73. case 0xD: // Spiel Laden Spieler hinzufügen
  74. if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
  75. nachLogin->zImSpiel()->lBAddSpieler( msg.accountId, msg.spielerNummer );
  76. break;
  77. case 0xE: // Spiel Laden Spieler Prozent
  78. if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
  79. nachLogin->zImSpiel()->lBSetSpielerProzent( msg.accountId, msg.prozent );
  80. break;
  81. case 0xF: // Spiel Laden Spieler Ping
  82. if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
  83. nachLogin->zImSpiel()->lBSetSpielerPing( msg.accountId, msg.ping );
  84. break;
  85. case 0x11: // Spiel Laden Fertig
  86. if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
  87. nachLogin->zImSpiel()->endLaden();
  88. break;
  89. case 0x12: // Spiel Nachricht
  90. if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
  91. nachLogin->zImSpiel()->spielNachricht( msg.län, msg.data );
  92. delete[] msg.data;
  93. break;
  94. case 0x13: // Statistik Nachricht
  95. if( nachLogin && nachLogin->zSpielenFenster() )
  96. nachLogin->zSpielenFenster()->statistikNachricht( msg.län, msg.data );
  97. delete[] msg.data;
  98. break;
  99. default: // Unbekannte Servernachricht
  100. if( nachLogin && nachLogin->zNachrichtenListe() )
  101. {
  102. hauptScreen->lock();
  103. nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
  104. new Text( "Unbekannte Nachricht vom Server. Eventuel ist der Client nicht mehr Aktuell." ),
  105. new Text( "Ok" ), 0 );
  106. hauptScreen->unlock();
  107. }
  108. break;
  109. }
  110. }
  111. msg.sts->release();
  112. }