SDL_Events working in my main function but not in a class

Started by
6 comments, last by mcjohnalds45 12 years ago
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++.
Advertisement
Use a debugger to see what happens when you call onEvent.
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.
Events instead of events in the function onEvent.
There's still the question of why `events' was a valid identifier in that context. It looks like it shouldn't be.
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!)
What is `events' in that context? Chances are the answer to that question reveals some other problem with your code.
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!

This topic is closed to new replies.

Advertisement