summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'core/src')
-rw-r--r--core/src/turn_order.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/src/turn_order.cpp b/core/src/turn_order.cpp
index 234f394..835baab 100644
--- a/core/src/turn_order.cpp
+++ b/core/src/turn_order.cpp
@@ -56,6 +56,11 @@ namespace turns::core
return m_is_running.get_proxy();
}
+ auto turn_order::progress() const -> Glib::PropertyProxy_ReadOnly<progress_type>
+ {
+ return m_progress.get_proxy();
+ }
+
auto turn_order::round_number() const -> Glib::PropertyProxy_ReadOnly<round_number_type>
{
return m_round_number.get_proxy();
@@ -85,6 +90,7 @@ namespace turns::core
m_has_previous = false;
m_active.reset();
m_round_number = invalid_round_number;
+ m_progress = 0;
auto old_size = get_n_items();
m_data.clear();
@@ -100,6 +106,8 @@ namespace turns::core
m_data[old_active]->is_active() = false;
m_data[*m_active]->is_active() = true;
+ m_progress = (static_cast<float>(*m_active) + 1) / get_n_items();
+
if (m_active == 0)
{
m_round_number = m_round_number + 1;
@@ -120,6 +128,8 @@ namespace turns::core
m_data[old_active]->is_active() = false;
m_data[*m_active]->is_active() = true;
+ m_progress = (static_cast<float>(*m_active) + 1) / get_n_items();
+
if (m_active == 0 && m_round_number > 0)
{
m_round_number = m_round_number - 1;
@@ -156,11 +166,14 @@ namespace turns::core
m_round_number = 0;
}
m_is_running = true;
+
+ m_progress = (static_cast<float>(*m_active) + 1) / get_n_items();
}
auto turn_order::stop() -> void
{
m_is_running = false;
+ m_progress = 0;
}
/** ListModel implementation */