mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-03 00:03:50 +00:00
Extend UIErrorsFrame to spell failures, interrupts, server shutdown warnings
This commit is contained in:
parent
25e2c60603
commit
06456faa63
1 changed files with 17 additions and 4 deletions
|
|
@ -907,6 +907,7 @@ void GameHandler::update(float deltaTime) {
|
||||||
castIsChannel = false;
|
castIsChannel = false;
|
||||||
currentCastSpellId = 0;
|
currentCastSpellId = 0;
|
||||||
castTimeRemaining = 0.0f;
|
castTimeRemaining = 0.0f;
|
||||||
|
addUIError("Interrupted.");
|
||||||
addSystemChatMessage("Interrupted.");
|
addSystemChatMessage("Interrupted.");
|
||||||
}
|
}
|
||||||
if (casting && castTimeRemaining > 0.0f) {
|
if (casting && castTimeRemaining > 0.0f) {
|
||||||
|
|
@ -2828,13 +2829,14 @@ void GameHandler::handlePacket(network::Packet& packet) {
|
||||||
// Classic result enum starts at 0=AFFECTING_COMBAT; shift +1 for WotLK table
|
// Classic result enum starts at 0=AFFECTING_COMBAT; shift +1 for WotLK table
|
||||||
uint8_t failReason = isClassic ? static_cast<uint8_t>(rawFailReason + 1) : rawFailReason;
|
uint8_t failReason = isClassic ? static_cast<uint8_t>(rawFailReason + 1) : rawFailReason;
|
||||||
if (failGuid == playerGuid && failReason != 0) {
|
if (failGuid == playerGuid && failReason != 0) {
|
||||||
// Show interruption/failure reason in chat for player
|
// Show interruption/failure reason in chat and error overlay for player
|
||||||
int pt = -1;
|
int pt = -1;
|
||||||
if (auto pe = entityManager.getEntity(playerGuid))
|
if (auto pe = entityManager.getEntity(playerGuid))
|
||||||
if (auto pu = std::dynamic_pointer_cast<Unit>(pe))
|
if (auto pu = std::dynamic_pointer_cast<Unit>(pe))
|
||||||
pt = static_cast<int>(pu->getPowerType());
|
pt = static_cast<int>(pu->getPowerType());
|
||||||
const char* reason = getSpellCastResultString(failReason, pt);
|
const char* reason = getSpellCastResultString(failReason, pt);
|
||||||
if (reason) {
|
if (reason) {
|
||||||
|
addUIError(reason);
|
||||||
MessageChatData emsg;
|
MessageChatData emsg;
|
||||||
emsg.type = ChatType::SYSTEM;
|
emsg.type = ChatType::SYSTEM;
|
||||||
emsg.language = ChatLanguage::UNIVERSAL;
|
emsg.language = ChatLanguage::UNIVERSAL;
|
||||||
|
|
@ -3790,11 +3792,22 @@ void GameHandler::handlePacket(network::Packet& packet) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Opcode::SMSG_SERVER_MESSAGE: {
|
case Opcode::SMSG_SERVER_MESSAGE: {
|
||||||
// uint32 type, string message
|
// uint32 type + string message
|
||||||
|
// Types: 1=shutdown_time, 2=restart_time, 3=string, 4=shutdown_cancelled, 5=restart_cancelled
|
||||||
if (packet.getSize() - packet.getReadPos() >= 4) {
|
if (packet.getSize() - packet.getReadPos() >= 4) {
|
||||||
/*uint32_t msgType =*/ packet.readUInt32();
|
uint32_t msgType = packet.readUInt32();
|
||||||
std::string msg = packet.readString();
|
std::string msg = packet.readString();
|
||||||
if (!msg.empty()) addSystemChatMessage("[Server] " + msg);
|
if (!msg.empty()) {
|
||||||
|
std::string prefix;
|
||||||
|
switch (msgType) {
|
||||||
|
case 1: prefix = "[Shutdown] "; addUIError("Server shutdown: " + msg); break;
|
||||||
|
case 2: prefix = "[Restart] "; addUIError("Server restart: " + msg); break;
|
||||||
|
case 4: prefix = "[Shutdown cancelled] "; break;
|
||||||
|
case 5: prefix = "[Restart cancelled] "; break;
|
||||||
|
default: prefix = "[Server] "; break;
|
||||||
|
}
|
||||||
|
addSystemChatMessage(prefix + msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue