summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNefertumm <nefertum.dev@protonmail.com>2022-02-04 14:54:29 -0300
committerGitHub <noreply@github.com>2022-02-04 18:54:29 +0100
commitaa6ecec2ab6df86e4ef0a9892ac9d93a27e55ec9 (patch)
treece5319e9902133df7ad934e798cb29c725304a3d /src
parent27c6699d608b41768b99af18e9981a6d76e36e7f (diff)
feat(Core/Map): add DoForAllPlayers method (#10371)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/Map.cpp11
-rw-r--r--src/server/game/Maps/Map.h3
2 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 595dbcb529..84e99e0571 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -3757,6 +3757,17 @@ void Map::SetZoneOverrideLight(uint32 zoneId, uint32 lightId, Milliseconds fadeI
}
}
+void Map::DoForAllPlayers(std::function<void(Player*)> exec)
+{
+ for (auto const& it : GetPlayers())
+ {
+ if (Player* player = it.GetSource())
+ {
+ exec(player);
+ }
+ }
+}
+
/**
* @brief Check if a given source can reach a specific point following a path
* and normalize the coords. Use this method for long paths, otherwise use the
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index f19e540eb0..bb3618138a 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -606,6 +606,9 @@ public:
void UpdateEncounterState(EncounterCreditType type, uint32 creditEntry, Unit* source);
void LogEncounterFinished(EncounterCreditType type, uint32 creditEntry);
+ // Do whatever you want to all the players in map [including GameMasters], i.e.: param exec = [&](Player* p) { p->Whatever(); }
+ void DoForAllPlayers(std::function<void(Player*)> exec);
+
GridMap* GetGrid(float x, float y);
void EnsureGridCreated(const GridCoord&);
[[nodiscard]] bool AllTransportsEmpty() const; // pussywizard