From 75a94a96eabb863f21ec5478018886e9c892a5a4 Mon Sep 17 00:00:00 2001 From: "@syxhe" Date: Wed, 17 Jul 2024 23:41:36 -0500 Subject: Work on the ncurses part --- src/screen.c | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 src/screen.c (limited to 'src/screen.c') diff --git a/src/screen.c b/src/screen.c new file mode 100644 index 0000000..d79ec3c --- /dev/null +++ b/src/screen.c @@ -0,0 +1,137 @@ +/*** + * 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; +} \ No newline at end of file -- cgit v1.2.3