rendered paste bodyusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLog;
using WCell.Core;
using WCell.Core.Initialization;
using WCell.Core.DBC;
using WCell.Core.Network;
using WCell.RealmServer.Entities;
namespace WCell.RealmServer.Help
{
public static class TicketHandler
{
private static Logger log = LogManager.GetCurrentClassLogger();
public static bool SystemStatus = 1;
public static Dictionary<uint, Ticket> dic = new Dictionary<uint, Ticket>();
[PacketHandler(RealmServerOpCode.CMSG_GMTICKET_CREATE)]
public static void HandleCreateTicketPacket(RealmClient client, RealmPacketIn packet)
{
if (client.ActiveCharacter == null)
{
return;
}
uint Id = client.ActiveCharacter.EntityId.Low;
uint Type = packet.ReadUInt32();
packet.ReadBytes(1);
float Position_X = packet.ReadFloat();
float Position_Y = packet.ReadFloat();
float Position_Z = packet.ReadFloat();
string Message = packet.ReadString();
string Timestamp = DateTime.Now.ToLongTimeString();
dic[Id] = new Ticket(Id, Type, Position_X, Position_Y, Position_Z, Message, Timestamp);
using (RealmPacketOut repPacket = new RealmPacketOut(RealmServerOpCode.SMSG_GMTICKET_CREATE))
{
repPacket.WriteUInt(2);
client.Send(repPacket);
}
}
[PacketHandler(RealmServerOpCode.CMSG_GMTICKET_GETTICKET)]
public static void HandleGetTicketPacket(RealmClient client, RealmPacketIn packet)
{
using (RealmPacketOut repPacket = new RealmPacketOut(RealmServerOpCode.SMSG_GMTICKET_GETTICKET))
{
uint Id = client.ActiveCharacter.EntityId.Low;
Ticket ticket;
if (dic.TryGetValue(Id, out ticket))
{
repPacket.WriteUInt(6);
repPacket.WriteCString(ticket.Message);
repPacket.WriteByte((byte)ticket.Type);
client.Send(repPacket);
}
else
{
return;
}
}
}
[PacketHandler(RealmServerOpCode.CMSG_GMTICKET_SYSTEMSTATUS)]
public static void HandleSystemStatusPacket(RealmClient client, RealmPacketIn packet)
{
using (RealmPacketOut repPacket = new RealmPacketOut(RealmServerOpCode.SMSG_GMTICKET_SYSTEMSTATUS))
{
repPacket.WriteUInt((uint)SystemStatus);
client.Send(repPacket);
}
}
[PacketHandler(RealmServerOpCode.CMSG_GMTICKET_DELETETICKET)]
public static void HandleDeleteTicketPacket(RealmClient client, RealmPacketIn packet)
{
uint Id = client.ActiveCharacter.EntityId.Low;
using (RealmPacketOut repPacket = new RealmPacketOut(RealmServerOpCode.SMSG_GMTICKET_DELETETICKET))
{
dic.Remove(Id);
repPacket.WriteUInt(9);
client.Send(repPacket);
}
}
[PacketHandler(RealmServerOpCode.CMSG_GMTICKET_UPDATETEXT)]
public static void HandleUpdateTicketPacket(RealmClient client, RealmPacketIn packet)
{
using (RealmPacketOut repPacket = new RealmPacketOut(RealmServerOpCode.SMSG_GMTICKET_UPDATETEXT))
{
uint Id = client.ActiveCharacter.EntityId.Low;
Ticket ticket;
packet.ReadBytes(1);
if (dic.TryGetValue(Id, out ticket))
{
ticket.Message = packet.ReadString();
ticket.Timestamp = DateTime.Now.ToLongTimeString();
dic.Remove(Id);
dic[Id] = ticket;
repPacket.WriteUInt(2);
client.Send(repPacket);
}
else
{
repPacket.WriteUInt(1);
client.Send(repPacket);
}
}
}
}
}