mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +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 {
|
||||
|
||||
class InventoryScreen;
|
||||
|
||||
class QuestLogScreen {
|
||||
public:
|
||||
void render(game::GameHandler& gameHandler);
|
||||
void render(game::GameHandler& gameHandler, InventoryScreen& invScreen);
|
||||
bool isOpen() const { return open; }
|
||||
void toggle() { open = !open; }
|
||||
void setOpen(bool o) { open = o; }
|
||||
|
|
|
|||
|
|
@ -460,7 +460,7 @@ void GameScreen::render(game::GameHandler& gameHandler) {
|
|||
renderWorldMap(gameHandler);
|
||||
|
||||
// Quest Log (L key toggle handled inside)
|
||||
questLogScreen.render(gameHandler);
|
||||
questLogScreen.render(gameHandler, inventoryScreen);
|
||||
|
||||
// Spellbook (P key toggle handled inside)
|
||||
spellbookScreen.render(gameHandler, core::Application::getInstance().getAssetManager());
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "ui/quest_log_screen.hpp"
|
||||
#include "ui/inventory_screen.hpp"
|
||||
#include "ui/keybinding_manager.hpp"
|
||||
#include "core/application.hpp"
|
||||
#include "core/input.hpp"
|
||||
|
|
@ -206,7 +207,7 @@ std::string cleanQuestTitleForUi(const std::string& raw, uint32_t questId) {
|
|||
}
|
||||
} // anonymous namespace
|
||||
|
||||
void QuestLogScreen::render(game::GameHandler& gameHandler) {
|
||||
void QuestLogScreen::render(game::GameHandler& gameHandler, InventoryScreen& invScreen) {
|
||||
// Quests toggle via keybinding (edge-triggered)
|
||||
// Customizable key (default: L) from KeybindingManager
|
||||
bool questsDown = KeybindingManager::getInstance().isActionPressed(
|
||||
|
|
@ -392,13 +393,24 @@ void QuestLogScreen::render(game::GameHandler& gameHandler) {
|
|||
}
|
||||
for (const auto& [itemId, count] : sel.itemCounts) {
|
||||
std::string itemLabel = "Item " + std::to_string(itemId);
|
||||
uint32_t dispId = 0;
|
||||
if (const auto* info = gameHandler.getItemInfo(itemId)) {
|
||||
if (!info->name.empty()) itemLabel = info->name;
|
||||
dispId = info->displayInfoId;
|
||||
} else {
|
||||
gameHandler.ensureItemInfo(itemId);
|
||||
}
|
||||
uint32_t required = 1;
|
||||
auto reqIt = sel.requiredItemCounts.find(itemId);
|
||||
if (reqIt != sel.requiredItemCounts.end()) required = reqIt->second;
|
||||
ImGui::BulletText("%s: %u/%u", itemLabel.c_str(), count, required);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue