diff options
author | Juan Manuel Tomas <jtomas1815@gmail.com> | 2022-01-13 09:58:22 -0300 |
---|---|---|
committer | Juan Manuel Tomas <jtomas1815@gmail.com> | 2022-01-13 09:58:22 -0300 |
commit | f3f382fe4f3a6b074be6fead547f149cafc113d9 (patch) | |
tree | 7151da297a00e346fcc61fe1908d90f58afa5b23 | |
parent | 8cea7cf2986a36d51c1ce81d36d2d7c3dffa071c (diff) | |
download | cannons-f3f382fe4f3a6b074be6fead547f149cafc113d9.tar.gz cannons-f3f382fe4f3a6b074be6fead547f149cafc113d9.zip |
Create tiled background and foreground
-rw-r--r-- | background.bmp | bin | 0 -> 196662 bytes | |||
-rwxr-xr-x | build.sh | 4 | ||||
-rw-r--r-- | foreground.bmp | bin | 0 -> 196662 bytes | |||
-rw-r--r-- | main.c | 51 | ||||
-rw-r--r-- | test-map.bmp | bin | 2764854 -> 0 bytes |
5 files changed, 46 insertions, 9 deletions
diff --git a/background.bmp b/background.bmp Binary files differnew file mode 100644 index 0000000..ae47c4b --- /dev/null +++ b/background.bmp @@ -1,3 +1,3 @@ -gcc -c main.c -o main.o -gcc main.o -lSDL2 -o main +gcc -Wall -pedantic -O0 -c main.c -o main.o && \ +gcc main.o -lSDL2 -o main && \ ./main diff --git a/foreground.bmp b/foreground.bmp Binary files differnew file mode 100644 index 0000000..da6b5d7 --- /dev/null +++ b/foreground.bmp @@ -1,14 +1,39 @@ #include <stdio.h> #include <SDL2/SDL.h> +#define WINDOW_W 1280 +#define WINDOW_H 720 + +SDL_Texture *createTiledTexture(SDL_Renderer *context, const char *filename) { + SDL_Surface *texture_surface = SDL_LoadBMP(filename); + SDL_Texture *texture_tile = SDL_CreateTextureFromSurface(context, texture_surface); + int tile_w = texture_surface->w; + int tile_h = texture_surface->h; + SDL_FreeSurface(texture_surface); + + Uint32 pixelformat; + SDL_QueryTexture(texture_tile, &pixelformat, 0, 0, 0); + SDL_Texture *texture = SDL_CreateTexture(context, pixelformat, SDL_TEXTUREACCESS_STATIC | SDL_TEXTUREACCESS_TARGET, WINDOW_W, WINDOW_H); + SDL_SetRenderTarget(context, texture); + for (int y = 0; y < WINDOW_H; y += tile_h) { + for (int x = 0; x < WINDOW_W; x += tile_w) { + SDL_Rect tile_rect = { x, y, tile_w, tile_h }; + SDL_RenderCopy(context, texture_tile, 0, &tile_rect); + } + } + SDL_DestroyTexture(texture_tile); + SDL_SetRenderTarget(context, 0); + return texture; +} + int main() { SDL_Init(SDL_INIT_VIDEO); SDL_Window *window = SDL_CreateWindow("Cannons", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, - 1280, - 720, + WINDOW_W, + WINDOW_H, 0); SDL_Renderer *context = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); @@ -16,13 +41,25 @@ int main() { SDL_SetRenderDrawColor(context, 40, 40, 40, 255); SDL_RenderClear(context); - SDL_Surface *map_surface = SDL_LoadBMP("test-map.bmp"); - SDL_Texture *map = SDL_CreateTextureFromSurface(context, map_surface); - SDL_RenderCopy(context, map, 0, 0); + SDL_Texture *background = createTiledTexture(context, "background.bmp"); + SDL_Texture *foreground = createTiledTexture(context, "foreground.bmp"); + + // TODO: + // - Map has a mask generated by the game, of where the terrain (foregroud) exists - SDL_RenderPresent(context); + int exit = 0; + while (!exit) { + SDL_Event event = {0}; + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + exit = 1; + } + } + SDL_RenderCopy(context, foreground, 0, 0); - SDL_Delay(1000); + SDL_RenderPresent(context); + SDL_Delay(10); + } SDL_DestroyRenderer(context); SDL_DestroyWindow(window); diff --git a/test-map.bmp b/test-map.bmp Binary files differdeleted file mode 100644 index 7632ee6..0000000 --- a/test-map.bmp +++ /dev/null |