From 8723fe078180916a6b2f736232e7f5bec2b9674e Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sun, 26 Nov 2023 20:28:29 -0500 Subject: add function to lib94 to remove all warriors; fix crash on removing last warrior in bench --- bench/bench_window.cpp | 12 +++++++++++- include/lib94/lib94.hpp | 2 ++ lib94/core.cpp | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/bench/bench_window.cpp b/bench/bench_window.cpp index 08f2236..39992eb 100644 --- a/bench/bench_window.cpp +++ b/bench/bench_window.cpp @@ -320,7 +320,17 @@ void bench_window::on_click_remove_warrior() { break; } - on_click_new_round(); + if (warriors.size()) + on_click_new_round(); + + else { + lib94::remove_all_warriors(); + lib94::clear_address_sets(); + core.mut.lock(); + core.clear_all(); + core.mut.unlock(); + update_ui(); + } delete w; diff --git a/include/lib94/lib94.hpp b/include/lib94/lib94.hpp index 40c9631..63f862e 100644 --- a/include/lib94/lib94.hpp +++ b/include/lib94/lib94.hpp @@ -108,6 +108,8 @@ namespace lib94 { //with the current time, before the first time you call this. bool init_round(const warrior *const *warriors, size_t count, const number_t *offsets, bool shuffle); + void remove_all_warriors(); + //returns the number of warriors who have at least one process size_t alive_warrior_count(); diff --git a/lib94/core.cpp b/lib94/core.cpp index cf563d8..bec793b 100644 --- a/lib94/core.cpp +++ b/lib94/core.cpp @@ -114,6 +114,10 @@ namespace lib94 { return true; } + void remove_all_warriors() { + alive_warriors.clear(); + } + size_t alive_warrior_count() { return alive_warriors.size(); } -- cgit v1.2.3