From a4c4fd6c9b7c82c474bf41d929dbbafad216bcbb Mon Sep 17 00:00:00 2001 From: qndel Date: Mon, 4 Sep 2023 20:41:19 +0200 Subject: [PATCH] fix inspect on players where one name is a substring of another --- Source/control.cpp | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/Source/control.cpp b/Source/control.cpp index 39c7b81d4..c619a9625 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -447,20 +447,27 @@ std::string TextCmdInspect(const std::string_view parameter) } const std::string param = AsciiStrToLower(parameter); - for (auto &player : Players) { - const std::string playerName = AsciiStrToLower(player._pName); - if (playerName.find(param) != std::string::npos) { - InspectPlayer = &player; - StrAppend(ret, _("Inspecting player: ")); - StrAppend(ret, player._pName); - OpenCharPanel(); - if (!sbookflag) - invflag = true; - RedrawEverything(); - return ret; - } + auto it = c_find_if(Players, [¶m](const Player &player) { + return AsciiStrToLower(player._pName) == param; + }); + if (it == Players.end()) { + it = c_find_if(Players, [¶m](const Player &player) { + return AsciiStrToLower(player._pName).find(param) != std::string::npos; + }); + } + if (it == Players.end()) { + StrAppend(ret, _("No players found with such a name")); + return ret; } - StrAppend(ret, _("No players found with such a name")); + + Player &player = *it; + InspectPlayer = &player; + StrAppend(ret, _("Inspecting player: ")); + StrAppend(ret, player._pName); + OpenCharPanel(); + if (!sbookflag) + invflag = true; + RedrawEverything(); return ret; }