#ifndef GRAPHICS_H #define GRAPHICS_H #include #include #define SDL_MAIN_HANDLED #include #include "../game/gst.h" #include "../game/view.h" #include "cam.h" #include class Graphics_sdl_text { public: Graphics_sdl_text(); int get_width (std::string str); void render_text (std::string str, vec2 off); void render_text (std::string str, vec2 off, int r, int g, int b); SDL_Renderer* gRenderer; SDL_Texture *tex; int char_width[128]; }; class Graphics_sdl { public: Graphics_sdl (int resx, int resy); ~Graphics_sdl (); SDL_Renderer* get_renderer (); void load_sheet (); void present (); void change_res (int resx, int resy) { SDL_SetWindowSize(window, resx, resy); } void render_sprite ( int x, int y, int w, int h, int u, int v, int s, int t); void render_rect ( int r, int g, int b, int a, int x, int y, int w, int h); void render_sprite ( int x, int y, int w, int h, int u, int v, int s, int t, int r, int g, int b); Graphics_sdl_text txt; private: SDL_Window* window = NULL; SDL_Surface* screenSurface = NULL; SDL_Renderer* rend = NULL; SDL_Texture* txsprites = NULL; }; class Graphics { public: Graphics (int resx, int resy) : resx(resx), resy(resy), backend(resx, resy) {} ~Graphics (); Graphics_sdl backend; int resx, resy; Cam cam; void render (Gst &gst, View &view); void present (); void change_res (int x, int y) { resx = x; resy = y; backend.change_res(x, y); } }; #endif