예제 #1
0
        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);
        }
예제 #2
0
 public void AddEvent(CalendarEvent calendarEvent, CalendarSendEventType sendType)
 {
     _events.Add(calendarEvent);
     UpdateEvent(calendarEvent);
     SendCalendarEvent(calendarEvent.OwnerGuid, calendarEvent, sendType);
 }