#include #include "intensemarcus.h" #include "Level.h" #include "SDL/SDL.h" #include "SDL/SDL_image.h" int main(int argc, char* args[]) { // Main SDL event structure SDL_Event event; // Current level number int levelNo = 1; // Main loop continues while true bool loop = true; // Timer start Uint32 startTicks = 0; // Game window Screen screen; // Initialise SDL if (SDL_Init(SDL_INIT_EVERYTHING) == -1) return 1; Level level; level.changeLevel(levelNo); // Main loop while (loop) { // Start FPS timer startTicks = SDL_GetTicks(); // Get input while (SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN) { // Adjust player velocity switch (event.key.keysym.sym) { case SDLK_LEFT: case SDLK_a: level.player.incXVel(-MOVE_AMOUNT); break; case SDLK_RIGHT: case SDLK_d: level.player.incXVel(MOVE_AMOUNT); break; case SDLK_UP: case SDLK_w: level.player.jump(); break; case SDLK_LCTRL: level.player.setSprint(true); break; case SDLK_DOWN: // Only crouch if they are not currently crouched if (level.player.getCrouch() == 0) level.player.setCrouch(2); break; case SDLK_SPACE: level.player.attack(); break; case SDLK_0: level.player.setWeapon(0); break; case SDLK_1: level.player.setWeapon(1); break; } } else if (event.type == SDL_KEYUP) { // Adjust player velocity switch (event.key.keysym.sym) { case SDLK_LEFT: case SDLK_a: level.player.incXVel(MOVE_AMOUNT); break; case SDLK_RIGHT: case SDLK_d: level.player.incXVel(-MOVE_AMOUNT); break; case SDLK_LCTRL: level.player.setSprint(false); break; case SDLK_DOWN: // Attempt to uncrouch, if crouching if (level.player.getCrouch() == 2) level.player.setCrouch(1); break; } } // Handle the user trying to close the window if (event.type == SDL_QUIT || event.key.keysym.sym == SDLK_ESCAPE) loop = false; } // Do movement level.move(); // Draw level level.draw(&screen); // Update screen screen.flip(); // Set FPS cap to 30 if ((SDL_GetTicks() - startTicks) < 1000 / FPS) SDL_Delay((1000 / FPS) - (SDL_GetTicks() - startTicks)); } }