package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler; import emu.grasscutter.game.activity.musicgame.MusicGamePlayerData; import emu.grasscutter.game.props.ActivityType; import emu.grasscutter.game.props.WatcherTriggerType; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.MusicGameSettleReqOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketActivityInfoNotify; import emu.grasscutter.server.packet.send.PacketMusicGameSettleRsp; @Opcodes(PacketOpcodes.MusicGameSettleReq) public class HandlerMusicGameSettleReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { var req = MusicGameSettleReqOuterClass.MusicGameSettleReq.parseFrom(payload); var playerData = session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME); if (playerData.isEmpty()) { return; } var handler = (MusicGameActivityHandler) playerData.get().getActivityHandler(); boolean isNewRecord = false; // check if custom beatmap // TODO: PROTO IS OBFUSCATED, NEED TO GET PROPER VALUES. // Discovered: 23/08/2022. // Probably was an issue in 2.8 but was discovered in 3.0 port. // - Benj /*if (req.getMusicShareId() == 0) { session.getPlayer().getActivityManager().triggerWatcher( WatcherTriggerType.TRIGGER_FLEUR_FAIR_MUSIC_GAME_REACH_SCORE, String.valueOf(req.getMusicBasicId()), String.valueOf(req.getScore()) ); isNewRecord = handler.setMusicGameRecord(playerData.get(), MusicGamePlayerData.MusicGameRecord.of() .musicId(req.getMusicBasicId()) .maxCombo(req.getMaxCombo()) .maxScore(req.getScore()) .build()); // update activity info session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get()))); }else { handler.setMusicGameCustomBeatmapRecord(playerData.get(), MusicGamePlayerData.CustomBeatmapRecord.of() .musicShareId(req.getMusicShareId()) .score(req.getMaxCombo()) .settle(req.getSuccess()) .build()); } session.send(new PacketMusicGameSettleRsp(req.getMusicBasicId(), req.getMusicShareId(), isNewRecord));*/ } }