Events in 2 Verschiedenen Klassen
-
Hallo
ich möchte meine Events auf 2 Klassen verteilen, doch wie kann ich das Anstellen ?
void CPlayer::ProcessMoving () { done = false; SDL_Event event; while (SDL_PollEvent(&event)) { // Kontrolliert ob es Nachrichten gibt switch (event.type) { // Exit wenn das Fenster geschlossen ist case SDL_QUIT: done = true; break; // Kontrolliert ob es einen Tastendruck gab case SDL_KEYDOWN: { // EXIT wenn escape gedrückt wurde if (event.key.keysym.sym == SDLK_ESCAPE) done = 2; break; } case SDL_JOYBUTTONDOWN: if ( event.jbutton.button == 7 ) { done = true; break; } case SDL_JOYAXISMOTION: if( event.jaxis.which == 0 ) { //Hat die X Axe sich bewegt if( event.jaxis.axis == 0 ) { //Ist die X Achse neutral if( ( event.jaxis.value > -8000 ) && ( event.jaxis.value < 8000 ) ) { xVel = 0; } else { //Stellt den Mittelpunkt ein if( event.jaxis.value < 0 ) { xVel = -10; } else { xVel = 10; } } } else if( event.jaxis.axis == 1 ) { //IIst die Y Achse Neutral if( ( event.jaxis.value > -8000 ) && ( event.jaxis.value < 8000 ) ) { yVel = 0; } //wenn nicht else { //Stellt den Mittelpunkt ein if( event.jaxis.value < 0 ) { yVel = -10; } else { yVel = 10; } } } } // ende switch } // ende der Nachrichtenverarbeitung } } // ProcessMovingEinmal die Keyboard eingaben und einmal die Joystick eingaben.
Das Problem was ich habe ist dies Aufzuteilen und in der while schleife abzufangen.Für Hilfe wäre ich dankbar
-
machs doch andersrum
schick einfach alle keyboard und joystick events an alle klassen und die dies interessiert verarbeiten die nachrichtenpseudocode:
SDL_Event event; feld_mit_basisklassen[anzahl_klassen]; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: case SDL_JOYBUTTONDOWN: case SDL_JOYAXISMOTION: for(int i = 0; i < anzahl_klassen; ++i) { feld_mit_basisklassen[i]->processEvent(event); } break; } }quasi als denkanstoß
-
feld_mit_basisklasses
acker_ohne_bodenschlechtes?
-
is_ja_gut :p