diff options
Diffstat (limited to 'src/server/game/Tickets/TicketMgr.cpp')
-rw-r--r-- | src/server/game/Tickets/TicketMgr.cpp | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 7cd27fdaa62..7999f0f26ba 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -18,6 +18,7 @@ #include "Common.h" #include "TicketMgr.h" +#include "TicketPackets.h" #include "DatabaseEnv.h" #include "Log.h" #include "Language.h" @@ -28,7 +29,7 @@ #include "Player.h" #include "Opcodes.h" -inline float GetAge(uint64 t) { return float(time(NULL) - t) / DAY; } +inline time_t GetAge(uint64 t) { return (time(NULL) - t) / DAY; } /////////////////////////////////////////////////////////////////////////////////////////////////// // GM ticket @@ -113,30 +114,6 @@ void GmTicket::DeleteFromDB() CharacterDatabase.Execute(stmt); } -void GmTicket::WritePacket(WorldPacket& data) const -{ - data << uint32(GMTICKET_STATUS_HASTEXT); - data << uint32(_id); - data << _message; - data << uint8(_needMoreHelp); - data << GetAge(_lastModifiedTime); - if (GmTicket* ticket = sTicketMgr->GetOldestOpenTicket()) - data << GetAge(ticket->GetLastModifiedTime()); - else - data << float(0); - - // I am not sure how blizzlike this is, and we don't really have a way to find out - data << GetAge(sTicketMgr->GetLastChange()); - - data << uint8(std::min(_escalatedStatus, TICKET_IN_ESCALATION_QUEUE)); // escalated data - data << uint8(_viewed ? GMTICKET_OPENEDBYGM_STATUS_OPENED : GMTICKET_OPENEDBYGM_STATUS_NOT_OPENED); // whether or not it has been viewed - - // TODO: implement these - std::string waitTimeOverrideMessage = ""; - data << waitTimeOverrideMessage; - data << uint32(0); // waitTimeOverrideMinutes -} - void GmTicket::SendResponse(WorldSession* session) const { WorldPacket data(SMSG_GM_TICKET_RESPONSE); @@ -267,7 +244,7 @@ TicketMgr::~TicketMgr() void TicketMgr::Initialize() { - SetStatus(sWorld->getBoolConfig(CONFIG_ALLOW_TICKETS)); + SetStatus(sWorld->getBoolConfig(CONFIG_TICKET_SYSTEM_STATUS)); } void TicketMgr::ResetTickets() @@ -408,12 +385,27 @@ void TicketMgr::ShowEscalatedList(ChatHandler& handler) const void TicketMgr::SendTicket(WorldSession* session, GmTicket* ticket) const { - WorldPacket data(SMSG_GM_TICKET_GET_TICKET_RESPONSE, (ticket ? (4 + 4 + 1 + 4 + 4 + 4 + 1 + 1) : 4)); + WorldPackets::Ticket::GMTicketGetTicketResponse response; if (ticket) - ticket->WritePacket(data); + { + response.Result = GMTICKET_STATUS_HASTEXT; + response.Info.HasValue = true; + + response.Info.Value.TicketID = ticket->GetId(); + response.Info.Value.TicketDescription = ticket->GetMessage(); + response.Info.Value.Category = ticket->GetNeedMoreHelp(); + response.Info.Value.TicketOpenTime = GetAge(ticket->GetLastModifiedTime()); + response.Info.Value.OldestTicketTime = sTicketMgr->GetOldestOpenTicket() ? GetAge(sTicketMgr->GetOldestOpenTicket()->GetLastModifiedTime()) : float(0); + response.Info.Value.UpdateTime = GetAge(sTicketMgr->GetLastChange()); + response.Info.Value.AssignedToGM = ticket->IsAssigned(); + response.Info.Value.OpenedByGM = ticket->IsViewed(); + response.Info.Value.WaitTimeOverrideMessage = ""; + response.Info.Value.WaitTimeOverrideMinutes = 0; + } else - data << uint32(GMTICKET_STATUS_DEFAULT); + response.Result = GMTICKET_STATUS_DEFAULT; - session->SendPacket(&data); + session->SendPacket(response.Write()); + TC_LOG_DEBUG("misc", "SMSG_GM_GET_TICKET_RESPONSE [%s]", session->GetPlayerInfo().c_str()); } |