feat: 강화 결과 채팅으로 모든 클라이언트가 같이 공유

This commit is contained in:
bumpsoo 2026-02-05 12:20:54 +00:00
parent 1e922ca3e8
commit b9c5a22989
3 changed files with 109 additions and 41 deletions

View file

@ -103,6 +103,7 @@ PacketHandler::HandlePacket(std::shared_ptr<Session> session,
res.currentLevel = session->GetSwordLevel();
res.currentGold = session->GetGold();
// 결과 패킷 전송
PacketHeader header;
header.id = static_cast<uint16_t>(PacketID::SC_UpgradeResult);
header.size = sizeof(PKT_SC_UpgradeResult);
@ -112,11 +113,34 @@ PacketHandler::HandlePacket(std::shared_ptr<Session> session,
std::memcpy(buffer.data(), &header, sizeof(PacketHeader));
std::memcpy(buffer.data() + sizeof(PacketHeader), &res,
sizeof(PKT_SC_UpgradeResult));
session->Send(buffer);
Logger::Log("강화 시도 [", session->GetNickname(), "]: ", (int)res.result,
" (레벨: ", currentLevel, "->", res.currentLevel, ")");
// 브로드캐스트
if (currentGold >= cost) {
uint32_t attemptedLevel = currentLevel + 1;
std::string resultText;
if (res.result == 1) {
resultText = "를 달성했습니다!";
} else if (res.result == 0) {
resultText = " 시도 중 검이 파괴되었습니다!";
} else {
resultText = " 달성에 실패했습니다!";
}
std::string chatMsg = "채팅] " + session->GetNickname() +
" 님이 검 강화 단계 " +
std::to_string(attemptedLevel) + resultText;
PacketHeader chatHeader;
chatHeader.id = static_cast<uint16_t>(PacketID::Chat);
chatHeader.size = static_cast<uint16_t>(chatMsg.size());
std::vector<uint8_t> chatPayload(chatMsg.begin(), chatMsg.end());
SessionManager::GetInstance().Broadcast(chatHeader, chatPayload);
Logger::Log("강화 시도 [", session->GetNickname(), "]: ", (int)res.result,
" (레벨: ", currentLevel, "->", res.currentLevel, ")");
}
} break;
case PacketID::CS_SellSword: {