summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c51
1 files changed, 44 insertions, 7 deletions
diff --git a/main.c b/main.c
index 0d14b64..0f5f4c7 100644
--- a/main.c
+++ b/main.c
@@ -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);