mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-06-13 12:23:42 +08:00
Implement battle pass triggers/rewards
This commit is contained in:
+18
-24
@@ -1,39 +1,33 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.BattlePassMissionExcelConfigData;
|
||||
import java.util.Collection;
|
||||
|
||||
import emu.grasscutter.game.battlepass.BattlePassMission;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.BattlePassMissionOuterClass;
|
||||
import emu.grasscutter.net.proto.BattlePassMissionUpdateNotifyOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import emu.grasscutter.net.proto.BattlePassMissionUpdateNotifyOuterClass.BattlePassMissionUpdateNotify;
|
||||
|
||||
public class PacketBattlePassMissionUpdateNotify extends BasePacket {
|
||||
|
||||
public PacketBattlePassMissionUpdateNotify(List<Integer> missionIdList , GameSession session) {
|
||||
public PacketBattlePassMissionUpdateNotify(BattlePassMission mission) {
|
||||
super(PacketOpcodes.BattlePassMissionUpdateNotify);
|
||||
|
||||
var proto
|
||||
= BattlePassMissionUpdateNotifyOuterClass.BattlePassMissionUpdateNotify.newBuilder();
|
||||
var proto = BattlePassMissionUpdateNotify.newBuilder()
|
||||
.addMissionList(mission.toProto())
|
||||
.build();
|
||||
|
||||
Map<Integer, BattlePassMissionExcelConfigData> missionMap
|
||||
= GameData.getBattlePassMissionExcelConfigDataMap();
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketBattlePassMissionUpdateNotify(Collection<BattlePassMission> missions) {
|
||||
super(PacketOpcodes.BattlePassMissionUpdateNotify);
|
||||
|
||||
missionIdList.forEach(missionId -> proto.addMissionList
|
||||
(BattlePassMissionOuterClass.BattlePassMission.newBuilder().setMissionId(missionId).setMissionStatus
|
||||
(BattlePassMissionOuterClass.BattlePassMission.MissionStatus.MISSION_STATUS_POINT_TAKEN)
|
||||
.setTotalProgress(missionMap.get(missionId).getProgress()).setRewardBattlePassPoint(missionMap.get(missionId).getAddPoint()).build()));
|
||||
|
||||
var point = session.getPlayer().getBattlePassManager().getPoint();
|
||||
missionIdList.forEach(missionId
|
||||
-> session.getPlayer().getBattlePassManager().addPoint(missionMap.get(missionId).getAddPoint()));
|
||||
Grasscutter.getLogger().info("[PacketBattlePassMissionUpdateNotify] addPoint: {}", session.getPlayer().getBattlePassManager().getPoint() - point);
|
||||
var proto = BattlePassMissionUpdateNotify.newBuilder();
|
||||
|
||||
missions.forEach(mission -> {
|
||||
proto.addMissionList(mission.toProto());
|
||||
});
|
||||
|
||||
this.setData(proto.build());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user