Make 'seen' status persistent

This commit is contained in:
Thoronium 2023-01-29 21:59:39 -07:00
parent 7c6138c423
commit e0c0ed688d
3 changed files with 20 additions and 1 deletions

View File

@ -119,6 +119,7 @@ public class Player {
@Getter @Setter private Set<Integer> rewardedLevels;
@Getter @Setter private Set<Integer> homeRewardedLevels;
@Getter @Setter private Set<Integer> realmList;
@Getter @Setter private Set<Integer> seenRealmList;
@Getter private Set<Integer> unlockedForgingBlueprints;
@Getter private Set<Integer> unlockedCombines;
@Getter private Set<Integer> unlockedFurniture;
@ -250,6 +251,7 @@ public class Player {
this.birthday = new PlayerBirthday();
this.rewardedLevels = new HashSet<>();
this.homeRewardedLevels = new HashSet<>();
this.seenRealmList = new HashSet<>();
this.moonCardGetTimes = new HashSet<>();
this.codex = new PlayerCodex(this);
this.progressManager = new PlayerProgressManager(this);
@ -398,6 +400,15 @@ public class Player {
}
}
public void addSeenRealmList(int seenId) {
if (this.seenRealmList == null) {
this.seenRealmList = new HashSet<>();
} else if (this.seenRealmList.contains(seenId)) {
return;
}
this.seenRealmList.add(seenId);
}
public int getExpeditionLimit() {
final int CONST_VALUE_EXPEDITION_INIT_LIMIT = 2; // TODO: pull from ConstValueExcelConfigData.json
int expeditionLimit = CONST_VALUE_EXPEDITION_INIT_LIMIT;

View File

@ -6,6 +6,7 @@ import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeModuleSeenReqOuterClass.HomeModuleSeenReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketHomeModuleSeenRsp;
import emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify;
@Opcodes(PacketOpcodes.HomeModuleSeenReq)
public class HandlerHomeModuleSeenReq extends PacketHandler {
@ -13,7 +14,13 @@ public class HandlerHomeModuleSeenReq extends PacketHandler {
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = HomeModuleSeenReq.parseFrom(payload);
var seen = req.getSeenModuleIdListList();
// TODO: Make 'seen' status persist
// As multiple may be seen at once, add each
for (int i : seen) {
session.getPlayer().addSeenRealmList(i);
}
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
session.send(new PacketHomeModuleSeenRsp(seen));
}
}

View File

@ -20,6 +20,7 @@ public class PacketPlayerHomeCompInfoNotify extends BasePacket {
.setCompInfo(
PlayerHomeCompInfoOuterClass.PlayerHomeCompInfo.newBuilder()
.addAllUnlockedModuleIdList(player.getRealmList())
.addAllSeenModuleIdList(player.getSeenRealmList())
.addAllLevelupRewardGotLevelList(player.getHomeRewardedLevels())
.setFriendEnterHomeOptionValue(player.getHome().getEnterHomeOption())
.build()