mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-03 08:03:50 +00:00
Show item icons for item objectives in quest log
This commit is contained in:
parent
3c0e58bff4
commit
458c9ebe8c
3 changed files with 18 additions and 4 deletions
|
|
@ -7,9 +7,11 @@
|
||||||
|
|
||||||
namespace wowee { namespace ui {
|
namespace wowee { namespace ui {
|
||||||
|
|
||||||
|
class InventoryScreen;
|
||||||
|
|
||||||
class QuestLogScreen {
|
class QuestLogScreen {
|
||||||
public:
|
public:
|
||||||
void render(game::GameHandler& gameHandler);
|
void render(game::GameHandler& gameHandler, InventoryScreen& invScreen);
|
||||||
bool isOpen() const { return open; }
|
bool isOpen() const { return open; }
|
||||||
void toggle() { open = !open; }
|
void toggle() { open = !open; }
|
||||||
void setOpen(bool o) { open = o; }
|
void setOpen(bool o) { open = o; }
|
||||||
|
|
|
||||||
|
|
@ -460,7 +460,7 @@ void GameScreen::render(game::GameHandler& gameHandler) {
|
||||||
renderWorldMap(gameHandler);
|
renderWorldMap(gameHandler);
|
||||||
|
|
||||||
// Quest Log (L key toggle handled inside)
|
// Quest Log (L key toggle handled inside)
|
||||||
questLogScreen.render(gameHandler);
|
questLogScreen.render(gameHandler, inventoryScreen);
|
||||||
|
|
||||||
// Spellbook (P key toggle handled inside)
|
// Spellbook (P key toggle handled inside)
|
||||||
spellbookScreen.render(gameHandler, core::Application::getInstance().getAssetManager());
|
spellbookScreen.render(gameHandler, core::Application::getInstance().getAssetManager());
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include "ui/quest_log_screen.hpp"
|
#include "ui/quest_log_screen.hpp"
|
||||||
|
#include "ui/inventory_screen.hpp"
|
||||||
#include "ui/keybinding_manager.hpp"
|
#include "ui/keybinding_manager.hpp"
|
||||||
#include "core/application.hpp"
|
#include "core/application.hpp"
|
||||||
#include "core/input.hpp"
|
#include "core/input.hpp"
|
||||||
|
|
@ -206,7 +207,7 @@ std::string cleanQuestTitleForUi(const std::string& raw, uint32_t questId) {
|
||||||
}
|
}
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|
||||||
void QuestLogScreen::render(game::GameHandler& gameHandler) {
|
void QuestLogScreen::render(game::GameHandler& gameHandler, InventoryScreen& invScreen) {
|
||||||
// Quests toggle via keybinding (edge-triggered)
|
// Quests toggle via keybinding (edge-triggered)
|
||||||
// Customizable key (default: L) from KeybindingManager
|
// Customizable key (default: L) from KeybindingManager
|
||||||
bool questsDown = KeybindingManager::getInstance().isActionPressed(
|
bool questsDown = KeybindingManager::getInstance().isActionPressed(
|
||||||
|
|
@ -392,15 +393,26 @@ void QuestLogScreen::render(game::GameHandler& gameHandler) {
|
||||||
}
|
}
|
||||||
for (const auto& [itemId, count] : sel.itemCounts) {
|
for (const auto& [itemId, count] : sel.itemCounts) {
|
||||||
std::string itemLabel = "Item " + std::to_string(itemId);
|
std::string itemLabel = "Item " + std::to_string(itemId);
|
||||||
|
uint32_t dispId = 0;
|
||||||
if (const auto* info = gameHandler.getItemInfo(itemId)) {
|
if (const auto* info = gameHandler.getItemInfo(itemId)) {
|
||||||
if (!info->name.empty()) itemLabel = info->name;
|
if (!info->name.empty()) itemLabel = info->name;
|
||||||
|
dispId = info->displayInfoId;
|
||||||
|
} else {
|
||||||
|
gameHandler.ensureItemInfo(itemId);
|
||||||
}
|
}
|
||||||
uint32_t required = 1;
|
uint32_t required = 1;
|
||||||
auto reqIt = sel.requiredItemCounts.find(itemId);
|
auto reqIt = sel.requiredItemCounts.find(itemId);
|
||||||
if (reqIt != sel.requiredItemCounts.end()) required = reqIt->second;
|
if (reqIt != sel.requiredItemCounts.end()) required = reqIt->second;
|
||||||
|
VkDescriptorSet iconTex = dispId ? invScreen.getItemIcon(dispId) : VK_NULL_HANDLE;
|
||||||
|
if (iconTex) {
|
||||||
|
ImGui::Image((ImTextureID)(uintptr_t)iconTex, ImVec2(14, 14));
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::Text("%s: %u/%u", itemLabel.c_str(), count, required);
|
||||||
|
} else {
|
||||||
ImGui::BulletText("%s: %u/%u", itemLabel.c_str(), count, required);
|
ImGui::BulletText("%s: %u/%u", itemLabel.c_str(), count, required);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Track / Abandon buttons
|
// Track / Abandon buttons
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue