From 55da49a960bc18d70bf2b268b2574a70abb27135 Mon Sep 17 00:00:00 2001 From: Arc0re Date: Sat, 2 Sep 2017 02:25:41 +0200 Subject: [PATCH] frame cap shit --- game.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- game.exe | Bin 179028 -> 179879 bytes 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/game.cpp b/game.cpp index 34b353e..775eeb2 100644 --- a/game.cpp +++ b/game.cpp @@ -18,13 +18,16 @@ #define MAX_MAP_TILES_Y 11 /*16*/ #define TILE_WIDTH 16 #define TILE_HEIGHT 16 +#define PLAYER_SPEED 1.0f #define UNUSED(x) (void)(x) //#define for_map for (int col = 0; col < MAX_MAP_TILES_Y; ++col) for (int row = 0; row < MAX_MAP_TILES_X; ++row) #define debug_print_rect(r) printf("x: %d, y: %d, w: %d, h: %d\n", r.x, r.y, r.w, r.h); +#define USE_VSYNC 0 #define USE_LOGICAL_RENDER_VIEW 1 +#define FPS 60 //#define USE_STATIC_ARRAY_LVL using namespace std; @@ -89,6 +92,18 @@ struct R { } }; +/*struct Keys { + static bool down_pressed; + static bool up_pressed; + static bool left_pressed; + static bool right_pressed; +}; +bool Keys::down_pressed = false; +bool Keys::up_pressed = false; +bool Keys::left_pressed = false; +bool Keys::right_pressed = false; +*/ + // Global variables vector rooms; SDL_Window* window; @@ -100,11 +115,26 @@ struct Player { Rect src_rect; Rect body_hitbox; // player is a 16*16 tile + 8 pixels in height for the head, we ignore those int x, y; - Player() : src_rect(0, 39, TILE_WIDTH, TILE_HEIGHT + 10/*head size*/), body_hitbox(0, 48, TILE_WIDTH, TILE_HEIGHT), x(0), y(0) {} + + float speed; + int x_vel, y_vel; + + Player() : src_rect(0, 39, TILE_WIDTH, TILE_HEIGHT + 10/*head size*/), body_hitbox(0, 48, TILE_WIDTH, TILE_HEIGHT), x(0), y(0), speed(PLAYER_SPEED) + ,x_vel(0), y_vel(0) {} + void draw() { Rect dst(x, y, src_rect()->w, src_rect()->h); SDL_RenderCopy(renderer, tiles, src_rect(), dst()); - } + } + void update() { + // TODO: time wtf, tick + /*if (Keys::down_pressed) y += speed; + if (Keys::up_pressed) y -= speed; + if (Keys::left_pressed) x -= speed; + if (Keys::right_pressed) x += speed;*/ + x += x_vel; + y += y_vel; + } } player; // A room is a screen in the sense of a static screen, aka the player doesnt move a camera, @@ -149,7 +179,12 @@ extern "C" int main(int argc, char** argv) { window = SDL_CreateWindow(WINDOW_TITLE, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WINDOW_WIDTH, WINDOW_HEIGHT, 0); if (!window) die("failed to create window"); - renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED + #if USE_VSYNC + | SDL_RENDERER_PRESENTVSYNC); + #else + ); + #endif if (!renderer) die("failed to create renderer"); #if USE_LOGICAL_RENDER_VIEW @@ -167,10 +202,11 @@ extern "C" int main(int argc, char** argv) { int next_room(0); quit = false; + //float now(0), secs(0), last_time(0); while (!quit) { SDL_Event e; - if (SDL_PollEvent(&e)) { + while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) quit = true; if (e.type == SDL_KEYDOWN) { @@ -181,16 +217,40 @@ extern "C" int main(int argc, char** argv) { case SDLK_1: next_room = 1; break; case SDLK_2: next_room = 2; break; // fin debug + + case SDLK_DOWN: player.y_vel = PLAYER_SPEED; break; + case SDLK_UP: player.y_vel = -PLAYER_SPEED; break; + case SDLK_RIGHT: player.x_vel = PLAYER_SPEED; break; + case SDLK_LEFT: player.x_vel = -PLAYER_SPEED; break; + } + } else if (e.type == SDL_KEYUP) { + switch (e.key.keysym.sym) { + case SDLK_DOWN: if (player.y_vel > 0) player.y_vel = 0; break; + case SDLK_UP: if (player.y_vel < 0) player.y_vel = 0; break; + case SDLK_RIGHT: if (player.x_vel > 0) player.x_vel = 0; break; + case SDLK_LEFT: if (player.x_vel < 0) player.x_vel = 0; break; } } } + player.update(); //TODO: time and shit + SDL_RenderClear(renderer); // Current room rendering draw_room(&next_room); player.draw(); + /* + float freq = SDL_GetPerformanceFrequency(); + + now = SDL_GetPerformanceCounter(); + secs = (now - last_time) / freq; + SDL_Delay(FPS - secs * 1000); + */ + + SDL_Delay(16); + SDL_RenderPresent(renderer); } diff --git a/game.exe b/game.exe index fc4494d0683db505c17dfc3cdfbc43f2c455308e..2ecbeeb828f69a37fa2f83ecff6bbf09538565d7 100644 GIT binary patch delta 30479 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 D9-`tR delta 29205 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