Move teamMembers impl to Lua bindings

avoiding including UniverseClient.hpp and TeamClient.hpp in StarPlayer
This commit is contained in:
Kae 2024-10-21 16:49:21 +11:00
parent f270c3f168
commit e3aa302a8c
3 changed files with 20 additions and 19 deletions

View File

@ -35,8 +35,6 @@
#include "StarInspectionTool.hpp" #include "StarInspectionTool.hpp"
#include "StarUtilityLuaBindings.hpp" #include "StarUtilityLuaBindings.hpp"
#include "StarCelestialLuaBindings.hpp" #include "StarCelestialLuaBindings.hpp"
#include "StarUniverseClient.hpp"
#include "StarTeamClient.hpp"
namespace Star { namespace Star {
@ -295,6 +293,10 @@ void Player::setUniverseClient(UniverseClient* client) {
m_questManager->setUniverseClient(client); m_questManager->setUniverseClient(client);
} }
UniverseClient* Player::universeClient() const {
return m_client;
}
EntityType Player::entityType() const { EntityType Player::entityType() const {
return EntityType::Player; return EntityType::Player;
} }
@ -2074,20 +2076,6 @@ Vec2F Player::nametagOrigin() const {
void Player::updateIdentity() void Player::updateIdentity()
{ m_identityUpdated = true; m_humanoid->setIdentity(m_identity); } { 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) void Player::setBodyDirectives(String const& directives)
{ m_identity.bodyDirectives = directives; updateIdentity(); } { m_identity.bodyDirectives = directives; updateIdentity(); }

View File

@ -88,6 +88,7 @@ public:
void setStatistics(StatisticsPtr statistics); void setStatistics(StatisticsPtr statistics);
void setUniverseClient(UniverseClient* universeClient); void setUniverseClient(UniverseClient* universeClient);
UniverseClient* universeClient() const;
QuestManagerPtr questManager() const; QuestManagerPtr questManager() const;
@ -316,8 +317,6 @@ public:
void updateIdentity(); void updateIdentity();
JsonArray teamMembers();
void setBodyDirectives(String const& directives); void setBodyDirectives(String const& directives);
void setEmoteDirectives(String const& directives); void setEmoteDirectives(String const& directives);

View File

@ -11,6 +11,8 @@
#include "StarStatistics.hpp" #include "StarStatistics.hpp"
#include "StarPlayerUniverseMap.hpp" #include "StarPlayerUniverseMap.hpp"
#include "StarJsonExtra.hpp" #include "StarJsonExtra.hpp"
#include "StarUniverseClient.hpp"
#include "StarTeamClient.hpp"
namespace Star { namespace Star {
@ -27,7 +29,19 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) {
} }
}); });
callbacks.registerCallback("teamMembers", [player]() { return player->teamMembers(); }); callbacks.registerCallback("teamMembers", [player]() -> Maybe<JsonArray> {
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( "humanoidIdentity", [player]() { return player->humanoid()->identity().toJson(); });
callbacks.registerCallback("setHumanoidIdentity", [player](Json const& id) { player->setIdentity(HumanoidIdentity(id)); }); callbacks.registerCallback("setHumanoidIdentity", [player](Json const& id) { player->setIdentity(HumanoidIdentity(id)); });