mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add spellbook, fix WMO floor clipping, and polish UI/visuals
- Add spellbook screen (P key) with Spell.dbc name lookup and action bar assignment - Default Attack and Hearthstone spells available in single player - Fix WMO floor clipping (gryphon roost) by tightening ceiling rejection threshold - Darken ocean water, increase wave motion and opacity - Add M2 model distance fade-in to prevent pop-in - Reposition chat window, add slash/enter key focus - Remove debug key commands (keep only F1 perf HUD, N minimap) - Performance: return chat history by const ref, use deque for O(1) pop_front
This commit is contained in:
parent
c49bb58e47
commit
4bc5064515
17 changed files with 486 additions and 431 deletions
|
|
@ -8,6 +8,7 @@
|
|||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <deque>
|
||||
#include <array>
|
||||
#include <functional>
|
||||
#include <cstdint>
|
||||
|
|
@ -151,7 +152,7 @@ public:
|
|||
* @param maxMessages Maximum number of messages to return (0 = all)
|
||||
* @return Vector of chat messages
|
||||
*/
|
||||
std::vector<MessageChatData> getChatHistory(size_t maxMessages = 50) const;
|
||||
const std::deque<MessageChatData>& getChatHistory() const { return chatHistory; }
|
||||
|
||||
/**
|
||||
* Add a locally-generated chat message (e.g., emote feedback)
|
||||
|
|
@ -401,7 +402,7 @@ private:
|
|||
EntityManager entityManager; // Manages all entities in view
|
||||
|
||||
// Chat
|
||||
std::vector<MessageChatData> chatHistory; // Recent chat messages
|
||||
std::deque<MessageChatData> chatHistory; // Recent chat messages
|
||||
size_t maxChatHistory = 100; // Maximum chat messages to keep
|
||||
|
||||
// Targeting
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ struct M2ModelGPU {
|
|||
bool collisionSmallSolidProp = false;
|
||||
bool collisionNarrowVerticalProp = false;
|
||||
bool collisionNoBlock = false;
|
||||
bool collisionStatue = false;
|
||||
|
||||
std::string name;
|
||||
|
||||
|
|
|
|||
|
|
@ -235,6 +235,7 @@ private:
|
|||
glm::mat4 invModelMatrix; // Cached inverse for collision
|
||||
glm::vec3 worldBoundsMin;
|
||||
glm::vec3 worldBoundsMax;
|
||||
std::vector<std::pair<glm::vec3, glm::vec3>> worldGroupBounds;
|
||||
|
||||
void updateModelMatrix();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "game/game_handler.hpp"
|
||||
#include "game/inventory.hpp"
|
||||
#include "ui/inventory_screen.hpp"
|
||||
#include "ui/spellbook_screen.hpp"
|
||||
#include <imgui.h>
|
||||
#include <string>
|
||||
|
||||
|
|
@ -110,6 +111,7 @@ private:
|
|||
* Inventory screen
|
||||
*/
|
||||
InventoryScreen inventoryScreen;
|
||||
SpellbookScreen spellbookScreen;
|
||||
};
|
||||
|
||||
}} // namespace wowee::ui
|
||||
|
|
|
|||
38
include/ui/spellbook_screen.hpp
Normal file
38
include/ui/spellbook_screen.hpp
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
#include "game/game_handler.hpp"
|
||||
#include <imgui.h>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace wowee {
|
||||
|
||||
namespace pipeline { class AssetManager; }
|
||||
|
||||
namespace ui {
|
||||
|
||||
class SpellbookScreen {
|
||||
public:
|
||||
void render(game::GameHandler& gameHandler, pipeline::AssetManager* assetManager);
|
||||
bool isOpen() const { return open; }
|
||||
void toggle() { open = !open; }
|
||||
void setOpen(bool o) { open = o; }
|
||||
|
||||
private:
|
||||
bool open = false;
|
||||
bool pKeyWasDown = false;
|
||||
|
||||
// Spell name cache (loaded from Spell.dbc)
|
||||
bool dbcLoaded = false;
|
||||
bool dbcLoadAttempted = false;
|
||||
std::unordered_map<uint32_t, std::string> spellNames;
|
||||
|
||||
// Action bar assignment
|
||||
int assigningSlot = -1; // Which action bar slot is being assigned (-1 = none)
|
||||
|
||||
void loadSpellDBC(pipeline::AssetManager* assetManager);
|
||||
std::string getSpellName(uint32_t spellId) const;
|
||||
};
|
||||
|
||||
} // namespace ui
|
||||
} // namespace wowee
|
||||
Loading…
Add table
Add a link
Reference in a new issue