diff --git a/src/sorters.hpp b/src/sorters.hpp index ab28c43..a02340d 100644 --- a/src/sorters.hpp +++ b/src/sorters.hpp @@ -27,7 +27,7 @@ struct SortView { }; -class SteppedBsort: Steppable { +class SteppedBsort: public Steppable { public: SortInput &data; size_t stepcount = 0; diff --git a/src/sortui.cpp b/src/sortui.cpp index 801218b..84cb63e 100644 --- a/src/sortui.cpp +++ b/src/sortui.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -18,15 +19,17 @@ #include #include +#include "steppable.hpp" #include "timer.hpp" #include "sorters.hpp" using namespace std::chrono; using namespace std; -bool displaynumbers(vector input) { - for (size_t i = 0; i < input.size(); ++i) { - printf("array:%d ", input[i]); +bool displaySortInput(SortInput input) { + cout << "name: " + input.name + " values: "; + for (size_t i = 0; i < input.values.size(); ++i) { + printf("%d | ",input.values[i]); } printf("\n"); return false; @@ -45,21 +48,35 @@ vector dataprovider(){ return vector {9,8,1,2,7,3,6,4,5}; } -void setupsorttimers(TimerManager &mytimermanager, SteppedBsort &mysession){ +void setupsorttimers(TimerManager &mytimermanager, unique_ptr &mysession){ unique_ptr mytimer = make_unique( "sort1", 0, - [&mysession](){return mysession.step();}, + [&mysession](){return mysession->step();}, milliseconds(250)); mytimermanager.add_timer(std::move(mytimer)); } +//list of inputs, manually assign them to sorts +struct SortSession { + vector &inputs; + unique_ptr sorts; + TimerManager SortTimer; + + SortSession(vector &inputs): inputs(inputs), sorts(make_unique(inputs[0])) { + setupsorttimers(SortTimer, sorts); + } + + void update_sorts(){ + SortTimer.update_timers(); + } +}; + struct App{ sf::RenderWindow mywindow; sf::Font myfont; sf::Text text; - TimerManager mytimermanager; - SortInput input; - SteppedBsort mystb; + vector inputs; + SortSession mysortsession; sf::Font load_font(const string &filename) { sf::Font font; @@ -70,19 +87,17 @@ struct App{ return font; } - App(SortInput input): + App(vector inputs): mywindow(sf::VideoMode({800,600}), "mywindow"), myfont(load_font("assets/NS-R.ttf")), text(myfont), - input(std::move(input)), - mystb(this->input) + inputs(std::move(inputs)), + mysortsession(this->inputs) { text.setFont(myfont); text.setString("Hello world"); text.setCharacterSize(24); text.setFillColor(sf::Color::Red); - - setupsorttimers(mytimermanager, mystb); } void run(){ @@ -95,11 +110,14 @@ struct App{ mywindow.clear(sf::Color::Black); mywindow.draw(text); - text.setString(arraytostr(input)); + text.setString(arraytostr(inputs[0])); - mytimermanager.update_timers(); + mysortsession.update_sorts(); - displaynumbers(input.values); + for (SortInput input : inputs) { + displaySortInput(input); + } + mywindow.display(); this_thread::sleep_for(milliseconds(250)); @@ -108,7 +126,13 @@ struct App{ }; int main() { + vector inputs; SortInput myinput("arr1", dataprovider()); - App myapp(myinput); + SortInput myinput2("arr2", dataprovider()); + + inputs.push_back(myinput); + inputs.push_back(myinput2); + + App myapp(inputs); myapp.run(); }