aboutsummaryrefslogtreecommitdiff
path: root/graphics.cpp
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-11-09 11:11:23 +0100
committerCharles <sircharlesaze@gmail.com>2019-11-09 11:11:23 +0100
commitcfebccb7a5a4e19090f2259efd18a8e97b318c96 (patch)
tree395ecbaafdd385691c429022ad1b3c88562d140b /graphics.cpp
downloadflappybird-cfebccb7a5a4e19090f2259efd18a8e97b318c96.tar.gz
flappybird-cfebccb7a5a4e19090f2259efd18a8e97b318c96.tar.bz2
flappybird-cfebccb7a5a4e19090f2259efd18a8e97b318c96.zip
Boilerplate SDL class
Diffstat (limited to 'graphics.cpp')
-rw-r--r--graphics.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/graphics.cpp b/graphics.cpp
new file mode 100644
index 0000000..14134dd
--- /dev/null
+++ b/graphics.cpp
@@ -0,0 +1,63 @@
+#include <iostream>
+#include <SDL2/SDL.h>
+#include "graphics.hpp"
+
+#define WINDOW_TITLE "Title"
+#define WINDOW_X 20
+#define WINDOW_Y 20
+
+Graphics::Graphics()
+{
+ window = NULL;
+ renderer = NULL;
+
+ if (SDL_Init(SDL_INIT_VIDEO) < 0)
+ error_quit("init");
+ window = SDL_CreateWindow(WINDOW_TITLE, WINDOW_X, WINDOW_Y, 640, 480, 0);
+ if (window == NULL)
+ error_quit("window init");
+ renderer = SDL_CreateRenderer(window, -1, 0);
+ if (renderer == NULL)
+ error_quit("renderer init");
+ running = true;
+}
+
+void Graphics::run()
+{
+ while (running)
+ {
+ event_handler();
+ // update(state);
+ SDL_Delay(10);
+ }
+}
+
+Graphics::~Graphics()
+{
+ if (renderer != NULL)
+ SDL_DestroyRenderer(renderer);
+ if (window != NULL)
+ SDL_DestroyWindow(window);
+ if (SDL_WasInit(SDL_INIT_VIDEO))
+ SDL_Quit();
+}
+
+void Graphics::event_handler()
+{
+ SDL_Event e;
+
+ while (SDL_PollEvent(&e))
+ switch (e.type)
+ {
+ case SDL_QUIT:
+ running = false;
+ break;
+ }
+}
+
+void Graphics::error_quit(std::string msg)
+{
+ // ~Graphics();
+ std::cerr << "ERROR: " << msg << std::endl;
+ exit(1);
+}