From f270c3f1686923531058badf2e33633e54929d85 Mon Sep 17 00:00:00 2001 From: Degranon Date: Sat, 19 Oct 2024 21:10:39 +0500 Subject: [PATCH 1/3] Player teammembers --- doc/lua/player.md | 6 ++++++ source/game/StarPlayer.cpp | 16 ++++++++++++++++ source/game/StarPlayer.hpp | 2 ++ source/game/scripting/StarPlayerLuaBindings.cpp | 2 ++ 4 files changed, 26 insertions(+) diff --git a/doc/lua/player.md b/doc/lua/player.md index fd8ebd4..f281bad 100644 --- a/doc/lua/player.md +++ b/doc/lua/player.md @@ -527,3 +527,9 @@ Returns uuid, type, and orbits for all system objects in the specified system; #### `List` player.collectables(`String` collectionName) Returns a list of names of the collectables the player has unlocked in the specified collection. + +--- + +#### `List` player.teamMembers() + +Returns an array, each entry being a table with `name`, `uuid`, `entity`, `healthPercentage` and `energyPercentage` diff --git a/source/game/StarPlayer.cpp b/source/game/StarPlayer.cpp index 8ee6d7a..15890bb 100644 --- a/source/game/StarPlayer.cpp +++ b/source/game/StarPlayer.cpp @@ -35,6 +35,8 @@ #include "StarInspectionTool.hpp" #include "StarUtilityLuaBindings.hpp" #include "StarCelestialLuaBindings.hpp" +#include "StarUniverseClient.hpp" +#include "StarTeamClient.hpp" namespace Star { @@ -2072,6 +2074,20 @@ Vec2F Player::nametagOrigin() const { void Player::updateIdentity() { m_identityUpdated = true; m_humanoid->setIdentity(m_identity); } +JsonArray Player::teamMembers() { + JsonArray jarray; + for (auto member : m_client->teamClient()->members()) { + jarray.push_back(JsonObject{ + {"name", member.name}, + {"uuid", member.uuid.hex()}, + {"entity", member.entity}, + {"healthPercentage", member.healthPercentage}, + {"energyPercentage", member.energyPercentage} + }); + } + return jarray; +} + void Player::setBodyDirectives(String const& directives) { m_identity.bodyDirectives = directives; updateIdentity(); } diff --git a/source/game/StarPlayer.hpp b/source/game/StarPlayer.hpp index f6e32e0..fe97fce 100644 --- a/source/game/StarPlayer.hpp +++ b/source/game/StarPlayer.hpp @@ -316,6 +316,8 @@ public: void updateIdentity(); + JsonArray teamMembers(); + void setBodyDirectives(String const& directives); void setEmoteDirectives(String const& directives); diff --git a/source/game/scripting/StarPlayerLuaBindings.cpp b/source/game/scripting/StarPlayerLuaBindings.cpp index 7952f30..4343531 100644 --- a/source/game/scripting/StarPlayerLuaBindings.cpp +++ b/source/game/scripting/StarPlayerLuaBindings.cpp @@ -27,6 +27,8 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { } }); + callbacks.registerCallback("teamMembers", [player]() { return player->teamMembers(); }); + callbacks.registerCallback( "humanoidIdentity", [player]() { return player->humanoid()->identity().toJson(); }); callbacks.registerCallback("setHumanoidIdentity", [player](Json const& id) { player->setIdentity(HumanoidIdentity(id)); }); From e3aa302a8c86d7d33afd2ae13a2bdacee141d2bf Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:49:21 +1100 Subject: [PATCH 2/3] Move teamMembers impl to Lua bindings avoiding including UniverseClient.hpp and TeamClient.hpp in StarPlayer --- source/game/StarPlayer.cpp | 20 ++++--------------- source/game/StarPlayer.hpp | 3 +-- .../game/scripting/StarPlayerLuaBindings.cpp | 16 ++++++++++++++- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/source/game/StarPlayer.cpp b/source/game/StarPlayer.cpp index 15890bb..2f89ff3 100644 --- a/source/game/StarPlayer.cpp +++ b/source/game/StarPlayer.cpp @@ -35,8 +35,6 @@ #include "StarInspectionTool.hpp" #include "StarUtilityLuaBindings.hpp" #include "StarCelestialLuaBindings.hpp" -#include "StarUniverseClient.hpp" -#include "StarTeamClient.hpp" namespace Star { @@ -295,6 +293,10 @@ void Player::setUniverseClient(UniverseClient* client) { m_questManager->setUniverseClient(client); } +UniverseClient* Player::universeClient() const { + return m_client; +} + EntityType Player::entityType() const { return EntityType::Player; } @@ -2074,20 +2076,6 @@ Vec2F Player::nametagOrigin() const { void Player::updateIdentity() { m_identityUpdated = true; m_humanoid->setIdentity(m_identity); } -JsonArray Player::teamMembers() { - JsonArray jarray; - for (auto member : m_client->teamClient()->members()) { - jarray.push_back(JsonObject{ - {"name", member.name}, - {"uuid", member.uuid.hex()}, - {"entity", member.entity}, - {"healthPercentage", member.healthPercentage}, - {"energyPercentage", member.energyPercentage} - }); - } - return jarray; -} - void Player::setBodyDirectives(String const& directives) { m_identity.bodyDirectives = directives; updateIdentity(); } diff --git a/source/game/StarPlayer.hpp b/source/game/StarPlayer.hpp index fe97fce..1a6a5c2 100644 --- a/source/game/StarPlayer.hpp +++ b/source/game/StarPlayer.hpp @@ -88,6 +88,7 @@ public: void setStatistics(StatisticsPtr statistics); void setUniverseClient(UniverseClient* universeClient); + UniverseClient* universeClient() const; QuestManagerPtr questManager() const; @@ -316,8 +317,6 @@ public: void updateIdentity(); - JsonArray teamMembers(); - void setBodyDirectives(String const& directives); void setEmoteDirectives(String const& directives); diff --git a/source/game/scripting/StarPlayerLuaBindings.cpp b/source/game/scripting/StarPlayerLuaBindings.cpp index 4343531..b0b44a8 100644 --- a/source/game/scripting/StarPlayerLuaBindings.cpp +++ b/source/game/scripting/StarPlayerLuaBindings.cpp @@ -11,6 +11,8 @@ #include "StarStatistics.hpp" #include "StarPlayerUniverseMap.hpp" #include "StarJsonExtra.hpp" +#include "StarUniverseClient.hpp" +#include "StarTeamClient.hpp" namespace Star { @@ -27,7 +29,19 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { } }); - callbacks.registerCallback("teamMembers", [player]() { return player->teamMembers(); }); + callbacks.registerCallback("teamMembers", [player]() -> Maybe { + if (auto client = player->universeClient()) { + return client->teamClient()->members().transformed([](TeamClient::Member& member) -> Json { + return JsonObject{ + {"name", member.name}, + {"uuid", member.uuid.hex()}, + {"entity", member.entity}, + {"healthPercentage", member.healthPercentage}, + {"energyPercentage", member.energyPercentage}}; + }); + } + return {}; + }); callbacks.registerCallback( "humanoidIdentity", [player]() { return player->humanoid()->identity().toJson(); }); callbacks.registerCallback("setHumanoidIdentity", [player](Json const& id) { player->setIdentity(HumanoidIdentity(id)); }); From 2796e8ed1035c12a6645c3130b1c43d4e4c68784 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:55:31 +1100 Subject: [PATCH 3/3] Update StarPlayerLuaBindings.cpp --- source/game/scripting/StarPlayerLuaBindings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/game/scripting/StarPlayerLuaBindings.cpp b/source/game/scripting/StarPlayerLuaBindings.cpp index b0b44a8..f8e1f2e 100644 --- a/source/game/scripting/StarPlayerLuaBindings.cpp +++ b/source/game/scripting/StarPlayerLuaBindings.cpp @@ -31,7 +31,7 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { callbacks.registerCallback("teamMembers", [player]() -> Maybe { if (auto client = player->universeClient()) { - return client->teamClient()->members().transformed([](TeamClient::Member& member) -> Json { + return client->teamClient()->members().transformed([](TeamClient::Member const& member) -> Json { return JsonObject{ {"name", member.name}, {"uuid", member.uuid.hex()},