2018-07-06 15:30:00 +02:00
|
|
|
package com.eu.habbo.messages.outgoing.users;
|
|
|
|
|
2019-03-18 02:22:00 +01:00
|
|
|
import com.eu.habbo.Emulator;
|
2018-07-06 15:30:00 +02:00
|
|
|
import com.eu.habbo.habbohotel.messenger.MessengerBuddy;
|
|
|
|
import com.eu.habbo.habbohotel.users.Habbo;
|
|
|
|
import com.eu.habbo.messages.ServerMessage;
|
|
|
|
import com.eu.habbo.messages.outgoing.MessageComposer;
|
|
|
|
import com.eu.habbo.messages.outgoing.Outgoing;
|
|
|
|
import gnu.trove.map.hash.THashMap;
|
|
|
|
import gnu.trove.set.hash.THashSet;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Random;
|
|
|
|
|
2019-05-26 20:14:53 +02:00
|
|
|
public class ProfileFriendsComposer extends MessageComposer {
|
2018-09-28 21:25:00 +02:00
|
|
|
private final List<MessengerBuddy> lovers = new ArrayList<>();
|
|
|
|
private final List<MessengerBuddy> friends = new ArrayList<>();
|
|
|
|
private final List<MessengerBuddy> haters = new ArrayList<>();
|
2018-07-06 15:30:00 +02:00
|
|
|
private final int userId;
|
|
|
|
|
2019-05-26 20:14:53 +02:00
|
|
|
public ProfileFriendsComposer(THashMap<Integer, THashSet<MessengerBuddy>> map, int userId) {
|
2019-03-18 02:22:00 +01:00
|
|
|
this.lovers.addAll(map.get(1));
|
|
|
|
this.friends.addAll(map.get(2));
|
|
|
|
this.haters.addAll(map.get(3));
|
2018-07-06 15:30:00 +02:00
|
|
|
|
|
|
|
this.userId = userId;
|
|
|
|
}
|
|
|
|
|
2019-05-26 20:14:53 +02:00
|
|
|
public ProfileFriendsComposer(Habbo habbo) {
|
|
|
|
try {
|
|
|
|
for (Map.Entry<Integer, MessengerBuddy> map : habbo.getMessenger().getFriends().entrySet()) {
|
2018-07-06 15:30:00 +02:00
|
|
|
if (map.getValue().getRelation() == 0)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
switch (map.getValue().getRelation()) {
|
|
|
|
case 1:
|
|
|
|
this.lovers.add(map.getValue());
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
this.friends.add(map.getValue());
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
this.haters.add(map.getValue());
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2019-05-26 20:14:53 +02:00
|
|
|
} catch (Exception e) {
|
2019-03-18 02:22:00 +01:00
|
|
|
Emulator.getLogging().logErrorLine(e);
|
2018-07-06 15:30:00 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
this.userId = habbo.getHabboInfo().getId();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-05-26 20:14:53 +02:00
|
|
|
public ServerMessage compose() {
|
|
|
|
try {
|
2018-07-06 15:30:00 +02:00
|
|
|
this.response.init(Outgoing.ProfileFriendsComposer);
|
|
|
|
this.response.appendInt(this.userId);
|
|
|
|
|
|
|
|
int total = 0;
|
|
|
|
|
2019-05-26 20:14:53 +02:00
|
|
|
if (!this.lovers.isEmpty())
|
2018-07-06 15:30:00 +02:00
|
|
|
total++;
|
|
|
|
|
2019-05-26 20:14:53 +02:00
|
|
|
if (!this.friends.isEmpty())
|
2018-07-06 15:30:00 +02:00
|
|
|
total++;
|
|
|
|
|
2019-05-26 20:14:53 +02:00
|
|
|
if (!this.haters.isEmpty())
|
2018-07-06 15:30:00 +02:00
|
|
|
total++;
|
|
|
|
|
|
|
|
this.response.appendInt(total);
|
|
|
|
|
|
|
|
Random random = new Random();
|
|
|
|
|
|
|
|
if (!this.lovers.isEmpty()) {
|
|
|
|
int loversIndex = random.nextInt(this.lovers.size());
|
|
|
|
this.response.appendInt(1);
|
|
|
|
this.response.appendInt(this.lovers.size());
|
|
|
|
this.response.appendInt(this.lovers.get(loversIndex).getId());
|
|
|
|
this.response.appendString(this.lovers.get(loversIndex).getUsername());
|
|
|
|
this.response.appendString(this.lovers.get(loversIndex).getLook());
|
|
|
|
}
|
|
|
|
|
2019-03-18 02:22:00 +01:00
|
|
|
if (!this.friends.isEmpty()) {
|
2018-07-06 15:30:00 +02:00
|
|
|
int friendsIndex = random.nextInt(this.friends.size());
|
|
|
|
this.response.appendInt(2);
|
|
|
|
this.response.appendInt(this.friends.size());
|
|
|
|
this.response.appendInt(this.friends.get(friendsIndex).getId());
|
|
|
|
this.response.appendString(this.friends.get(friendsIndex).getUsername());
|
|
|
|
this.response.appendString(this.friends.get(friendsIndex).getLook());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!this.haters.isEmpty()) {
|
|
|
|
int hatersIndex = random.nextInt(this.haters.size());
|
|
|
|
this.response.appendInt(3);
|
|
|
|
this.response.appendInt(this.haters.size());
|
|
|
|
this.response.appendInt(this.haters.get(hatersIndex).getId());
|
|
|
|
this.response.appendString(this.haters.get(hatersIndex).getUsername());
|
|
|
|
this.response.appendString(this.haters.get(hatersIndex).getLook());
|
|
|
|
}
|
2019-05-26 20:14:53 +02:00
|
|
|
} catch (Exception e) {
|
2019-03-18 02:22:00 +01:00
|
|
|
Emulator.getLogging().logErrorLine(e);
|
2018-07-06 15:30:00 +02:00
|
|
|
}
|
|
|
|
return this.response;
|
|
|
|
}
|
|
|
|
}
|