mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-06-11 17:33:35 +08:00
65 lines
1.9 KiB
Java
65 lines
1.9 KiB
Java
package emu.grasscutter.game.battlepass;
|
|
|
|
import dev.morphia.annotations.*;
|
|
import emu.grasscutter.data.GameData;
|
|
import emu.grasscutter.data.excels.BattlePassMissionData;
|
|
import emu.grasscutter.game.props.BattlePassMissionStatus;
|
|
import lombok.Getter;
|
|
import lombok.Setter;
|
|
|
|
@Entity
|
|
public class BattlePassMission {
|
|
@Getter
|
|
private int id;
|
|
@Setter
|
|
@Getter
|
|
private int progress;
|
|
@Setter
|
|
private BattlePassMissionStatus status;
|
|
|
|
@Transient private BattlePassMissionData data;
|
|
|
|
@Deprecated // Morphia only
|
|
public BattlePassMission() {}
|
|
|
|
public BattlePassMission(int id) {
|
|
this.id = id;
|
|
}
|
|
|
|
public BattlePassMissionData getData() {
|
|
if (this.data == null) {
|
|
this.data = GameData.getBattlePassMissionDataMap().get(getId());
|
|
}
|
|
return this.data;
|
|
}
|
|
|
|
public void addProgress(int addProgress, int maxProgress) {
|
|
this.progress = Math.min(addProgress + this.progress, maxProgress);
|
|
}
|
|
|
|
public BattlePassMissionStatus getStatus() {
|
|
if (status == null) status = BattlePassMissionStatus.MISSION_STATUS_UNFINISHED;
|
|
return status;
|
|
}
|
|
|
|
public boolean isFinshed() {
|
|
return getStatus().getValue() >= 2;
|
|
}
|
|
|
|
public emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission toProto() {
|
|
var protoBuilder =
|
|
emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.newBuilder();
|
|
|
|
protoBuilder
|
|
.setMissionId(getId())
|
|
.setCurProgress(getProgress())
|
|
.setTotalProgress(getData().getProgress())
|
|
.setRewardBattlePassPoint(getData().getAddPoint())
|
|
.setMissionStatus(getStatus().getMissionStatus())
|
|
.setMissionType(
|
|
getData().getRefreshType() == null ? 0 : getData().getRefreshType().getValue());
|
|
|
|
return protoBuilder.build();
|
|
}
|
|
}
|