diff options
| author | 2019-10-29 23:49:27 -0400 | |
|---|---|---|
| committer | 2019-10-29 23:49:27 -0400 | |
| commit | ff8648d31fd678da56612a737106d178468d3b6e (patch) | |
| tree | af6c93ff57cd64dd150ad25d7ee5ba4195a8fb02 | |
| parent | eb9142d314203273f2609164fc52c4e0ab25f2a7 (diff) | |
| download | cetris-ff8648d31fd678da56612a737106d178468d3b6e.tar.gz cetris-ff8648d31fd678da56612a737106d178468d3b6e.tar.bz2 cetris-ff8648d31fd678da56612a737106d178468d3b6e.zip | |
add image loading
| -rw-r--r-- | 355c76847caa311c7caad17a66beb31a.jpg | bin | 0 -> 75661 bytes | |||
| -rw-r--r-- | b6b40b6ae0e0123adc040d16d4b05348.jpg | bin | 0 -> 87427 bytes | |||
| -rw-r--r-- | frontends/sdl/cetris_sdl.h | 2 | ||||
| -rw-r--r-- | frontends/sdl/data/background.png | bin | 0 -> 1059116 bytes | |||
| -rw-r--r-- | frontends/sdl/meson.build | 1 | ||||
| -rw-r--r-- | frontends/sdl/sdl_ui.c | 20 |
6 files changed, 23 insertions, 0 deletions
diff --git a/355c76847caa311c7caad17a66beb31a.jpg b/355c76847caa311c7caad17a66beb31a.jpg Binary files differnew file mode 100644 index 0000000..148d0fe --- /dev/null +++ b/355c76847caa311c7caad17a66beb31a.jpg diff --git a/b6b40b6ae0e0123adc040d16d4b05348.jpg b/b6b40b6ae0e0123adc040d16d4b05348.jpg Binary files differnew file mode 100644 index 0000000..75fc066 --- /dev/null +++ b/b6b40b6ae0e0123adc040d16d4b05348.jpg diff --git a/frontends/sdl/cetris_sdl.h b/frontends/sdl/cetris_sdl.h index 02f7a13..c6779ac 100644 --- a/frontends/sdl/cetris_sdl.h +++ b/frontends/sdl/cetris_sdl.h @@ -47,5 +47,7 @@ typedef struct { SDL_Texture *main; SDL_Texture *queue; SDL_Texture *hold; + SDL_Texture *background; + SDL_Texture *game_background; } solo_game; diff --git a/frontends/sdl/data/background.png b/frontends/sdl/data/background.png Binary files differnew file mode 100644 index 0000000..1dc1448 --- /dev/null +++ b/frontends/sdl/data/background.png diff --git a/frontends/sdl/meson.build b/frontends/sdl/meson.build index a75c494..c4f56d9 100644 --- a/frontends/sdl/meson.build +++ b/frontends/sdl/meson.build @@ -12,6 +12,7 @@ else deps += compiler.find_library('m') deps += dependency('SDl2') deps += dependency('SDL2_ttf') + deps += dependency('SDL2_image') endif if host_machine.system() != 'windows' diff --git a/frontends/sdl/sdl_ui.c b/frontends/sdl/sdl_ui.c index ce2690e..ace4644 100644 --- a/frontends/sdl/sdl_ui.c +++ b/frontends/sdl/sdl_ui.c @@ -2,10 +2,12 @@ #ifdef _WIN32 #include <SDL.h> #include <SDL_ttf.h> +#include <SDL_image.h> #define format_str sprintf_s #else #include <SDL2/SDL.h> #include <SDL2/SDL_ttf.h> +#include <SDL2/SDL_image.h> #define format_str snprintf #endif #include <math.h> @@ -60,6 +62,8 @@ void setup_sdl() { SDL_LoadWAV(name, &(clear_sound[i].wav_spec), &(clear_sound[i].wav_buffer), &(clear_sound[i].wav_length)); } + IMG_Init(IMG_INIT_PNG); + SDL_LoadWAV("data/lock.wav", &(lock_sound.wav_spec), &(lock_sound.wav_buffer), &(lock_sound.wav_length)); audio_device = SDL_OpenAudioDevice(NULL, 0, &(clear_sound[0].wav_spec), NULL, 0); if (audio_device == 0) printf("failed to open audio device\n"); @@ -77,6 +81,11 @@ TTF_Font* get_font(int size) { return fonts[font_count++].font; } +SDL_Texture* load_png(char* file) { + SDL_Surface* loaded_surface = IMG_Load(file); + return SDL_CreateTextureFromSurface(render, loaded_surface); +} + void draw_text(char* string, int x, int y, TTF_Font* font, SDL_Color color) { SDL_Surface *surface; surface = TTF_RenderText_Solid(font, string, color); @@ -93,6 +102,11 @@ void draw_text(char* string, int x, int y, TTF_Font* font, SDL_Color color) { SDL_FreeSurface(surface); } +void draw_image(SDL_Texture *i, int x, int y, int width, int height) { + SDL_Rect dest = {x, y, width, height}; + SDL_RenderCopy(render, i, NULL, &dest); +} + void draw_block(int x, int y, int width, int height, SDL_Color c, SDL_Color off) { SDL_Rect b = {x + 1, y + 1, width - 1, height - 1}; SDL_SetRenderDrawColor(render, c.r, c.g, c.b, c.a); @@ -332,10 +346,12 @@ void draw(solo_game *s) { SDL_RenderClear(render); + draw_image(s->background, 0, 0, W, H); draw_board(s->main, &main_board, (W / 2) - 125, (H / 2) - 250, 250, 500); draw_held_piece(s->hold, &main_board, (W / 2) - 230, (H / 2) - 250, 100, 100); draw_piece_queue(s->queue, &main_board, (W / 2) + 130, (H / 2) - 250, 100, 450); draw_timer(&main_board, 20, 20); + draw_image(s->game_background, (W / 2) - 125, (H / 2) - 250, 250, 500); SDL_RenderPresent(render); } @@ -396,6 +412,10 @@ int main(void) { solo_game screen; load_solo(&screen); + screen.background = load_png("data/background.png"); + screen.game_background = load_png("data/loli.png"); + SDL_SetTextureBlendMode(screen.game_background, SDL_BLENDMODE_BLEND); + SDL_SetTextureAlphaMod(screen.game_background, 40); main_board.count_down = 3; init_game(&g, &config); |