public void SendCalendarEvent(ObjectGuid guid, CalendarEvent calendarEvent, CalendarSendEventType sendType) { Player player = Global.ObjAccessor.FindPlayer(guid); if (!player) { return; } List <CalendarInvite> eventInviteeList = _invites[calendarEvent.EventId]; CalendarSendEvent packet = new CalendarSendEvent(); packet.Date = calendarEvent.Date; packet.Description = calendarEvent.Description; packet.EventID = calendarEvent.EventId; packet.EventName = calendarEvent.Title; packet.EventType = sendType; packet.Flags = calendarEvent.Flags; packet.GetEventType = calendarEvent.EventType; packet.LockDate = calendarEvent.LockDate; // Always 0 ? packet.OwnerGuid = calendarEvent.OwnerGuid; packet.TextureID = calendarEvent.TextureId; Guild guild = Global.GuildMgr.GetGuildById(calendarEvent.GuildId); packet.EventGuildID = (guild ? guild.GetGUID() : ObjectGuid.Empty); foreach (var calendarInvite in eventInviteeList) { ObjectGuid inviteeGuid = calendarInvite.InviteeGuid; Player invitee = Global.ObjAccessor.FindPlayer(inviteeGuid); uint inviteeLevel = invitee ? invitee.GetLevel() : Global.CharacterCacheStorage.GetCharacterLevelByGuid(inviteeGuid); ulong inviteeGuildId = invitee ? invitee.GetGuildId() : Global.CharacterCacheStorage.GetCharacterGuildIdByGuid(inviteeGuid); CalendarEventInviteInfo inviteInfo = new CalendarEventInviteInfo(); inviteInfo.Guid = inviteeGuid; inviteInfo.Level = (byte)inviteeLevel; inviteInfo.Status = calendarInvite.Status; inviteInfo.Moderator = calendarInvite.Rank; inviteInfo.InviteType = (byte)(calendarEvent.IsGuildEvent() && calendarEvent.GuildId == inviteeGuildId ? 1 : 0); inviteInfo.InviteID = calendarInvite.InviteId; inviteInfo.ResponseTime = calendarInvite.ResponseTime; inviteInfo.Notes = calendarInvite.Note; packet.Invites.Add(inviteInfo); } player.SendPacket(packet); }
public void AddEvent(CalendarEvent calendarEvent, CalendarSendEventType sendType) { _events.Add(calendarEvent); UpdateEvent(calendarEvent); SendCalendarEvent(calendarEvent.OwnerGuid, calendarEvent, sendType); }