commit 2cdd7ee83706f29eb93f813e5a104bec906426a5 Author: Garritt McCune Date: Tue Dec 14 21:05:07 2021 +0000 Initial commit diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..a99fdfd --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +gcc -o main src/main.c -lSDL2 diff --git a/include/app.h b/include/app.h new file mode 100644 index 0000000..b6fe230 --- /dev/null +++ b/include/app.h @@ -0,0 +1,10 @@ +#ifndef _CAPP_H + +#define _CAPP_H + + +#include + + + +#endif diff --git a/include/vscreen.h b/include/vscreen.h new file mode 100644 index 0000000..8943fb1 --- /dev/null +++ b/include/vscreen.h @@ -0,0 +1,12 @@ +#ifndef _VSCREEN_H +#define _VSCREEN_H + +#include + +#define VSCREEN_WIDTH 640 +#define VSCREEN_HEIGHT 480 +#define VSCREEN_COLUMN_COUNT 20 + +void renderClientScreen(SDL_Renderer *); + +#endif \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..048b81b --- /dev/null +++ b/src/main.c @@ -0,0 +1,151 @@ +#include "SDL2/SDL.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../include/vscreen.h" + +const int SCREEN_WIDTH = 1280; +const int SCREEN_HEIGHT = 720; + +typedef struct { + SDL_Window *window; + SDL_Renderer *renderer; + int up; + int down; + int left; + int right; +} App; + +typedef struct { + int x; + int y; + SDL_Texture *texture; +} Entity; + +App app; + +Entity player; + +void handleInput(void); +void cleanup(void); +void prepareScene(void); +void presentScene(void); +SDL_Texture *loadTexture(char *); +void blit(SDL_Texture *, int, int); +int getIndex(int, int, int); + +int main(int argc, char* args[]) { + memset(&app, 0, sizeof(app)); + memset(&player, 0, sizeof(player)); + + player.x = 100; + player.y = 100; + player.texture = loadTexture("text.jpg"); + + IMG_Init(IMG_INIT_JPG); + + atexit(cleanup); + + if (SDL_Init(SDL_INIT_VIDEO) < 0){ + printf("SDL failed: %s\n", SDL_GetError()); + return -1; + } + + app.window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); + + if (app.window == NULL){ + printf("Window creation failed: %s\n", SDL_GetError()); + return -1; + } + + SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); + + app.renderer = SDL_CreateRenderer(app.window, -1, SDL_RENDERER_ACCELERATED); + + if (app.renderer == NULL) { + printf("Renderer failed: %s\n", SDL_GetError()); + return -1; + } + + while(1) { + prepareScene(); + + handleInput(); + + //blit(player.texture, player.x, player.y); + + presentScene(); + + SDL_Delay(16); + } +} + +void blit(SDL_Texture *texture, int x, int y) +{ + SDL_Rect dest; + + dest.x = x; + dest.y = y; + SDL_QueryTexture(texture, NULL, NULL, &dest.w, &dest.h); + + SDL_RenderCopy(app.renderer, texture, NULL, &dest); +} + +SDL_Texture* loadTexture(char *filePath) { + SDL_Texture *texture; + + texture = IMG_LoadTexture(app.renderer, filePath); + + return texture; +} + +void cleanup(void) { + SDL_DestroyWindow(app.window); + SDL_DestroyRenderer(app.renderer); + SDL_Quit(); +} + +void handleInput(void) { + SDL_Event event; + + while(SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_QUIT: + exit(0); + break; + case SDL_KEYDOWN: + player.x += 1; + player.y += 1; + break; + default: + break; + } + } +} + +void prepareScene(void) +{ + SDL_SetRenderDrawColor(app.renderer, 96, 128, 255, 255); + SDL_RenderClear(app.renderer); + + SDL_Rect rect = {0, 0, VSCREEN_WIDTH, VSCREEN_HEIGHT}; + + SDL_RenderSetViewport(app.renderer, &rect); + + renderClientScreen(app.renderer); +} + +void presentScene(void) +{ + SDL_RenderPresent(app.renderer); +} + +int getIndex(int x, int y, int columns) { + return x + y * columns; +} \ No newline at end of file diff --git a/src/vscreen.c b/src/vscreen.c new file mode 100644 index 0000000..9352596 --- /dev/null +++ b/src/vscreen.c @@ -0,0 +1,14 @@ +#include "../include/vscreen.h" +#include +#include +#include + +void renderClientScreen(SDL_Renderer* renderer) { + SDL_Rect dest; + + SDL_RenderGetViewport(renderer, &dest); + + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + + SDL_RenderFillRect(renderer, &dest); +} \ No newline at end of file