// Called each loop iteration update_status ModuleInput::PreUpdate() { static SDL_Event event; mouse_motion = {0, 0}; memset(windowEvents, false, WE_COUNT * sizeof(bool)); const Uint8* keys = SDL_GetKeyboardState(NULL); for(int i = 0; i < MAX_KEYS; ++i) { if(keys[i] == 1) { if(keyboard[i] == KEY_IDLE) keyboard[i] = KEY_DOWN; else keyboard[i] = KEY_REPEAT; } else { if(keyboard[i] == KEY_REPEAT || keyboard[i] == KEY_DOWN) keyboard[i] = KEY_UP; else keyboard[i] = KEY_IDLE; } } for(int i = 0; i < NUM_MOUSE_BUTTONS; ++i) { if(mouse_buttons[i] == KEY_DOWN) mouse_buttons[i] = KEY_REPEAT; if(mouse_buttons[i] == KEY_UP) mouse_buttons[i] = KEY_IDLE; } while(SDL_PollEvent(&event) != 0) { switch(event.type) { case SDL_QUIT: windowEvents[WE_QUIT] = true; break; case SDL_WINDOWEVENT: switch(event.window.event) { //case SDL_WINDOWEVENT_LEAVE: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_FOCUS_LOST: windowEvents[WE_HIDE] = true; break; //case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_MAXIMIZED: case SDL_WINDOWEVENT_RESTORED: windowEvents[WE_SHOW] = true; break; } break; case SDL_MOUSEBUTTONDOWN: mouse_buttons[event.button.button - 1] = KEY_DOWN; break; case SDL_MOUSEBUTTONUP: mouse_buttons[event.button.button - 1] = KEY_UP; break; case SDL_MOUSEMOTION: mouse_motion.x = event.motion.xrel / SCREEN_SIZE; mouse_motion.y = event.motion.yrel / SCREEN_SIZE; mouse.x = event.motion.x / SCREEN_SIZE; mouse.y = event.motion.y / SCREEN_SIZE; break; } } if(GetWindowEvent(EventWindow::WE_QUIT) == true || GetKey(SDL_SCANCODE_ESCAPE) == KEY_DOWN) return UPDATE_STOP; return UPDATE_CONTINUE; }
// Called each loop iteration bool ModuleInput::PreUpdate() { static SDL_Event event; //mouse_motion = { 0, 0 }; memset(windowEvents, false, WE_COUNT * sizeof(bool)); const Uint8* keys = SDL_GetKeyboardState(NULL); for (int i = 0; i < MAX_KEYS; ++i) { if (keys[i] == 1) { if (keyboard[i] == KEY_IDLE) keyboard[i] = KEY_DOWN; else keyboard[i] = KEY_REPEAT; } else { if (keyboard[i] == KEY_REPEAT || keyboard[i] == KEY_DOWN) keyboard[i] = KEY_UP; else keyboard[i] = KEY_IDLE; } } while (SDL_PollEvent(&event) != 0) { switch (event.type) { case SDL_QUIT: windowEvents[WE_QUIT] = true; break; case SDL_WINDOWEVENT: switch (event.window.event) { //case SDL_WINDOWEVENT_LEAVE: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_FOCUS_LOST: windowEvents[WE_HIDE] = true; break; //case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_MAXIMIZED: case SDL_WINDOWEVENT_RESTORED: windowEvents[WE_SHOW] = true; break; } break; } } if (GetWindowEvent(EventWindow::WE_QUIT) == true || GetKey(SDL_SCANCODE_ESCAPE) == KEY_DOWN) return false; return true; }
// Called each loop iteration update_status ModuleInput::PreUpdate() { static SDL_Event event; mouse_motion = {0, 0}; memset(windowEvents, false, WE_COUNT * sizeof(bool)); const Uint8* keys = SDL_GetKeyboardState(NULL); bool w_pulsed = false; for(int i = 0; i < MAX_KEYS; ++i) { if(keys[i] == 1) { if (keyboard[i] == KEY_IDLE){ keyboard[i] = KEY_DOWN; if (App->road->road_state == G_PLAY){ if (keyboard[SDL_SCANCODE_Q] || keyboard[SDL_SCANCODE_RCTRL]) { //up velocity App->player->DownTurboGear(); } if (keyboard[SDL_SCANCODE_E] || keyboard[SDL_SCANCODE_RSHIFT]) { //up velocity App->player->UpTurboGear(); } else if (keyboard[SDL_SCANCODE_L] && App->player->velocity != 0) { App->player->SetWeapon(ROCKET); } else if (keyboard[SDL_SCANCODE_Y]) { App->player->GetRandWeapon(); } else if (keyboard[SDL_SCANCODE_F1]) { //DEBUG App->masks->debug_mode = !App->masks->debug_mode; } else if (keyboard[SDL_SCANCODE_F2]) { //NO_RENDER App->renderer->printer_mode = !App->renderer->printer_mode; } else if (keyboard[SDL_SCANCODE_F3]) { //GOD MODE App->player->GodMode(); } else if (keyboard[SDL_SCANCODE_F4]) { //FULL WEAPON MODE App->player->oil = 99; App->player->spray = 49; App->player->rocket = 9; } else if (keyboard[SDL_SCANCODE_F5]) { //SET AMBIEN FOREST App->road->AmbientChange(A_FOREST); } else if (keyboard[SDL_SCANCODE_F6]) { //SET AMBIEN DESERT App->road->AmbientChange(A_DESERT); } else if (keyboard[SDL_SCANCODE_F7]) { //SET AMBIEN GREEN App->road->AmbientChange(A_GREEN); } else if (keyboard[SDL_SCANCODE_F8]) { //SET AMBIEN GREY App->road->AmbientChange(A_GREY); } else if (keyboard[SDL_SCANCODE_F9]) { //SET AMBIEN SNOW App->road->AmbientChange(A_SNOW); } else if (keyboard[SDL_SCANCODE_F10]) { //LIVES ++ if (App->player->lives < 3){ ++App->player->lives; App->audio->PlayFx(AUD_LIVE_UP); } } else if (keyboard[SDL_SCANCODE_F11]) { //LIVES -- if (App->player->lives > 0) --App->player->lives; } } if (keyboard[SDL_SCANCODE_SPACE]) { //START if (App->road->road_state == G_PAUSE) App->player->Alive(); App->road->SetGameState(G_PLAY); } } else{ keyboard[i] = KEY_REPEAT; if (App->road->road_state == G_PLAY){ if (keyboard[SDL_SCANCODE_W] || keyboard[SDL_SCANCODE_UP]) { //up velocity App->player->UpGear(); w_pulsed = true; } if (keyboard[SDL_SCANCODE_H] && App->player->velocity != 0) { App->player->SetWeapon(GUN); } else if (keyboard[SDL_SCANCODE_J] && App->player->velocity != 0) { App->player->SetWeapon(OIL); } else if (keyboard[SDL_SCANCODE_K] && App->player->velocity != 0) { App->player->SetWeapon(SPRAY); } if (keyboard[SDL_SCANCODE_D] || keyboard[SDL_SCANCODE_RIGHT]) { App->player->SetMovement(RIGHT); } if (keyboard[SDL_SCANCODE_A] || keyboard[SDL_SCANCODE_LEFT]) { App->player->SetMovement(LEFT); } } } } else { if (keyboard[i] == KEY_REPEAT || keyboard[i] == KEY_DOWN){ keyboard[i] = KEY_UP; if (App->player->velocity != 0 && (keyboard[SDL_SCANCODE_A] || keyboard[SDL_SCANCODE_D])) { App->audio->PlayFx(AUD_TURN); } } else keyboard[i] = KEY_IDLE; } } if (!w_pulsed) { App->player->DownGear(); } for(int i = 0; i < NUM_MOUSE_BUTTONS; ++i) { if(mouse_buttons[i] == KEY_DOWN) mouse_buttons[i] = KEY_REPEAT; if(mouse_buttons[i] == KEY_UP) mouse_buttons[i] = KEY_IDLE; } while(SDL_PollEvent(&event) != 0) { switch(event.type) { case SDL_QUIT: windowEvents[WE_QUIT] = true; break; case SDL_WINDOWEVENT: switch(event.window.event) { //case SDL_WINDOWEVENT_LEAVE: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_FOCUS_LOST: windowEvents[WE_HIDE] = true; break; //case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_MAXIMIZED: case SDL_WINDOWEVENT_RESTORED: windowEvents[WE_SHOW] = true; break; } break; case SDL_MOUSEBUTTONDOWN: mouse_buttons[event.button.button - 1] = KEY_DOWN; break; case SDL_MOUSEBUTTONUP: mouse_buttons[event.button.button - 1] = KEY_UP; break; case SDL_MOUSEMOTION: mouse_motion.x = event.motion.xrel / SCREEN_SIZE; mouse_motion.y = event.motion.yrel / SCREEN_SIZE; mouse.x = event.motion.x / SCREEN_SIZE; mouse.y = event.motion.y / SCREEN_SIZE; break; } } if(GetWindowEvent(EventWindow::WE_QUIT) == true || GetKey(SDL_SCANCODE_ESCAPE) == KEY_DOWN) return UPDATE_STOP; return UPDATE_CONTINUE; }