#include "timer.hpp" #include "timeractions.hpp" #include #include #include #include #include #include #include #include #include #include /* todo figure out namespaces, using, and auto read about std function and std bind try to do with objects / classes instead centralize into event sender and subscriber */ void myupdatedisplay(const Timer &timer_input) { int x_offset = COLS / 4; mvprintw(timer_input.trigger_counter, timer_input.trigger_counter + x_offset, "test: โ–ˆ"); } std::vector my_numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; std::vector my_other_numbers = {4, 9, 8, 6, 2, 1, 10, 3, 5, 7}; void displaynumbers(int start_x, int start_y, std::vector &input_numbers, cchar_t &input_char) { for (size_t i = 0; i < input_numbers.size(); i++) { /** I make a horizontal line of i chars, which are supposed to represent mynumbers above that, I want a line of bars. _all_ bars stretch from LINES-1 to LINES-1-numbervalue **/ mvprintw(LINES -1 - start_y, i + start_x, "%d,", input_numbers[i]); mvwvline_set(stdscr, LINES-1-input_numbers[i]-start_y, i+start_x, &input_char, input_numbers[i]); } } void myinitialize() { setlocale(LC_ALL, ""); initscr(); nodelay(stdscr, FALSE); refresh(); start_color(); init_pair(1, COLOR_RED, COLOR_GREEN); attron(COLOR_PAIR(1)); printw("Hello World! ๐ŸŒ ใƒ†ใ‚นใƒˆ ๆต‹่ฏ•"); } int main() { myinitialize(); cchar_t my_c_char = {.attr= A_NORMAL, .chars={L'โ–ˆ'}, .ext_color = 0}; //create actions, then put them in timers, then put them into the timermanager auto my_action = std::make_unique(my_numbers); auto clock_timer = std::make_unique("secondsprinter", 1, 10, std::move(my_action)); auto my_other_sort = std::make_unique(my_other_numbers); auto sort_timer = std::make_unique("sorttimer", 0.5, std::move(my_other_sort)); TimerManager my_timer_manager; my_timer_manager.addtimer(std::move(clock_timer)); my_timer_manager.addtimer(std::move(sort_timer)); while (true) { erase(); my_timer_manager.updatetimers(); displaynumbers(0,0,my_numbers, my_c_char); displaynumbers(10, 10, my_other_numbers, my_c_char); refresh(); std::this_thread::sleep_for(std::chrono::milliseconds(50)); } getch(); endwin(); return 0; }