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
    
            }
    
    } // ProcessMoving
    

    Einmal 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 nachrichten

    pseudocode:

    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


Anmelden zum Antworten