Kelsidavis-WoWee/include/ui/realm_screen.hpp
Kelsi 7f9439d774 Reset realm and character lists when switching servers
Add reset() to RealmScreen and CharacterScreen to clear stale selection
state. Clear auth handler realm list on reconnect. Reset both screens
when going back to login or back to realm selection, so switching
servers shows fresh data instead of stale lists from the previous
connection.
2026-02-14 19:24:31 -08:00

84 lines
1.9 KiB
C++

#pragma once
#include "auth/auth_handler.hpp"
#include <imgui.h>
#include <string>
#include <functional>
namespace wowee { namespace ui {
/**
* Realm selection screen UI
*
* Displays available realms and allows user to select one
*/
class RealmScreen {
public:
RealmScreen();
/**
* Render the UI
* @param authHandler Reference to auth handler
*/
void render(auth::AuthHandler& authHandler);
/**
* Set callback for realm selection
* @param callback Function to call when realm is selected (receives realm name and address)
*/
void setOnRealmSelected(std::function<void(const std::string&, const std::string&)> callback) {
onRealmSelected = callback;
}
/**
* Reset selection state (e.g., when switching servers)
*/
void reset() {
selectedRealmIndex = -1;
realmSelected = false;
selectedRealmName.clear();
selectedRealmAddress.clear();
statusMessage.clear();
}
/**
* Check if a realm has been selected
*/
bool hasSelection() const { return realmSelected; }
/**
* Get selected realm info
*/
const std::string& getSelectedName() const { return selectedRealmName; }
const std::string& getSelectedAddress() const { return selectedRealmAddress; }
private:
// UI state
int selectedRealmIndex = -1;
bool realmSelected = false;
std::string selectedRealmName;
std::string selectedRealmAddress;
// Status
std::string statusMessage;
// Callbacks
std::function<void(const std::string&, const std::string&)> onRealmSelected;
/**
* Update status message
*/
void setStatus(const std::string& message);
/**
* Get realm status text
*/
const char* getRealmStatus(uint8_t flags) const;
/**
* Get population color
*/
ImVec4 getPopulationColor(float population) const;
};
}} // namespace wowee::ui