From fc61921ab63e01cf447816491fbd4e028dda961a Mon Sep 17 00:00:00 2001 From: mallocnull Date: Mon, 6 Nov 2017 17:02:04 -0600 Subject: [PATCH] rendering stuff except not much --- core | Bin 0 -> 827392 bytes debug | 2 +- src/client/client.c | 41 ++++++++++-------------------- src/client/client.h | 1 + src/client/screen.c | 59 ++++++++++++++++++++++++++++++++++++++++++++ src/client/screen.h | 13 ++++++++++ src/common.h | 6 ++++- 7 files changed, 92 insertions(+), 30 deletions(-) create mode 100644 core diff --git a/core b/core new file mode 100644 index 0000000000000000000000000000000000000000..bf92d1ee054cbba89556cfd3406598ff7b5a7933 GIT binary patch literal 827392 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ν&z&~)4$k2aP6SaaOnu~F^j*vE|Dn##W^ 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 Wu;75}0Ph3b2XG(2eIWmR;Qs^B0HbgK literal 0 HcmV?d00001 diff --git a/debug b/debug index 27cd1d0..4670304 100755 --- a/debug +++ b/debug @@ -1,2 +1,2 @@ -gcc src/*.c src/server/*.c src/client/*.c -g -iquotesrc/ -lpthread -lncurses -o bin/mahou +gcc src/*.c src/server/*.c src/client/*.c -g -iquotesrc/ -lpthread -lncursesw -o bin/mahou chmod +x bin/mahou diff --git a/src/client/client.c b/src/client/client.c index 0120882..1b0527c 100644 --- a/src/client/client.c +++ b/src/client/client.c @@ -2,7 +2,7 @@ #define BANNER_WIDTH 57 #define BANNER_HEIGHT 6 -#define AFTER_BANNER BANNER_HEIGHT + 6 +#define AFTER_BANNER BANNER_HEIGHT + 3 char BANNER[BANNER_HEIGHT][BANNER_WIDTH + 1] = { ". : :::. :: .: ... ... :::", ";;,. ;;; ;;`;; ,;; ;;, .;;;;;;;. ;; ;;;", @@ -31,6 +31,7 @@ struct { static int main_menu(); static void how_to_play(); +static void login_prompt(char*, uint16_t*); static void create_account(); static void client_loop(); @@ -47,6 +48,7 @@ void client() { return; } + setlocale(LC_ALL, ""); initscr(); start_color(); @@ -72,22 +74,15 @@ void client() { } endwin(); - - /*char in[10]; - sock_recv(sock, in, 10); - printf("got %s\r\n", in); - - sock_send(sock, "hello", 6); - printf("sent message"); - - sock_stop(sock); - sock_free(sock);*/ + + sock_stop(ctx.sock); + sock_free(ctx.sock); } static void draw_banner() { int i; for(i = 0; i < BANNER_HEIGHT; ++i) - mvprintw(3 + i, (COLS - BANNER_WIDTH) / 2, BANNER[i]); + scr_center_write(BANNER[i], BANNER_WIDTH, 3 + i); } static int main_menu() { @@ -96,10 +91,13 @@ static int main_menu() { clear(); noecho(); - //raw(); cbreak(); +#ifdef WORK + init_pair(1, COLOR_WHITE, COLOR_BLACK); +#else init_pair(1, COLOR_WHITE, COLOR_BLUE); +#endif init_pair(2, COLOR_BLACK, COLOR_CYAN); attron(COLOR_PAIR(1) | A_BOLD); @@ -114,7 +112,7 @@ static int main_menu() { color = selected == i ? 2 : 1; attron(COLOR_PAIR(color)); - mvprintw(AFTER_BANNER + i*2, (COLS - (MM_MAX_OPT_LEN + 2)) / 2, + mvprintw(AFTER_BANNER + 3 + i*2, (COLS - (MM_MAX_OPT_LEN + 2)) / 2, "* %s", MM_OPTIONS[i]); attroff(COLOR_PAIR(color)); } @@ -152,21 +150,8 @@ void how_to_play() { } void create_account() { - clear(); - noecho(); - cbreak(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - init_pair(2, COLOR_BLACK, COLOR_CYAN); - - attron(COLOR_PAIR(1) | A_BOLD); - - scr_fill(); - draw_banner(); - - move(0, 0); - - printw("%i %i %i ", KEY_BACKSPACE, KEY_BTAB, KEY_CTAB); + scr_alert(20, "this prompt box is a test of prompt box is a test of prompt box is a test of prompt box is a test of prompt box is a test of"); int a = 0; while(a != KEY_LF) diff --git a/src/client/client.h b/src/client/client.h index d00253c..8fc692e 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -2,6 +2,7 @@ #define CLIENT_H #include +#include #include #include "sock.h" #include "screen.h" diff --git a/src/client/screen.c b/src/client/screen.c index 933e94f..2c81d26 100644 --- a/src/client/screen.c +++ b/src/client/screen.c @@ -7,6 +7,13 @@ void scr_char_fill(char c) { addch(c); } +void scr_str_fill(char *s) { + int i, j; + for(i = 0; i < LINES; ++i) + for(j = 0; j < COLS; ++j) + addstr(s); +} + void scr_fill() { scr_char_fill(' '); } @@ -14,3 +21,55 @@ void scr_fill() { void scr_hide_cursor() { move(LINES - 1, COLS - 1); } + +void scr_center_write(char *string, int length, int row) { + if(length == 0) + length = strlen(string); + + mvprintw(row, (COLS - length) / 2, string); +} + +void scr_box(int top, int left, int width, int height) { + int i, j; + + mvaddstr(top, left, "\u2554"); + for(i = 0; i < width - 2; ++i) + addstr("\u2550"); + addstr("\u2557"); + + for(i = 0; i < height - 2; ++i) { + mvaddstr(top + i + 1, left, "\u2551"); + for(j = 0; j < width - 2; ++j) + addch(' '); + addstr("\u2551"); + } + + mvaddstr(top, left, "\u255A"); + for(i = 0; i < width - 2; ++i) + addstr("\u2550"); + addstr("\u255D"); +} + +static int calculate_height(int width, int length) { + return (int)ciel((float)length / (float)width); +} + +void scr_alert(int width, char *text) { + clear(); + noecho(); + cbreak(); + + int text_height = calculate_height(width, strlen(text)); + + init_pair(1, COLOR_WHITE, COLOR_BLUE); + init_pair(2, COLOR_BLACK, COLOR_CYAN); + init_pair(3, COLOR_WHITE, COLOR_BLACK); + + attron(COLOR_PAIR(3)); + scr_fill(); + attroff(COLOR_PAIR(3)); + + attron(COLOR_PAIR(1)); + scr_box(1, 1, 10, 10); + attroff(COLOR_PAIR(1)); +} \ No newline at end of file diff --git a/src/client/screen.h b/src/client/screen.h index c79a2fc..86705a2 100644 --- a/src/client/screen.h +++ b/src/client/screen.h @@ -3,9 +3,22 @@ #include #include +#include +#include +#include "common.h" void scr_fill(); void scr_char_fill(char); +void scr_wchar_fill(wchar_t); void scr_hide_cursor(); +void scr_center_write(char*, int, int); + +void scr_box(int, int, int, int); + +void scr_alert(int, char*); +BOOL scr_prompt_string(int, char*, char*, int); +BOOL scr_prompt_int(int, char*, int*); +BOOL scr_prompt_options(int, char*, char**, int, int*); + #endif diff --git a/src/common.h b/src/common.h index 9ababeb..4e2a259 100644 --- a/src/common.h +++ b/src/common.h @@ -5,6 +5,8 @@ #include #include +#define WORK + #define FALSE 0 #define TRUE 1 #define BOOL char @@ -12,6 +14,8 @@ #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) +#define KEY_BS 8 +#define KEY_TAB 9 #define KEY_LF 10 #define MAX_CONNS 100 @@ -25,4 +29,4 @@ uint64_t ntohll(uint64_t); void register_spawn_type(uint8_t); uint8_t get_spawn_type(); -#endif +#endif \ No newline at end of file