• Advertisement
Sign in to follow this  

SDL_Events working in my main function but not in a class

This topic is 2107 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

First post, hooray! I'm trying to call onEvent (a function of my player class) every time I call SDL_PollEvent in my game loop to move my player up when I press W.

Part of player definition.

void Player::onEvent(SDL_Event Events)
{
if (events.type == SDL_KEYDOWN)
{
switch (Events.key.keysym.sym)
{
case SDLK_w: ySpeed = -maxSpeed; break;
}
}
if (events.type == SDL_KEYUP)
{
switch (Events.key.keysym.sym)
{
case SDLK_w: ySpeed = 0; break;
}
}
}


Part of my main function where onEvent is called.

while (SDL_PollEvent(&events))
{
if (events.type == SDL_QUIT)
run = false;
player.onEvent(events);
}


I expect my player to move up when I press W but it does not, I am almost certain there is something wrong with onEvent's definition or how I am calling it because changing the above piece of code to the following makes the program run as expected.



while (SDL_PollEvent(&events))
{
if (events.type == SDL_QUIT)
run = false;
if (events.type == SDL_KEYDOWN)
{
switch (events.key.keysym.sym)
{
case SDLK_w: player.ySpeed = -player.maxSpeed; break;
}
}
if (events.type == SDL_KEYUP)
{
switch (events.key.keysym.sym)
{
case SDLK_w: player.ySpeed = 0; break;
}
}
}


Sorry for goofing up any terminology, I'm pretty new to c++.

Share this post


Link to post
Share on other sites
Advertisement
Is this your actual code? You seem to have a variable named events and another variable named Events. You probably want the events to be Events.

Share this post


Link to post
Share on other sites
Problem solved, I made stupid mistake, I was using 'events' in my onEvent function instead of 'Events', thanks heaps for pointing that out.

(Note to self: Never code at 1 am ever again!)

Share this post


Link to post
Share on other sites
What is `events' in that context? Chances are the answer to that question reveals some other problem with your code.

Share this post


Link to post
Share on other sites
The non-capital events was valid because I had left accidentally left a variable that I wasn't using any more in my Player class definition, if I had remembered to delete that I wouldn't have had a problem, anyway, thanks a lot!

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement