From 601c1d8e459818faf6d53ed0bb0339563a30e2c8 Mon Sep 17 00:00:00 2001 From: past-due <30942300+past-due@users.noreply.github.com> Date: Tue, 29 Aug 2023 15:22:25 -0400 Subject: [PATCH] Groups UI: Include commander-assigned droids in the commander's group --- src/hci/groups.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/hci/groups.cpp b/src/hci/groups.cpp index 5a7e55a37c1..a8f41ab3525 100644 --- a/src/hci/groups.cpp +++ b/src/hci/groups.cpp @@ -20,6 +20,7 @@ #include "../hci.h" #include "groups.h" #include "objects_stats.h" +#include "../group.h" static bool groupButtonEnabled = true; @@ -39,6 +40,7 @@ class GroupsUIController: public std::enable_shared_from_this, size_t> unitcounter; @@ -248,12 +251,21 @@ void GroupsUIController::updateData() std::array calculatedGroupInfo; for (DROID *psDroid = apsDroidLists[selectedPlayer]; psDroid != nullptr; psDroid = psDroid->psNext) { + auto groupIdx = psDroid->group; if (psDroid->group >= calculatedGroupInfo.size()) { - continue; + if ((psDroid->psGroup) && (psDroid->psGroup->psCommander) && (psDroid->psGroup->psCommander->group < calculatedGroupInfo.size())) + { + groupIdx = psDroid->psGroup->psCommander->group; // accumulate in commander's group + ++(calculatedGroupInfo[groupIdx].numberCommandedByGroup); + } + else + { + continue; + } } - auto& currGroupInfo = calculatedGroupInfo[psDroid->group]; + auto& currGroupInfo = calculatedGroupInfo[groupIdx]; // display whatever unit occurs the most in this group // find the identifier for this droid @@ -272,6 +284,7 @@ void GroupsUIController::updateData() const auto& calculatedInfo = calculatedGroupInfo[idx]; auto& storedGroupInfo = groupInfo[idx]; storedGroupInfo.numberInGroup = calculatedInfo.numberInGroup; + storedGroupInfo.numberCommandedByGroup = calculatedInfo.numberCommandedByGroup; storedGroupInfo.totalGroupMaxHealth = calculatedInfo.totalGroupMaxHealth; if (calculatedInfo.numberInGroup > 0) {