internal void QueueRemoveActiveRooms(RoomData data) { lock (removeActiveRoomQueue.SyncRoot) { removeActiveRoomQueue.Enqueue(data); } }
internal void QueueAddActiveRooms(RoomData data) { lock (addActiveRoomQueue.SyncRoot) { addActiveRoomQueue.Enqueue(data); } }
internal void QueueUpdateActiveRooms(RoomData data) { lock (updateActiveRoomQueue.SyncRoot) { updateActiveRoomQueue.Enqueue(data); } }
internal void QueueUpdateEvent(RoomData data, int roomEventCategory) { lock (updateQueue.SyncRoot) { updateQueue.Enqueue(data); } eventCategories[roomEventCategory].QueueUpdateEvent(data); }
internal void QueueRemoveEvent(RoomData data, int roomEventCategory) { lock (removeQueue.SyncRoot) { removeQueue.Enqueue(data); } eventCategories[roomEventCategory].QueueRemoveEvent(data); }
internal void QueueAddEvent(RoomData data, int roomEventCategory) { lock (addQueue.SyncRoot) { addQueue.Enqueue(data); } eventCategories[roomEventCategory].QueueAddEvent(data); }
internal void QueueVoteRemove(RoomData data) { lock (votedRoomsRemoveQueue.SyncRoot) { votedRoomsRemoveQueue.Enqueue(data); } }
internal void QueueVoteAdd(RoomData data) { lock (votedRoomsAddQueue.SyncRoot) { votedRoomsAddQueue.Enqueue(data); } }
internal void QueueActiveRoomUpdate(RoomData data) { lock (activeRoomsUpdateQueue.SyncRoot) { activeRoomsUpdateQueue.Enqueue(data); } if (!roomCategories.ContainsKey(data.Category)) roomCategories.Add(data.Category, new RoomCategory(data.Category, "MISSING CATEGORY")); roomCategories[data.Category].QueueUpdateActiveRooms(data); }
internal RoomData GenerateRoomData(UInt32 RoomId) { if (loadedRoomData.ContainsKey(RoomId)) return (RoomData)loadedRoomData[RoomId]; RoomData Data = new RoomData(); if (IsRoomLoaded(RoomId)) { return GetRoom(RoomId).RoomData; } else { DataRow Row = null; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT rooms.*, room_active.active_users FROM rooms LEFT JOIN room_active ON (room_active.roomid = rooms.id) WHERE id = " + RoomId); Row = dbClient.getRow(); } if (Row == null) { return null; } Data.Fill(Row); loadedRoomData.Add(RoomId, Data); } return Data; }
internal RoomData GenerateNullableRoomData(UInt32 RoomId) { if (GenerateRoomData(RoomId) != null) { return GenerateRoomData(RoomId); } RoomData Data = new RoomData(); Data.FillNull(RoomId); return Data; }
private void InitializeFromRoomData(RoomData Data) { Initialize(Data.Id, Data.Name, Data.Description, Data.Type, Data.Owner, Data.Category, Data.State, Data.UsersMax, Data.ModelName, Data.CCTs, Data.Score, Data.Tags, Data.AllowPets, Data.AllowPetsEating, Data.AllowWalkthrough, Data.Hidewall, Data.Icon, Data.Password, Data.Wallpaper, Data.Floor, Data.Landscape, Data, Data.AllowRightsOverride, Data.WallThickness, Data.FloorThickness); }
internal static ServerMessage SerializeTicketChatlog(SupportTicket Ticket, RoomData RoomData, Double Timestamp) { Room currentRoom = PiciEnvironment.GetGame().GetRoomManager().GetRoom(RoomData.Id); ServerMessage Message = new ServerMessage(534); Message.AppendUInt(Ticket.TicketId); Message.AppendUInt(Ticket.SenderId); Message.AppendUInt(Ticket.ReportedId); Message.AppendBoolean(RoomData.IsPublicRoom); Message.AppendUInt(RoomData.Id); Message.AppendStringWithBreak(RoomData.Name); if (currentRoom == null) { Message.AppendInt32(0); return Message; } else { using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT user_id,user_name,hour,minute,message FROM chatlogs WHERE room_id = " + RoomData.Id + " AND timestamp >= " + (Timestamp - 300) + " AND timestamp <= " + Timestamp + " ORDER BY timestamp DESC"); DataTable Data = dbClient.getTable(); Message = new ServerMessage(534); Message.AppendUInt(Ticket.TicketId); Message.AppendUInt(Ticket.SenderId); Message.AppendUInt(Ticket.ReportedId); Message.AppendBoolean(RoomData.IsPublicRoom); Message.AppendUInt(RoomData.Id); Message.AppendStringWithBreak(RoomData.Name); if (Data != null) { Message.AppendInt32(Data.Rows.Count); foreach (DataRow Row in Data.Rows) { Message.AppendInt32((int)Row["hour"]); Message.AppendInt32((int)Row["minute"]); Message.AppendUInt((UInt32)Row["user_id"]); Message.AppendStringWithBreak((String)Row["user_name"]); Message.AppendStringWithBreak((String)Row["message"]); } } else { Message.AppendInt32(0); } return Message; } } }
internal static ServerMessage SerializeRoomTool(RoomData Data) { Room Room = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Data.Id); UInt32 OwnerId = 0; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { try { dbClient.setQuery("SELECT id FROM users WHERE username = @owner"); dbClient.addParameter("owner", Data.Owner); OwnerId = Convert.ToUInt32(dbClient.getRow()[0]); } catch (Exception e) { Logging.HandleException(e, "ModerationTool.SerializeRoomTool"); } } ServerMessage Message = new ServerMessage(538); Message.AppendUInt(Data.Id); Message.AppendInt32(Data.UsersNow); // user count if (Room != null) { Message.AppendBoolean((Room.GetRoomUserManager().GetRoomUserByHabbo(Data.Owner) != null)); } else { Message.AppendBoolean(false); } Message.AppendUInt(OwnerId); Message.AppendStringWithBreak(Data.Owner); Message.AppendUInt(Data.Id); Message.AppendStringWithBreak(Data.Name); Message.AppendStringWithBreak(Data.Description); Message.AppendInt32(Data.TagCount); foreach (string Tag in Data.Tags) { Message.AppendStringWithBreak(Tag); } if (Room != null) { Message.AppendBoolean(Room.HasOngoingEvent); if (Room.Event != null) { Message.AppendStringWithBreak(Room.Event.Name); Message.AppendStringWithBreak(Room.Event.Description); Message.AppendInt32(Room.Event.Tags.Count); foreach (string Tag in Room.Event.Tags.ToArray()) { Message.AppendStringWithBreak(Tag); } } } else { Message.AppendBoolean(false); } return Message; }
private void Initialize(UInt32 Id, string Name, string Description, string Type, string Owner, int Category, int State, int UsersMax, string ModelName, string CCTs, int Score, List <string> pTags, bool AllowPets, bool AllowPetsEating, bool AllowWalkthrough, bool Hidewall, RoomIcon Icon, string Password, string Wallpaper, string Floor, string Landscape, RoomData RoomData, bool RightOverride, int walltickness, int floorthickness) { this.mDisposed = false; this.Id = Id; this.Name = Name; this.Description = Description; this.Owner = Owner; this.Category = Category; this.Type = Type; this.State = State; this.UsersNow = 0; this.UsersMax = UsersMax; this.ModelName = ModelName; this.CCTs = CCTs; this.Score = Score; tagCount = 0; this.Tags = new ArrayList(); foreach (string tag in pTags) { tagCount++; Tags.Add(tag); } this.AllowPets = AllowPets; this.AllowPetsEating = AllowPetsEating; this.AllowWalkthrough = AllowWalkthrough; this.Hidewall = Hidewall; this.myIcon = Icon; this.Password = Password; this.Bans = new Dictionary <UInt32, double>(); this.Wallpaper = Wallpaper; this.Floor = Floor; this.Landscape = Landscape; this.chatMessageManager = new ChatMessageManager(); this.groups = new QueuedDictionary <int, Group>(); this.ActiveTrades = new ArrayList(); this.mCycleEnded = false; this.mRoomData = RoomData; this.EveryoneGotRights = RightOverride; this.roomMessages = new Queue(); this.chatMessageQueue = new Queue(); this.rnd = new Random(); this.roomMessages = new Queue(); this.roomAlerts = new Queue(); this.roomBadge = new Queue(); this.roomKick = new Queue(); this.roomServerMessages = new Queue(); this.IdleTime = 0; this.RoomMuted = false; this.WallThickness = walltickness; this.FloorThickness = floorthickness; this.gamemap = new Gamemap(this); this.roomItemHandling = new RoomItemHandling(this); this.roomUserManager = new RoomUserManager(this); this.wiredHandler = new WiredHandler(this); LoadRights(); GetRoomItemHandler().LoadFurniture(); wiredHandler.LoadWired(); GetGameMap().GenerateMaps(); LoadMusic(); //LoadBots(); using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Pici.Storage.Database.DatabaseType.MySQL) { dbClient.runFastQuery("REPLACE INTO room_active VALUES (" + Id + ",1)"); } else { dbClient.runFastQuery("IF EXISTS (SELECT roomid FROM room_active WHERE roomid = " + Id + ") " + "UPDATE room_active SET active_users = 1 WHERE roomid = " + Id + " " + "ELSE " + "INSERT INTO room_active VALUES (" + Id + ",1)"); } } PiciEnvironment.GetGame().GetRoomManager().QueueActiveRoomAdd(mRoomData); }
internal RoomData FetchRoomData(UInt32 RoomId, DataRow dRow) { if (loadedRoomData.ContainsKey(RoomId)) return (RoomData)loadedRoomData[RoomId]; else { RoomData data = new RoomData(); if (IsRoomLoaded(RoomId)) data.Fill(GetRoom(RoomId)); else data.Fill(dRow); loadedRoomData.Add(RoomId, data); return data; } }
internal Room(RoomData Data) { InitializeFromRoomData(Data); }