#include "render/gui/MobTooltip.h" #include "render/gui/imgui/imgui.h" #include "render/gui/LifeProgress.h" #include "render/WorldRenderer.h" #include "game/Mobs.h" #include "game/client/Client.h" namespace td { namespace gui { MobTooltip::MobTooltip(client::Client* client) : GuiWidget(client) { } void MobTooltip::Render() { if (m_Mob == nullptr) return; // TODO: add sender null check if (ImGui::GetIO().KeyShift) { const game::Player* sender = GetClient()->GetGame().GetPlayerById(m_Mob->GetSender()); ImGui::BeginTooltip(); ImGui::Text("Sender :"); ImGui::SameLine(); ImGui::PushStyleColor(ImGuiCol_Text, render::WorldRenderer::GetImGuiTeamColor(sender->GetTeamColor())); ImGui::Text("%s", sender->GetName().c_str()); ImGui::PopStyleColor(); ImGui::Text("Mob HP : %.1f/%i", m_Mob->GetHealth(), m_Mob->GetStats()->GetMaxLife()); ImGui::Text("Mob Type : %s", game::MobFactory::GetMobName(m_Mob->GetType()).c_str()); ImGui::Text("Mob Level : %i", m_Mob->GetLevel()); ImGui::NewLine(); ImGui::Text("Mob Stats :"); ImGui::Text("\tMax health : %i", m_Mob->GetStats()->GetMaxLife()); ImGui::Text("\tSpeed : %.1f", m_Mob->GetStats()->GetMovementSpeed()); ImGui::Text("\tDamage : %.1f", m_Mob->GetStats()->GetDamage()); ImGui::Text("\tMoney cost : %i", m_Mob->GetStats()->GetMoneyCost()); ImGui::Text("\tEXP cost : %i", m_Mob->GetStats()->GetExpCost()); ImGui::Text("\tEXP reward : %i", m_Mob->GetStats()->GetExpReward()); ImGui::EndTooltip(); } else { ImGui::BeginTooltip(); RenderLifeProgress(m_Mob->GetHealth() / m_Mob->GetStats()->GetMaxLife()); ImGui::EndTooltip(); } } } // namespace gui } // namespace td