Exemplo n.º 1
0
        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 = ButterflyEnvironment.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);
        }
Exemplo n.º 2
0
        public RoomData GenerateRoomData(int RoomId)
        {
            Room Room;

            if (TryGetRoom(RoomId, out Room))
            {
                return(Room.RoomData);
            }

            DataRow Row = (DataRow)null;

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.SetQuery("SELECT * FROM rooms WHERE id = " + RoomId);
                Row = queryreactor.GetRow();
            }
            if (Row == null)
            {
                return((RoomData)null);
            }

            RoomData roomData = new RoomData();

            roomData.Fill(Row);

            //if (!_loadedRoomData.ContainsKey(RoomId) && AddCache)
            //_loadedRoomData.TryAdd(RoomId, roomData);

            return(roomData);
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        public RoomData FetchRoomData(int roomID, DataRow dRow)
        {
            Room room = GetRoom(roomID);

            if (room != null)
            {
                return(room.RoomData);
            }
            else
            {
                RoomData data = new RoomData();
                data.Fill(dRow);
                return(data);
            }
        }
Exemplo n.º 5
0
        internal RoomData FetchRoomData(UInt32 RoomId, DataRow dRow)
        {
            if (loadedRoomData.ContainsKey(RoomId))
            {
                return(loadedRoomData[RoomId]);
            }
            else
            {
                var data = new RoomData();
                data.Fill(dRow);

                if (!loadedRoomData.ContainsKey(RoomId))
                {
                    loadedRoomData.Add(RoomId, data);
                }

                return(data);
            }
        }
Exemplo n.º 6
0
        internal RoomData GenerateRoomData(UInt32 RoomId)
        {
            if (loadedRoomData.ContainsKey(RoomId))
            {
                return(loadedRoomData[RoomId]);
            }

            var Data = new RoomData();

            if (IsRoomLoaded(RoomId))
            {
                return(GetRoom(RoomId).RoomData);
            }
            else
            {
                DataRow Row = null;

                using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT * FROM rooms WHERE id = " + RoomId);
                    Row = dbClient.getRow();
                }

                if (Row == null)
                {
                    return(null);
                }

                Data.Fill(Row);

                if (!loadedRoomData.ContainsKey(RoomId))
                {
                    loadedRoomData.Add(RoomId, Data);
                }

                return(Data);
            }
        }
Exemplo n.º 7
0
 internal RoomData FetchRoomData(uint roomID, DataRow dRow)
 {
     if (CachedRoomdata.ContainsKey(roomID))
         return (RoomData)CachedRoomdata[roomID];
     else
     {
         RoomData data = new RoomData();
         data.Fill(dRow);
         CachedRoomdata.Add(roomID, data);
         return data;
     }
 }
Exemplo n.º 8
0
        internal RoomData GenerateRoomData(UInt32 RoomId, bool fromcache = true)
        {
            if (CachedRoomdata.ContainsKey(RoomId) && fromcache)
                return (RoomData)CachedRoomdata[RoomId];

            RoomData Data = new RoomData();

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("SELECT rooms.*, room_active.active_users, users.id AS ownerid FROM rooms LEFT JOIN room_active ON (room_active.roomid = rooms.id) JOIN users ON (users.username = rooms.owner) WHERE rooms.id = " + RoomId);
                DataRow Row = dbClient.getRow();

                if (Row == null)
                    return null;

                Data.Fill(Row);
                CachedRoomdata.Add(RoomId, Data);
            }

            return Data;
        }
Exemplo n.º 9
0
        internal ServerMessage SerializeNavigator(GameClient session, int mode)
        {
            if (mode > -1)
                return SerializeActiveRooms(mode);

            ServerMessage reply = PacketHandelingManager.GetRecycledItem(OutputCode.GuestRoomSearchResultEvent);

            switch (mode)
            {
                case -5:
                    {
                        reply.AddInt32(mode);

                        List<RoomData> activeFriends = session.GetHabboDataContainer().GetChatMessenger().GetActiveFriendsRooms().OrderByDescending(p => p.UsersNow).ToList();
                        SerializeNavigatorRooms(ref reply, activeFriends);

                        return reply;
                    }
                case -4:
                    {
                        reply.AddInt32(mode);

                        List<string> FriendsNames = session.GetHabboDataContainer().GetChatMessenger().GetFriendUsernames().ToList();

                        if (FriendsNames.Count == 0)
                        {
                            SerializeNavigatorRooms(ref reply, new List<RoomData>());

                            return reply;
                        }

                        QueryChunk Query = new QueryChunk("SELECT rooms.*, room_active.active_users FROM rooms LEFT JOIN room_active ON (room_active.roomid = rooms.id) WHERE");

                        int i = 0;
                        foreach (string Name in FriendsNames)
                        {
                            if (i > 0)
                                Query.AddSpecialRawQuery(" OR");

                            Query.AddSpecialRawQuery(" owner = '" + ButterflyEnvironment.FilterInjectionChars(Name, true) + "'");

                            i++;
                        }

                        Query.AddQuery(" ORDER BY room_active.active_users DESC LIMIT 40;");

                        using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                        {
                            Query.Execute(dbClient);
                            DataTable dTable = dbClient.getTable();

                            List<RoomData> parsedRoomData = new List<RoomData>();

                            foreach (DataRow dRow in dTable.Rows)
                            {
                                RoomData data = new RoomData();
                                data.Fill(dRow);

                                bool any = false;

                                foreach (RoomData p in parsedRoomData)
                                {
                                    if (p.Id == data.Id)
                                    {
                                        any = true;
                                        break;
                                    }

                                    if (p.Name == data.Name)
                                    {
                                        any = true;
                                        break;
                                    }
                                }

                                if (any)
                                    continue;

                                parsedRoomData.Add(data);
                            }

                            SerializeNavigatorRooms(ref reply, parsedRoomData);

                            Query.Dispose();
                        }

                        FriendsNames = null;

                        return reply;
                    }

                case -3:
                    {
                        reply.AddInt32(mode);

                        SerializeNavigatorRooms(ref reply, session.GetHabbo().UsersRooms);

                        return reply;
                    }

                case -2:
                    {
                        reply.AddInt32(mode);

                        int count = 0;
                        ISortable<RoomData>[] rooms = ButterflyEnvironment.GetGame().GetRoomManager().GetActiveRooms(out count);

                        SerializeNavigatorRooms(reply, rooms, count);

                        rooms = null;

                        return reply;
                    }

                case -1:
                    {
                        reply.AddInt32(mode);

                        int count = 0;
                        ISortable<RoomData>[] rooms = ButterflyEnvironment.GetGame().GetRoomManager().GetActiveRooms(out count);

                        SerializeNavigatorRooms(reply, rooms, count);

                        rooms = null;

                        return reply;
                    }
            }

            return reply;
        }