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 }
public void StopEvent() { lock (mEvent) { mEvent = null; } BroadcastEventData(); }
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(); }