mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-17 04:42:31 +08:00
implement BattlePass (Except missions) (#1316)
* BattlePass * BattlePass
This commit is contained in:
committed by
GitHub
Unverified
parent
c171b5904e
commit
b9bf33c2f7
@@ -0,0 +1,63 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PacketBattlePassAllDataNotify extends BasePacket {
|
||||
public PacketBattlePassAllDataNotify(Player player) {
|
||||
super(PacketOpcodes.BattlePassAllDataNotify);
|
||||
|
||||
var value = player.getBattlePassManager().getPoint();
|
||||
|
||||
int level = (int) Math.floor(value / 1000d);
|
||||
|
||||
var point = value - level * 1000;
|
||||
|
||||
List<BattlePassRewardTagOuterClass.BattlePassRewardTag> rewardTags = new ArrayList<>();
|
||||
|
||||
for (int id = 1; id <= player.getAccount().getAwardTakenLevel(); id++)
|
||||
rewardTags.add(BattlePassRewardTagOuterClass.BattlePassRewardTag.newBuilder()
|
||||
.setLevel(id)
|
||||
.setUnlockStatus(BattlePassUnlockStatusOuterClass.BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_FREE)
|
||||
.setRewardId(1001000 + id)
|
||||
.build());
|
||||
|
||||
|
||||
var proto
|
||||
= BattlePassAllDataNotifyOuterClass.BattlePassAllDataNotify.newBuilder();
|
||||
|
||||
var missions
|
||||
= GameData.getBattlePassMissionExcelConfigDataMap();
|
||||
|
||||
|
||||
var curSchedule
|
||||
= BattlePassScheduleOuterClass.BattlePassSchedule.newBuilder()
|
||||
.setScheduleId(2700).setLevel(level).setPoint(point).setBeginTime(1653940800).setEndTime(2059483200).addAllRewardTakenList(rewardTags)
|
||||
.setIsViewed(true).setUnlockStatus(BattlePassUnlockStatusOuterClass.BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_FREE).setCurCyclePoints(0)
|
||||
.setCurCycle(BattlePassCycleOuterClass.BattlePassCycle.newBuilder().setBeginTime(1653940800).setEndTime(2059483200).setCycleIdx(3).build());
|
||||
|
||||
proto.setHaveCurSchedule(true).setCurSchedule(curSchedule);
|
||||
|
||||
|
||||
//TODO: UNFINISHED YET / Need to add mission data --> Hard work
|
||||
|
||||
for (var mission : missions.values())
|
||||
proto.addMissionList(BattlePassMissionOuterClass.BattlePassMission.newBuilder()
|
||||
.setMissionId(mission.getId())
|
||||
.setMissionStatus(BattlePassMissionOuterClass.BattlePassMission.MissionStatus.MISSION_STATUS_UNFINISHED)
|
||||
.setTotalProgress(mission.getProgress())
|
||||
.setMissionType(
|
||||
mission.getRefreshType() == null ? 0 :
|
||||
mission.getRefreshType().equals("BATTLE_PASS_MISSION_REFRESH_SCHEDULE") ? 2 : mission.getRefreshType().contains("CYCLE") ? 1 : 0)
|
||||
.setRewardBattlePassPoint(mission.getAddPoint())
|
||||
.build());
|
||||
|
||||
setData(proto.build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user