BattlePassMissionData.java 2.43 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package emu.grasscutter.data.excels;

import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;

import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import emu.grasscutter.game.props.BattlePassMissionRefreshType;
import emu.grasscutter.game.props.WatcherTriggerType;
import emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.MissionStatus;
import lombok.Getter;

@ResourceType(name = {"BattlePassMissionExcelConfigData.json"})
@Getter
public class BattlePassMissionData extends GameResource {
AnimeGitB's avatar
AnimeGitB committed
17
    @Getter(onMethod = @__(@Override))
18
    private int id;
AnimeGitB's avatar
AnimeGitB committed
19
    private int addPoint;
20
21
22
23
    private int scheduleId;
    private int progress;
    private TriggerConfig triggerConfig;
    private BattlePassMissionRefreshType refreshType;
github-actions's avatar
github-actions committed
24

25
    private transient Set<Integer> mainParams;
github-actions's avatar
github-actions committed
26

27
    public WatcherTriggerType getTriggerType() {
github-actions's avatar
github-actions committed
28
29
30
31
32
33
34
        return this.getTriggerConfig().getTriggerType();
    }

    public boolean isCycleRefresh() {
        return getRefreshType() == null || getRefreshType() == BattlePassMissionRefreshType.BATTLE_PASS_MISSION_REFRESH_CYCLE_CROSS_SCHEDULE;
    }

35
    public boolean isValidRefreshType() {
github-actions's avatar
github-actions committed
36
37
38
        return getRefreshType() == null ||
            getRefreshType() == BattlePassMissionRefreshType.BATTLE_PASS_MISSION_REFRESH_CYCLE_CROSS_SCHEDULE ||
            getScheduleId() == 2701;
39
    }
github-actions's avatar
github-actions committed
40

41
42
    @Override
    public void onLoad() {
Luke H-W's avatar
Luke H-W committed
43
44
45
46
47
        if (this.getTriggerConfig() != null) {
            var params = getTriggerConfig().getParamList()[0];
            if ((params != null) && !params.isEmpty()) {
                this.mainParams = Arrays.stream(params.split("[:;,]")).map(Integer::parseInt).collect(Collectors.toSet());
            }
github-actions's avatar
github-actions committed
48
        }
49
    }
github-actions's avatar
github-actions committed
50

51
52
    @Getter
    public static class TriggerConfig {
github-actions's avatar
github-actions committed
53
54
        private WatcherTriggerType triggerType;
        private String[] paramList;
55
    }
github-actions's avatar
github-actions committed
56

57
    public emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission toProto() {
github-actions's avatar
github-actions committed
58
59
60
61
62
63
64
65
66
67
68
        var protoBuilder = emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.newBuilder();

        protoBuilder
            .setMissionId(getId())
            .setTotalProgress(this.getProgress())
            .setRewardBattlePassPoint(this.getAddPoint())
            .setMissionStatus(MissionStatus.MISSION_STATUS_UNFINISHED)
            .setMissionType(this.getRefreshType() == null ? 0 : this.getRefreshType().getValue());

        return protoBuilder.build();
    }
69
}