123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #include "SpielMessageProcessor.h"
- #include "../Global/Variablen.h"
- SpielMessageProcessor::SpielMessageProcessor()
- : Thread()
- {
- start();
- }
- void SpielMessageProcessor::thread()
- {
- KSGClient::SpielServerNachricht msg;
- msg.sts = new SpielerTeamStruktur();
- while( spielClient && spielClient->istVerbunden() && spielClient->getNextMessage( msg ) )
- {
- switch( msg.type )
- {
- case 0:
- msg.sts->release();
- return;
- case 1:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->spielGefundenZeitVerbleibend( msg.sekunden );
- break;
- case 2:
- if( nachLogin && nachLogin->zNachrichtenListe() )
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Spiel Abgebrochen" ), msg.message.getThis(), new Text( "Ok" ), 0 );
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->spielGefundenAbbruch();
- break;
- case 3:
- hauptScreen->lock();
- if( nachLogin && nachLogin->zNachrichtenListe() )
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg.message.getThis(), new Text( "Ok" ), 0 );
- hauptScreen->unlock();
- break;
- case 4:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->zurückInWarteschlange( msg.stunden, msg.minuten, msg.sekunden );
- break;
- case 5:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->teamAuswahlBetreten();
- break;
- case 6:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->teamAuswahlInit( (SpielerTeamStruktur*)msg.sts );
- else
- msg.sts->release();
- msg.sts = new SpielerTeamStruktur();
- break;
- case 7:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->teamAuswahlAddSpieler( msg.accountId );
- break;
- case 8:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->teamAuswahlRemoveSpieler( msg.accountId );
- break;
- case 9:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->teamAuswahlSpielerWehseltTeam( msg.accountId, msg.spielerNummer );
- break;
- case 0xA:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->teamAuswahlChatNachricht( msg.message );
- break;
- case 0xB:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->spielGefunden( msg.karteId );
- break;
- case 0xC:
- aktion = 5;
- break;
- case 0xD:
- if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
- nachLogin->zImSpiel()->lBAddSpieler( msg.accountId, msg.spielerNummer );
- break;
- case 0xE:
- if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
- nachLogin->zImSpiel()->lBSetSpielerProzent( msg.accountId, msg.prozent );
- break;
- case 0xF:
- if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
- nachLogin->zImSpiel()->lBSetSpielerPing( msg.accountId, msg.ping );
- break;
- case 0x11:
- if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
- nachLogin->zImSpiel()->endLaden();
- break;
- case 0x12:
- if( nachLogin && nachLogin->zImSpiel() && nachLogin->zImSpiel()->istSichtbar() )
- nachLogin->zImSpiel()->spielNachricht( msg.län, msg.data );
- delete[] msg.data;
- break;
- case 0x13:
- if( nachLogin && nachLogin->zSpielenFenster() )
- nachLogin->zSpielenFenster()->statistikNachricht( msg.län, msg.data );
- delete[] msg.data;
- break;
- default:
- if( nachLogin && nachLogin->zNachrichtenListe() )
- {
- hauptScreen->lock();
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
- new Text( "Unbekannte Nachricht vom Server. Eventuel ist der Client nicht mehr Aktuell." ),
- new Text( "Ok" ), 0 );
- hauptScreen->unlock();
- }
- break;
- }
- }
- msg.sts->release();
- }
|