Handle GetFriendRecommendListInfoCsReq

This commit is contained in:
Melledy
2023-12-02 04:05:49 -08:00
parent c992935ea5
commit f9dd1dabc7
6 changed files with 726 additions and 0 deletions

View File

@@ -114,6 +114,24 @@ public class GameServer extends KcpServer {
}
}
public List<Player> getRandomOnlinePlayers(int amount, Player filter) {
List<Player> list = new ArrayList<>();
synchronized (this.players) {
var iterator = this.players.values().iterator();
while (iterator.hasNext() && list.size() < amount) {
Player player = iterator.next();
if (player != filter) {
list.add(player);
}
}
}
return list;
}
public boolean deletePlayer(String accountUid) {
// Check if player exists
Player player = this.getOnlinePlayerByAccountId(accountUid);

View File

@@ -0,0 +1,18 @@
package emu.lunarcore.server.packet.recv;
import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketGetFriendRecommendListInfoScRsp;
@Opcodes(CmdId.GetFriendRecommendListInfoCsReq)
public class HandlerGetFriendRecommendListInfoCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] data) throws Exception {
var list = session.getServer().getRandomOnlinePlayers(10, session.getPlayer());
session.send(new PacketGetFriendRecommendListInfoScRsp(list));
}
}

View File

@@ -18,8 +18,10 @@ public class HandlerSearchPlayerCsReq extends PacketHandler {
public void handle(GameSession session, byte[] data) throws Exception {
var req = SearchPlayerCsReq.parseFrom(data);
// Setup result list
List<Player> results = new ArrayList<>();
// Get searched player
for (int uid : req.getSearchUidList()) {
Player target = session.getServer().getPlayerByUid(uid, true);

View File

@@ -0,0 +1,27 @@
package emu.lunarcore.server.packet.send;
import java.util.Collection;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.proto.FriendRecommendInfoOuterClass.FriendRecommendInfo;
import emu.lunarcore.proto.GetFriendRecommendListInfoScRspOuterClass.GetFriendRecommendListInfoScRsp;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
public class PacketGetFriendRecommendListInfoScRsp extends BasePacket {
public PacketGetFriendRecommendListInfoScRsp(Collection<Player> list) {
super(CmdId.GetFriendRecommendListInfoScRsp);
var data = GetFriendRecommendListInfoScRsp.newInstance();
for (Player player : list) {
var info = FriendRecommendInfo.newInstance()
.setSimpleInfo(player.toSimpleInfo());
data.addFriendRecommendList(info);
}
this.setData(data);
}
}