diff --git a/res/1024.png b/res/1024.png
new file mode 100644
index 0000000..3be11a9
Binary files /dev/null and b/res/1024.png differ
diff --git a/res/1024.svg b/res/1024.svg
new file mode 100644
index 0000000..b7f42aa
--- /dev/null
+++ b/res/1024.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/128.png b/res/128.png
new file mode 100644
index 0000000..770bebf
Binary files /dev/null and b/res/128.png differ
diff --git a/res/128.svg b/res/128.svg
new file mode 100644
index 0000000..ebba172
--- /dev/null
+++ b/res/128.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/16.png b/res/16.png
new file mode 100644
index 0000000..011bcc3
Binary files /dev/null and b/res/16.png differ
diff --git a/res/16.svg b/res/16.svg
new file mode 100644
index 0000000..4cfd9ba
--- /dev/null
+++ b/res/16.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/2.png b/res/2.png
new file mode 100644
index 0000000..e6029b6
Binary files /dev/null and b/res/2.png differ
diff --git a/res/2.svg b/res/2.svg
new file mode 100644
index 0000000..c3d3edf
--- /dev/null
+++ b/res/2.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/2048.png b/res/2048.png
new file mode 100644
index 0000000..94e7a4b
Binary files /dev/null and b/res/2048.png differ
diff --git a/res/2048.svg b/res/2048.svg
new file mode 100644
index 0000000..b1f831b
--- /dev/null
+++ b/res/2048.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/256.png b/res/256.png
new file mode 100644
index 0000000..06ce235
Binary files /dev/null and b/res/256.png differ
diff --git a/res/256.svg b/res/256.svg
new file mode 100644
index 0000000..682770d
--- /dev/null
+++ b/res/256.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/32.png b/res/32.png
new file mode 100644
index 0000000..c06c5d6
Binary files /dev/null and b/res/32.png differ
diff --git a/res/32.svg b/res/32.svg
new file mode 100644
index 0000000..6bbb23c
--- /dev/null
+++ b/res/32.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/4.png b/res/4.png
new file mode 100644
index 0000000..5b94c25
Binary files /dev/null and b/res/4.png differ
diff --git a/res/4.svg b/res/4.svg
new file mode 100644
index 0000000..bb581f8
--- /dev/null
+++ b/res/4.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/512.png b/res/512.png
new file mode 100644
index 0000000..d45dd3a
Binary files /dev/null and b/res/512.png differ
diff --git a/res/512.svg b/res/512.svg
new file mode 100644
index 0000000..c9439c3
--- /dev/null
+++ b/res/512.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/64.png b/res/64.png
new file mode 100644
index 0000000..85eb3f8
Binary files /dev/null and b/res/64.png differ
diff --git a/res/64.svg b/res/64.svg
new file mode 100644
index 0000000..4840034
--- /dev/null
+++ b/res/64.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/8.png b/res/8.png
new file mode 100644
index 0000000..beb68c0
Binary files /dev/null and b/res/8.png differ
diff --git a/res/8.svg b/res/8.svg
new file mode 100644
index 0000000..541fbcf
--- /dev/null
+++ b/res/8.svg
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/res/tile.png b/res/tile.png
index 9e62479..4509e58 100644
Binary files a/res/tile.png and b/res/tile.png differ
diff --git a/res/tile.svg b/res/tile.svg
new file mode 100644
index 0000000..1342916
--- /dev/null
+++ b/res/tile.svg
@@ -0,0 +1,51 @@
+
+
+
+
diff --git a/src/2048.c b/src/2048.c
index bbc7476..828ecc2 100644
--- a/src/2048.c
+++ b/src/2048.c
@@ -39,7 +39,6 @@ void game_destroy(Game game) {
}
uint8_t game_move(Game *game, Direction direction) {
- // just one direction for testing purposes
for (int i = 0; i < game->field_size_y; i++) {
uint16_t **field = game->field;
// move everything on one side
diff --git a/src/gui.c b/src/gui.c
index 456211f..c240b65 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -6,12 +6,21 @@
#include
const SCREEN_WIDTH = 800;
-const SCREEN_HEIGHT = 600;
+const SCREEN_HEIGHT = 920;
SDL_Window* window = NULL;
// SDL_Surface* screenSurface = NULL;
SDL_Renderer *window_renderer = NULL;
SDL_Texture* tile_texture = NULL;
+SDL_Texture* tile_textures[13];
+SDL_Rect tile_size;
+
+SDL_Texture *texture_from_png(char *n) {
+ SDL_Surface *s = IMG_Load(n);
+ SDL_Texture *t = SDL_CreateTextureFromSurface( window_renderer, s);
+ SDL_FreeSurface(s);
+ return t;
+}
void gui_init() {
@@ -38,9 +47,22 @@ void gui_init() {
// SDL_UpdateWindowSurface(window);
// load up textures
- SDL_Surface *tile_surface = IMG_Load("res/tile.png");
- tile_texture = SDL_CreateTextureFromSurface( window_renderer, tile_surface);
- SDL_FreeSurface(tile_surface);
+ tile_texture = texture_from_png("res/tile.png");
+ tile_textures[0] = tile_textures;
+ tile_textures[1] = texture_from_png("res/2.png");
+ tile_textures[3] = texture_from_png("res/4.png");
+ tile_textures[4] = texture_from_png("res/8.png");
+ tile_textures[5] = texture_from_png("res/16.png");
+ tile_textures[6] = texture_from_png("res/32.png");
+ tile_textures[7] = texture_from_png("res/64.png");
+ tile_textures[8] = texture_from_png("res/128.png");
+ tile_textures[9] = texture_from_png("res/256.png");
+ tile_textures[10] = texture_from_png("res/512.png");
+ tile_textures[11] = texture_from_png("res/1024.png");
+ tile_textures[12] = texture_from_png("res/2048.png");
+ tile_size.x = 0;
+ tile_size.y = 0;
+ SDL_QueryTexture(tile_texture, NULL, NULL, &tile_size.w, &tile_size.h);
}
void gui_destroy() {
@@ -55,10 +77,13 @@ void gui_destroy() {
void gui_loop(Game *game) {
bool quit = false;
+ bool needs_redraw = true; // there's no need to redraw window when nothing's changed. will be set to false later. first run has to be always done
SDL_Event e;
+
while(!quit) {
while( SDL_PollEvent( &e ) != 0 )
{
+ needs_redraw = true;
//User requests quit
if( e.type == SDL_QUIT )
{
@@ -66,8 +91,20 @@ void gui_loop(Game *game) {
}
}
- SDL_RenderCopy( window_renderer, tile_texture, NULL, NULL );
- SDL_RenderPresent(window_renderer);
+ if (needs_redraw) {
+ SDL_RenderClear(window_renderer);
+ SDL_Rect tile_rect = tile_size;
+ for (int i = 0; i < game->field_size_x; i++) {
+ tile_rect.x = i * 175;
+ for (int j = 0; j < game->field_size_y; j++) {
+ tile_rect.y = j * 175;
+ SDL_RenderCopy( window_renderer, tile_texture, NULL, &tile_rect);
+ }
+ }
+ SDL_RenderPresent(window_renderer);
+ needs_redraw = false;
+ }
+
}
}
\ No newline at end of file