Skip to main content
GameDev.net gamedev.net
🔒 Locked

SDL_Events working in my main function but not in a class

Started by mcjohnalds45 Apr 14, 2012 at 11:42 AM 6 replies 3.9k views
Original Post
mcjohnalds45
mcjohnalds45
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++.
alvaro
alvaro
Use a debugger to see what happens when you call onEvent.
SiCrane
SiCrane
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.
sc2slash
sc2slash
Events instead of events in the function onEvent.
alvaro
alvaro
There's still the question of why `events' was a valid identifier in that context. It looks like it shouldn't be.
mcjohnalds45
mcjohnalds45
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!)
alvaro
alvaro
What is `events' in that context? Chances are the answer to that question reveals some other problem with your code.
mcjohnalds45
mcjohnalds45
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!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.