mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-03 20:03:50 +00:00
chore(game-ui): extract GameScreen domains
- Extracted `GameScreen` functionality into dedicated UI domains - Added new panels: - `action_bar_panel` - `combat_ui` - `social_panel` - `window_manager` - Updated `game_screen` + CMakeLists.txt integration - Added new headers and sources under ui and ui
This commit is contained in:
parent
af9874484a
commit
c9353853f8
11 changed files with 11054 additions and 10395 deletions
77
include/ui/social_panel.hpp
Normal file
77
include/ui/social_panel.hpp
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
#pragma once
|
||||
|
||||
#include <imgui.h>
|
||||
#include <vulkan/vulkan.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
|
||||
namespace wowee {
|
||||
namespace game { class GameHandler; }
|
||||
namespace pipeline { class AssetManager; }
|
||||
namespace ui {
|
||||
|
||||
class ChatPanel;
|
||||
class SpellbookScreen;
|
||||
class InventoryScreen;
|
||||
|
||||
/**
|
||||
* Social panel manager (extracted from GameScreen)
|
||||
*
|
||||
* Owns all social/group-related rendering:
|
||||
* party frames, boss frames, guild roster, social/friends frame,
|
||||
* dungeon finder, who window, inspect window.
|
||||
*/
|
||||
class SocialPanel {
|
||||
public:
|
||||
SocialPanel() = default;
|
||||
|
||||
// ---- Callback type for spell icon lookup (stays in GameScreen) ----
|
||||
using SpellIconFn = std::function<VkDescriptorSet(uint32_t spellId, pipeline::AssetManager*)>;
|
||||
|
||||
// ---- Toggle booleans (written by slash commands / escape handler / keybinds / UI buttons) ----
|
||||
bool showSocialFrame_ = false; // O key toggles social/friends list
|
||||
bool showGuildRoster_ = false;
|
||||
bool showRaidFrames_ = true; // F key toggles raid/party frames
|
||||
bool showWhoWindow_ = false;
|
||||
bool showDungeonFinder_ = false;
|
||||
bool showInspectWindow_ = false;
|
||||
|
||||
// ---- Guild roster state ----
|
||||
std::string selectedGuildMember_;
|
||||
bool showGuildNoteEdit_ = false;
|
||||
bool editingOfficerNote_ = false;
|
||||
char guildNoteEditBuffer_[256] = {0};
|
||||
int guildRosterTab_ = 0; // 0=Roster, 1=Guild Info
|
||||
char guildMotdEditBuffer_[256] = {0};
|
||||
bool showMotdEdit_ = false;
|
||||
char petitionNameBuffer_[64] = {0};
|
||||
char addRankNameBuffer_[64] = {0};
|
||||
bool showAddRankModal_ = false;
|
||||
|
||||
// ---- LFG state ----
|
||||
uint8_t lfgRoles_ = 0x08; // default: DPS (0x02=tank, 0x04=healer, 0x08=dps)
|
||||
uint32_t lfgSelectedDungeon_ = 861; // default: random dungeon (entry 861)
|
||||
|
||||
// ---- Public render methods ----
|
||||
void renderPartyFrames(game::GameHandler& gameHandler,
|
||||
ChatPanel& chatPanel,
|
||||
SpellIconFn getSpellIcon);
|
||||
void renderBossFrames(game::GameHandler& gameHandler,
|
||||
SpellbookScreen& spellbookScreen,
|
||||
SpellIconFn getSpellIcon);
|
||||
void renderGuildRoster(game::GameHandler& gameHandler,
|
||||
ChatPanel& chatPanel);
|
||||
void renderSocialFrame(game::GameHandler& gameHandler,
|
||||
ChatPanel& chatPanel);
|
||||
void renderDungeonFinderWindow(game::GameHandler& gameHandler,
|
||||
ChatPanel& chatPanel);
|
||||
void renderWhoWindow(game::GameHandler& gameHandler,
|
||||
ChatPanel& chatPanel);
|
||||
void renderInspectWindow(game::GameHandler& gameHandler,
|
||||
InventoryScreen& inventoryScreen);
|
||||
};
|
||||
|
||||
} // namespace ui
|
||||
} // namespace wowee
|
||||
Loading…
Add table
Add a link
Reference in a new issue