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.
This commit is contained in:
kelsi davis 2026-02-07 11:26:49 -08:00
parent 587f5a6439
commit 352d179aaa
5 changed files with 15 additions and 80 deletions

View file

@ -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;

View file

@ -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();

View file

@ -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<uint32_t>(spRace_);
uint32_t targetSexId = (spGender_ == game::Gender::FEMALE) ? 1u : 0u;
uint32_t targetRaceId = static_cast<uint32_t>(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<int>(spRace_),
", gender=", static_cast<int>(spGender_),
" (race=", static_cast<int>(playerRace_),
", gender=", static_cast<int>(playerGender_),
") at render pos (", spawnRender.x, ", ", spawnRender.y, ", ", spawnRender.z, ")");
} else {
LOG_WARNING("No active character found for player model spawning");

View file

@ -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);

View file

@ -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<float>(window->getWidth()) : 1280.0f;
float screenH = window ? static_cast<float>(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
// ============================================================