91 lines
2.4 KiB
C++
91 lines
2.4 KiB
C++
#include "timer.hpp"
|
|
#include "timeractions.hpp"
|
|
#include <chrono>
|
|
#include <clocale>
|
|
#include <cstdio>
|
|
#include <ctime>
|
|
#include <memory>
|
|
#include <ncurses.h>
|
|
#include <thread>
|
|
#include <unistd.h>
|
|
#include <utility>
|
|
#include <vector>
|
|
|
|
/*
|
|
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<int> my_numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
|
std::vector<int> my_other_numbers = {4, 9, 8, 6, 2, 1, 10, 3, 5, 7};
|
|
|
|
void displaynumbers(int start_x, int start_y, std::vector<int> &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<SwapAction>(my_numbers);
|
|
auto clock_timer =
|
|
std::make_unique<Timer>("secondsprinter", 1, 10, std::move(my_action));
|
|
|
|
auto my_other_sort = std::make_unique<SortAction>(my_other_numbers);
|
|
auto sort_timer =
|
|
std::make_unique<Timer>("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;
|
|
}
|