#pragma once #include "game/game_handler.hpp" #include #include #include namespace wowee { namespace ui { /** * Character selection screen UI * * Displays character list and allows user to select one to play */ class CharacterScreen { public: CharacterScreen(); /** * Render the UI * @param gameHandler Reference to game handler */ void render(game::GameHandler& gameHandler); /** * Set callback for character selection * @param callback Function to call when character is selected (receives character GUID) */ void setOnCharacterSelected(std::function callback) { onCharacterSelected = callback; } void setOnCreateCharacter(std::function cb) { onCreateCharacter = std::move(cb); } void setOnBack(std::function cb) { onBack = std::move(cb); } void setOnDeleteCharacter(std::function cb) { onDeleteCharacter = std::move(cb); } /** * Check if a character has been selected */ bool hasSelection() const { return characterSelected; } /** * Get selected character GUID */ uint64_t getSelectedGuid() const { return selectedCharacterGuid; } /** * Update status message */ void setStatus(const std::string& message); private: // UI state int selectedCharacterIndex = -1; bool characterSelected = false; uint64_t selectedCharacterGuid = 0; // Status std::string statusMessage; // Callbacks std::function onCharacterSelected; std::function onCreateCharacter; std::function onBack; std::function onDeleteCharacter; bool confirmDelete = false; /** * Get faction color based on race */ ImVec4 getFactionColor(game::Race race) const; }; }} // namespace wowee::ui