Add character creation screen with race/class/appearance customization

Implements a full character creation UI integrated into the existing flow.
In single-player mode, auth screen now goes to character creation before
entering the world. In online mode, a "Create Character" button on the
character selection screen sends CMSG_CHAR_CREATE to the server. Includes
WoW 3.3.5a race/class combo validation and appearance range limits.
This commit is contained in:
Kelsi 2026-02-05 14:13:48 -08:00
parent 129bbac9b3
commit 0605d1522d
16 changed files with 611 additions and 30 deletions

View file

@ -148,7 +148,10 @@ void CharacterScreen::render(game::GameHandler& gameHandler) {
ss << "Entering world with " << character.name << "...";
setStatus(ss.str());
gameHandler.selectCharacter(character.guid);
// Only send CMSG_PLAYER_LOGIN in online mode
if (!gameHandler.isSinglePlayerMode()) {
gameHandler.selectCharacter(character.guid);
}
// Call callback
if (onCharacterSelected) {
@ -169,7 +172,7 @@ void CharacterScreen::render(game::GameHandler& gameHandler) {
ImGui::Separator();
ImGui::Spacing();
// Back/Refresh buttons
// Back/Refresh/Create buttons
if (ImGui::Button("Refresh", ImVec2(120, 0))) {
if (gameHandler.getState() == game::WorldState::READY ||
gameHandler.getState() == game::WorldState::CHAR_LIST_RECEIVED) {
@ -178,6 +181,14 @@ void CharacterScreen::render(game::GameHandler& gameHandler) {
}
}
ImGui::SameLine();
if (ImGui::Button("Create Character", ImVec2(150, 0))) {
if (onCreateCharacter) {
onCreateCharacter();
}
}
ImGui::End();
}