37c919df90
size_t interval should've been a double, but was being implicitly converted, so it worked, compiled. but not like I intended.
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.triggercounter, timer_input.triggercounter + x_offset,
|
|
"test: █");
|
|
}
|
|
|
|
std::vector<int> mynumbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
|
std::vector<int> myothernumbers = {4, 9, 8, 6, 2, 1, 10, 3, 5, 7};
|
|
|
|
void displaynumbers(int startx, int starty, 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 - starty, i + startx, "%d,", input_numbers[i]);
|
|
mvwvline_set(stdscr, LINES-1-input_numbers[i]-starty, i+startx, &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 myaction = std::make_unique<swapaction>(mynumbers);
|
|
auto clocktimer =
|
|
std::make_unique<timer>("secondsprinter", 1, 10, std::move(myaction));
|
|
|
|
auto myothersort = std::make_unique<sortaction>(myothernumbers);
|
|
auto sorttimer =
|
|
std::make_unique<timer>("sorttimer", 0.5, std::move(myothersort));
|
|
|
|
timermanager mytimermanager;
|
|
mytimermanager.addtimer(std::move(clocktimer));
|
|
mytimermanager.addtimer(std::move(sorttimer));
|
|
|
|
while (true) {
|
|
erase();
|
|
|
|
mytimermanager.updatetimers();
|
|
|
|
displaynumbers(0,0,mynumbers, my_c_char);
|
|
displaynumbers(10, 10, myothernumbers, my_c_char);
|
|
|
|
refresh();
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
|
}
|
|
|
|
getch();
|
|
endwin();
|
|
|
|
return 0;
|
|
}
|