Example #1
0
        public static ServerMessage Compose(RoomEvent Event)
        {
            ServerMessage Message = new ServerMessage(OpcodesOut.ROOM_EVENT_INFO);

            if (Event == null)
            {
                Message.AppendStringWithBreak("-1");
            }
            else
            {
                Message.AppendStringWithBreak(Event.OwnerId.ToString());
                Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Event.OwnerId));
                Message.AppendStringWithBreak(Event.RoomId.ToString());
                Message.AppendInt32(Event.CategoryId);
                Message.AppendStringWithBreak(Event.Name);
                Message.AppendStringWithBreak(Event.Description);
                Message.AppendStringWithBreak(UnixTimestamp.GetDateTimeFromUnixTimestamp(Event.TimestampStarted).ToShortTimeString());

                List<string> Tags = Event.Tags;

                Message.AppendInt32(Tags.Count);

                foreach (string Tag in Tags)
                {
                    Message.AppendStringWithBreak(Tag);
                }
            }

            return Message;
        }
        public static void SerializeRoom(ServerMessage Message, RoomInfo Info, RoomEvent EventData = null)
        {
            bool ShowingEvent = (EventData != null);

            Message.AppendUInt32(Info.Id);                                                  // Actual priv room ID
            Message.AppendBoolean(ShowingEvent);                                         // Unknown
            Message.AppendStringWithBreak(ShowingEvent ? EventData.Name : Info.Name);                                       // Name
            Message.AppendStringWithBreak(Info.OwnerName);                                  // Descr
            Message.AppendInt32((int)Info.AccessType);                                      // Room state
            Message.AppendInt32(Info.CurrentUsers);           // Users now
            Message.AppendInt32(Info.MaxUsers);                                             // Users max
            Message.AppendStringWithBreak(ShowingEvent ? EventData.Description : Info.Description);                                // Descr
            Message.AppendInt32(0);                                                         // Unknown
            Message.AppendBoolean(Info.CanTrade);                                                   // Enable trade
            Message.AppendInt32(Info.Score);                                                // Score
            Message.AppendInt32(ShowingEvent? EventData.CategoryId : Info.CategoryId);                                           // Category
            Message.AppendStringWithBreak(ShowingEvent ? EventData.TimeStartedString : string.Empty);                                              // Unknown, seems no effect
            Message.AppendInt32(Info.Tags.Count);                                           // Tag count

            foreach (string Tag in Info.Tags)
            {
                Message.AppendStringWithBreak(Tag);
            }

            Message.AppendInt32(Info.Icon.BackgroundImageId);                               // Icon bg
            Message.AppendInt32(Info.Icon.OverlayImageId);                                  // Icon overlay
            Message.AppendInt32(Info.Icon.Objects.Count);                           // Icon fg count

            foreach (KeyValuePair<int, int> Data in Info.Icon.Objects)
            {
                Message.AppendInt32(Data.Key);
                Message.AppendInt32(Data.Value);
            }

            Message.AppendInt32(0);                                                         // Added in R63; unknown. Seems to have no effect.
            Message.AppendInt32(1);                                                         // Eof message, unknown
        }
Example #3
0
        public void StopEvent()
        {
            lock (mEvent)
            {
                mEvent = null;
            }

            BroadcastEventData();
        }
Example #4
0
        public void StartOrUpdateEvent(string Name, string Description, int CategoryId, List<string> Tags)
        {
            if (mEvent == null)
            {
                mEvent = new RoomEvent(Name, Description, CategoryId, Tags, Info.OwnerId, RoomId);
            }
            else
            {
                mEvent.Name = Name;
                mEvent.Description = Description;
                mEvent.CategoryId = CategoryId;
                mEvent.Tags = Tags;
            }

            BroadcastEventData();
        }