diff --git a/src/main/java/emu/nebula/game/friends/FriendList.java b/src/main/java/emu/nebula/game/friends/FriendList.java index 9ba4fa1..6629f5a 100644 --- a/src/main/java/emu/nebula/game/friends/FriendList.java +++ b/src/main/java/emu/nebula/game/friends/FriendList.java @@ -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 diff --git a/src/main/java/emu/nebula/game/friends/Friendship.java b/src/main/java/emu/nebula/game/friends/Friendship.java index 085e626..2e1f7a9 100644 --- a/src/main/java/emu/nebula/game/friends/Friendship.java +++ b/src/main/java/emu/nebula/game/friends/Friendship.java @@ -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; diff --git a/src/main/java/emu/nebula/server/handlers/HandlerFriendStarSetReq.java b/src/main/java/emu/nebula/server/handlers/HandlerFriendStarSetReq.java new file mode 100644 index 0000000..f96236b --- /dev/null +++ b/src/main/java/emu/nebula/server/handlers/HandlerFriendStarSetReq.java @@ -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); + } + +}