mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
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.
84 lines
1.9 KiB
C++
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
|