Implement friend star handler

This commit is contained in:
Melledy
2025-11-14 08:29:05 -08:00
parent 463955db3a
commit d504b2b629
3 changed files with 47 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ import emu.nebula.proto.Public.FriendState;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import lombok.Getter;
import us.hebi.quickbuf.RepeatedLong;
@Getter
public class FriendList extends PlayerManager {
@@ -243,6 +244,24 @@ public class FriendList extends PlayerManager {
// Success
return true;
}
public synchronized void setStar(RepeatedLong list, boolean star) {
for (long id : list) {
// Get friendship
var friendship = this.getFriendById((int) id);
if (friendship == null) {
continue;
}
// Set star
friendship.setStar(star);
friendship.save();
}
// Reset cooldown on caching friendlist proto
this.cacheCooldown = 0;
}
// Database
@@ -285,6 +304,7 @@ public class FriendList extends PlayerManager {
// Create info
var info = FriendDetail.newInstance()
.setBase(base)
.setStar(friend.isStar())
.setGetEnergy(friend.getEnergy());
// Add

View File

@@ -19,10 +19,9 @@ public class Friendship implements GameDatabaseObject {
@Indexed private int friendUid;
private int askerUid;
@Setter
private boolean isFriend;
private boolean star;
private int energy;
@Setter private boolean isFriend;
@Setter private boolean star;
@Setter private int energy;
@Setter private transient Player player;

View File

@@ -0,0 +1,24 @@
package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.FriendStarSet.FriendStarSetReq;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.friend_star_set_req)
public class HandlerFriendStarSetReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Parse request
var req = FriendStarSetReq.parseFrom(message);
// Set star
session.getPlayer().getFriendList().setStar(req.getUIds(), req.getStar());
// Encode and send
return session.encodeMsg(NetMsgId.friend_star_set_succeed_ack);
}
}