summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2019-03-10 20:50:06 -0400
committerAndrew Opalach <andrew@akon.city> 2019-03-10 20:50:06 -0400
commit21c18d41ed91742b07e5724c884b2ce62fe0284d (patch)
treed90ae4200f920d36ce29720748e084df64c45e80 /frontend
parentc2d0d1b15cb19940c9ef065ae21dc1fd78f73772 (diff)
downloadcetris-21c18d41ed91742b07e5724c884b2ce62fe0284d.tar.gz
cetris-21c18d41ed91742b07e5724c884b2ce62fe0284d.tar.bz2
cetris-21c18d41ed91742b07e5724c884b2ce62fe0284d.zip
wip movements improvements
Diffstat (limited to 'frontend')
-rw-r--r--frontend/ncurses/ncurses_ui.c6
-rw-r--r--frontend/sdl/sdl_ui.c54
2 files changed, 50 insertions, 10 deletions
diff --git a/frontend/ncurses/ncurses_ui.c b/frontend/ncurses/ncurses_ui.c
index b1407f6..7a92c0f 100644
--- a/frontend/ncurses/ncurses_ui.c
+++ b/frontend/ncurses/ncurses_ui.c
@@ -1,6 +1,10 @@
#include <stdlib.h>
#include <string.h>
+#ifdef _WIN32
+#include "_win\pdcurses\curses.h"
+#else
#include <ncurses.h>
+#endif
#include <locale.h>
#include "cetris.h"
@@ -160,7 +164,7 @@ int main(void) {
}
update_game_tick(&game);
erase();
- draw_board(&game);
+ draw_board();
refresh();
}
return 0;
diff --git a/frontend/sdl/sdl_ui.c b/frontend/sdl/sdl_ui.c
index f862244..8eaecab 100644
--- a/frontend/sdl/sdl_ui.c
+++ b/frontend/sdl/sdl_ui.c
@@ -1,5 +1,14 @@
+#ifdef _WIN32
+#define SDL_DISABLE_IMMINTRIN_H
+#define SDL_MAIN_HANDLED
+#include <SDL.h>
+#include <SDL_ttf.h>
+#else
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
+#endif
+#include <stdio.h>
+#include <string.h>
#include "cetris.h"
@@ -14,6 +23,7 @@ SDL_Renderer* render;
SDL_Texture* block;
SDL_Event e;
TTF_Font* font;
+TTF_Font* big_font;
typedef struct {
int r;
@@ -37,21 +47,27 @@ void setup() {
SDL_Window* win = SDL_CreateWindow("Cetris", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, W, H, SDL_WINDOW_SHOWN);
render = SDL_CreateRenderer(win, -1, SDL_RENDERER_PRESENTVSYNC|SDL_RENDERER_ACCELERATED);
SDL_RenderSetLogicalSize(render, W, H);
- if (!render) exit(fprintf(stderr, "[Error] Could not create SDL renderer\n"));
+ if (!render) exit(printf("[Error] Could not create SDL renderer\n"));
SDL_Surface* s = SDL_LoadBMP("block.bmp");
block = SDL_CreateTextureFromSurface(render, s);
SDL_FreeSurface(s);
TTF_Init();
font = TTF_OpenFont("LiberationMono-Regular.ttf", 18);
+ big_font = TTF_OpenFont("LiberationMono-Regular.ttf", 30);
}
-void draw_text(char* string, int x, int y) {
+void draw_text(char* string, int x, int y, int black) {
int w, h;
char msg[80];
snprintf(msg, 80, string);
TTF_SizeText(font, msg, &w, &h);
- SDL_Surface *msgsurf = TTF_RenderText_Blended(font, msg, (SDL_Color){255, 255, 255, 255});
+ SDL_Surface* msgsurf;
+ if (black) {
+ msgsurf = TTF_RenderText_Blended(big_font, msg, (SDL_Color){20, 20, 30, 255});
+ } else {
+ msgsurf = TTF_RenderText_Blended(font, msg, (SDL_Color){255, 255, 255, 255});
+ }
SDL_Texture *msgtex = SDL_CreateTextureFromSurface(render, msgsurf);
SDL_Rect fromrec = {0, 0, msgsurf->w, msgsurf->h};
SDL_Rect torec = {x, y, msgsurf->w, msgsurf->h};
@@ -100,28 +116,28 @@ void draw_stuff() {
SDL_Rect s = {290, 20 + y_off, 135, 42};
SDL_RenderFillRect(render, &s);
SDL_RenderDrawRect(render, &s);
- draw_text("SCORE", 295, 23 + y_off);
+ draw_text("SCORE", 295, 23 + y_off, 0);
char* score = malloc(sizeof(char) * 25);
sprintf(score, "%li", g.score);
- draw_text(score, 294 + strlen(score), 40 + y_off);
+ draw_text(score, 294 + strlen(score), 40 + y_off, 0);
free(score);
SDL_Rect l = {290, 70 + y_off, 135, 42};
SDL_RenderFillRect(render, &l);
SDL_RenderDrawRect(render, &l);
- draw_text("LEVEL", 295, 73 + y_off);
+ draw_text("LEVEL", 295, 73 + y_off, 0);
char* level = malloc(sizeof(char) * 25);
sprintf(level, "%i", g.level);
- draw_text(level, 294 + strlen(level), 90 + y_off);
+ draw_text(level, 294 + strlen(level), 90 + y_off, 0);
free(level);
SDL_Rect l1 = {290, 120 + y_off, 135, 42};
SDL_RenderFillRect(render, &l1);
SDL_RenderDrawRect(render, &l1);
- draw_text("LINES", 295, 123 + y_off);
+ draw_text("LINES", 295, 123 + y_off, 0);
char* lines = malloc(sizeof(char) * 25);
sprintf(lines, "%i", g.lines);
- draw_text(lines, 294 + strlen(lines), 140 + y_off);
+ draw_text(lines, 294 + strlen(lines), 140 + y_off, 0);
free(lines);
SDL_SetRenderDrawColor(render, 255, 255, 255, 124);
@@ -148,6 +164,12 @@ void draw_stuff() {
}
}
}
+
+ if (g.game_over) {
+ draw_text("GAME OVER", 76, 220, 1);
+ draw_text("r to restart", 48, 255, 1);
+ }
+
SDL_RenderPresent(render);
}
@@ -171,7 +193,21 @@ int main(void) {
move_hard_drop(&g); break;
case SDLK_UP:
rotate_clockwise(&g); break;
+ case SDLK_r:
+ if (g.game_over) init_game(&g);
}
+ break;
+ case SDL_KEYUP:
+ switch (e.key.keysym.sym) {
+ case SDLK_LEFT:
+ case SDLK_RIGHT:
+ case SDLK_DOWN:
+ case SDLK_SPACE:
+ case SDLK_UP:
+ clear_held_key(&g.input);
+ break;
+ }
+ break;
}
}
update_game_tick(&g);