diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java index 69457e82..9709bfe0 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java @@ -1,13 +1,13 @@ package com.eu.habbo.messages.incoming.navigator; import com.eu.habbo.Emulator; -import com.eu.habbo.habbohotel.navigation.NavigatorFilter; -import com.eu.habbo.habbohotel.navigation.NavigatorFilterField; -import com.eu.habbo.habbohotel.navigation.SearchResultList; +import com.eu.habbo.habbohotel.navigation.*; +import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomCategory; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.navigator.NewNavigatorSearchResultsComposer; +import gnu.trove.map.hash.THashMap; import java.util.*; @@ -58,6 +58,11 @@ public class RequestNewNavigatorRoomsEvent extends MessageHandler List resultLists = filter.getResult(this.client.getHabbo()); Collections.sort(resultLists); + + if(!query.isEmpty()) { + resultLists = toQueryResults(resultLists); + } + this.client.sendResponse(new NewNavigatorSearchResultsComposer(view, query, resultLists)); return; } @@ -70,6 +75,19 @@ public class RequestNewNavigatorRoomsEvent extends MessageHandler if (filter == null) return; + try + { + List resultLists = new ArrayList<>(filter.getResult(this.client.getHabbo(), field, part, category != null ? category.getId() : -1)); + filter.filter(field.field, part, resultLists); + resultLists = toQueryResults(resultLists); + this.client.sendResponse(new NewNavigatorSearchResultsComposer(view, query, resultLists)); + } + catch (Exception e) + { + Emulator.getLogging().logErrorLine(e); + } + + /* try { @@ -83,6 +101,24 @@ public class RequestNewNavigatorRoomsEvent extends MessageHandler { Emulator.getLogging().logErrorLine(e); } + */ + } + + private ArrayList toQueryResults(List resultLists) { + ArrayList nList = new ArrayList<>(); + THashMap searchRooms = new THashMap<>(); + + for(SearchResultList li : resultLists) + { + for(Room room : li.rooms) + { + searchRooms.put(room.getId(), room); + } + } + + SearchResultList list = new SearchResultList(0, "query", "", SearchAction.NONE, ListMode.LIST, DisplayMode.VISIBLE, new ArrayList(searchRooms.values()), true, this.client.getHabbo().hasPermission("acc_enter_anyroom") || this.client.getHabbo().hasPermission(Permission.ACC_ANYROOMOWNER), DisplayOrder.ACTIVITY, -1); + nList.add(list); + return nList; } private void filter(List resultLists, NavigatorFilter filter, String part)