From 352d179aaa1c5b7c319f233a20cfe3cdb998cb6d Mon Sep 17 00:00:00 2001 From: kelsi davis Date: Sat, 7 Feb 2026 11:26:49 -0800 Subject: [PATCH] Fix compilation errors from single-player removal - Rename spRace_, spGender_, spClass_ to playerRace_, playerGender_, playerClass_ - Remove swingTimer_ reference (server-side combat only) - Remove teleporter panel UI and all references - Remove T key binding for teleporter Build now completes successfully with zero errors. --- include/core/application.hpp | 5 ++++ include/ui/game_screen.hpp | 12 --------- src/core/application.cpp | 26 +++++++----------- src/game/game_handler.cpp | 1 - src/ui/game_screen.cpp | 51 ------------------------------------ 5 files changed, 15 insertions(+), 80 deletions(-) diff --git a/include/core/application.hpp b/include/core/application.hpp index 565103b1..e8325490 100644 --- a/include/core/application.hpp +++ b/include/core/application.hpp @@ -105,6 +105,11 @@ private: float lastFrameTime = 0.0f; float movementHeartbeatTimer = 0.0f; + // Player character info (for model spawning) + game::Race playerRace_ = game::Race::HUMAN; + game::Gender playerGender_ = game::Gender::MALE; + game::Class playerClass_ = game::Class::WARRIOR; + // Weapon model ID counter (starting high to avoid collision with character model IDs) uint32_t nextWeaponModelId_ = 1000; diff --git a/include/ui/game_screen.hpp b/include/ui/game_screen.hpp index 1dc10ec8..fc941751 100644 --- a/include/ui/game_screen.hpp +++ b/include/ui/game_screen.hpp @@ -37,16 +37,6 @@ public: */ bool isChatInputActive() const { return chatInputActive; } - /** - * Toggle the teleporter panel - */ - void toggleTeleporter() { showTeleporter = !showTeleporter; } - - /** - * Check if teleporter panel is open - */ - bool isTeleporterOpen() const { return showTeleporter; } - private: // Chat state char chatInputBuffer[512] = ""; @@ -62,7 +52,6 @@ private: bool chatWindowLocked = true; ImVec2 chatWindowPos_ = ImVec2(0.0f, 0.0f); bool chatWindowPosInit_ = false; - bool showTeleporter = false; bool showEscapeMenu = false; bool showEscapeSettingsNotice = false; bool showSettingsWindow = false; @@ -149,7 +138,6 @@ private: void renderQuestRequestItemsWindow(game::GameHandler& gameHandler); void renderQuestOfferRewardWindow(game::GameHandler& gameHandler); void renderVendorWindow(game::GameHandler& gameHandler); - void renderTeleporterPanel(); void renderDeathScreen(game::GameHandler& gameHandler); void renderEscapeMenu(); void renderSettingsWindow(); diff --git a/src/core/application.cpp b/src/core/application.cpp index c2f7df4f..565c9a5d 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -81,7 +81,7 @@ const char* Application::mapIdToName(uint32_t mapId) { } std::string Application::getPlayerModelPath() const { - return game::getPlayerModelPath(spRace_, spGender_); + return game::getPlayerModelPath(playerRace_, playerGender_); } namespace { @@ -266,12 +266,6 @@ void Application::run() { LOG_INFO("Shadows: ", enabled ? "ON" : "OFF"); } } - // T: Toggle teleporter panel - else if (event.key.keysym.scancode == SDL_SCANCODE_T) { - if (state == AppState::IN_GAME && uiManager) { - uiManager->getGameScreen().toggleTeleporter(); - } - } } } @@ -716,12 +710,12 @@ void Application::spawnPlayerCharacter() { // Look up textures from CharSections.dbc for all races bool useCharSections = true; - uint32_t targetRaceId = static_cast(spRace_); - uint32_t targetSexId = (spGender_ == game::Gender::FEMALE) ? 1u : 0u; + uint32_t targetRaceId = static_cast(playerRace_); + uint32_t targetSexId = (playerGender_ == game::Gender::FEMALE) ? 1u : 0u; // Race name for fallback texture paths const char* raceFolderName = "Human"; - switch (spRace_) { + switch (playerRace_) { case game::Race::HUMAN: raceFolderName = "Human"; break; case game::Race::ORC: raceFolderName = "Orc"; break; case game::Race::DWARF: raceFolderName = "Dwarf"; break; @@ -734,7 +728,7 @@ void Application::spawnPlayerCharacter() { case game::Race::DRAENEI: raceFolderName = "Draenei"; break; default: break; } - const char* genderFolder = (spGender_ == game::Gender::FEMALE) ? "Female" : "Male"; + const char* genderFolder = (playerGender_ == game::Gender::FEMALE) ? "Female" : "Male"; std::string raceGender = std::string(raceFolderName) + genderFolder; std::string bodySkinPath = std::string("Character\\") + raceFolderName + "\\" + genderFolder + "\\" + raceGender + "Skin00_00.blp"; std::string pelvisPath = std::string("Character\\") + raceFolderName + "\\" + genderFolder + "\\" + raceGender + "NakedPelvisSkin00_00.blp"; @@ -1425,16 +1419,16 @@ void Application::loadOnlineWorldTerrain(uint32_t mapId, float x, float y, float if (gameHandler) { const game::Character* activeChar = gameHandler->getActiveCharacter(); if (activeChar) { - spRace_ = activeChar->race; - spGender_ = activeChar->gender; - spClass_ = activeChar->characterClass; + playerRace_ = activeChar->race; + playerGender_ = activeChar->gender; + playerClass_ = activeChar->characterClass; spawnSnapToGround = false; playerCharacterSpawned = false; spawnPlayerCharacter(); renderer->getCharacterPosition() = spawnRender; LOG_INFO("Spawned online player model: ", activeChar->name, - " (race=", static_cast(spRace_), - ", gender=", static_cast(spGender_), + " (race=", static_cast(playerRace_), + ", gender=", static_cast(playerGender_), ") at render pos (", spawnRender.x, ", ", spawnRender.y, ", ", spawnRender.z, ")"); } else { LOG_WARNING("No active character found for player model spawning"); diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 092026d4..e130c7f7 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -1869,7 +1869,6 @@ void GameHandler::startAutoAttack(uint64_t targetGuid) { autoAttacking = true; autoAttackTarget = targetGuid; autoAttackOutOfRange_ = false; - swingTimer_ = 0.0f; if (state == WorldState::IN_WORLD && socket) { auto packet = AttackSwingPacket::build(targetGuid); socket->send(packet); diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 13012c9e..ce6ee752 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -105,9 +105,6 @@ void GameScreen::render(game::GameHandler& gameHandler) { // World map (M key toggle handled inside) renderWorldMap(gameHandler); - // Teleporter panel (T key toggle handled in Application event loop) - renderTeleporterPanel(); - // Quest Log (L key toggle handled inside) questLogScreen.render(gameHandler); @@ -500,8 +497,6 @@ void GameScreen::processTargetInput(game::GameHandler& gameHandler) { showEscapeMenu = false; showEscapeSettingsNotice = false; showSettingsWindow = false; - } else if (showTeleporter) { - showTeleporter = false; } else if (gameHandler.isCasting()) { gameHandler.cancelCast(); } else if (gameHandler.isLootWindowOpen()) { @@ -2535,52 +2530,6 @@ void GameScreen::renderVendorWindow(game::GameHandler& gameHandler) { // Teleporter Panel // ============================================================ -void GameScreen::renderTeleporterPanel() { - if (!showTeleporter) return; - - auto* window = core::Application::getInstance().getWindow(); - float screenW = window ? static_cast(window->getWidth()) : 1280.0f; - float screenH = window ? static_cast(window->getHeight()) : 720.0f; - - float panelW = 280.0f; - float panelH = 0.0f; // Auto-size height - ImGui::SetNextWindowPos(ImVec2((screenW - panelW) / 2.0f, screenH * 0.25f), ImGuiCond_Always); - ImGui::SetNextWindowSize(ImVec2(panelW, panelH), ImGuiCond_Always); - - ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 6.0f); - ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.08f, 0.08f, 0.15f, 0.92f)); - - ImGuiWindowFlags flags = ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | - ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_AlwaysAutoResize; - - if (ImGui::Begin("Teleporter", &showTeleporter, flags)) { - ImGui::Spacing(); - - for (int i = 0; i < core::SPAWN_PRESET_COUNT; i++) { - const auto& preset = core::SPAWN_PRESETS[i]; - char label[128]; - snprintf(label, sizeof(label), "%s\n(%.0f, %.0f, %.0f)", - preset.label, - preset.spawnCanonical.x, preset.spawnCanonical.y, preset.spawnCanonical.z); - - if (ImGui::Button(label, ImVec2(-1, 50))) { - core::Application::getInstance().teleportTo(i); - showTeleporter = false; - } - - if (i < core::SPAWN_PRESET_COUNT - 1) { - ImGui::Spacing(); - } - } - - ImGui::Spacing(); - } - ImGui::End(); - - ImGui::PopStyleColor(); - ImGui::PopStyleVar(); -} - // ============================================================ // Escape Menu // ============================================================