Apply additional data from specific main quest lines

This commit is contained in:
KingRainbow44
2023-04-24 01:44:58 -04:00
parent 0d680a6310
commit 1a8d7e901a
4 changed files with 258 additions and 243 deletions

View File

@@ -1,78 +1,87 @@
package emu.grasscutter.data.binout;
import dev.morphia.annotations.Entity;
import emu.grasscutter.game.quest.enums.QuestType;
import java.util.List;
import java.util.Objects;
import lombok.Data;
public class MainQuestData {
private int id;
private int ICLLDPJFIMA;
private int series;
private QuestType type;
private long titleTextMapHash;
private int[] suggestTrackMainQuestList;
private int[] rewardIdList;
private SubQuestData[] subQuests;
private List<TalkData> talks;
private long[] preloadLuaList;
public int getId() {
return id;
}
public int getSeries() {
return series;
}
public QuestType getType() {
return type;
}
public long getTitleTextMapHash() {
return titleTextMapHash;
}
public int[] getSuggestTrackMainQuestList() {
return suggestTrackMainQuestList;
}
public int[] getRewardIdList() {
return rewardIdList;
}
public SubQuestData[] getSubQuests() {
return subQuests;
}
public List<TalkData> getTalks() {
return talks;
}
public void onLoad() {
this.talks = talks.stream().filter(Objects::nonNull).toList();
}
@Data
public static class SubQuestData {
private int subId;
private int order;
}
@Data
@Entity
public static class TalkData {
private int id;
private String heroTalk;
public TalkData() {}
public TalkData(int id, String heroTalk) {
this.id = id;
this.heroTalk = heroTalk;
}
}
}
package emu.grasscutter.data.binout;
import dev.morphia.annotations.Entity;
import emu.grasscutter.data.GameData;
import emu.grasscutter.game.quest.enums.QuestType;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import lombok.Data;
public class MainQuestData {
private int id;
private int ICLLDPJFIMA;
private int series;
private QuestType type;
private long titleTextMapHash;
private int[] suggestTrackMainQuestList;
private int[] rewardIdList;
private SubQuestData[] subQuests;
private List<TalkData> talks;
private long[] preloadLuaList;
public int getId() {
return id;
}
public int getSeries() {
return series;
}
public QuestType getType() {
return type;
}
public long getTitleTextMapHash() {
return titleTextMapHash;
}
public int[] getSuggestTrackMainQuestList() {
return suggestTrackMainQuestList;
}
public int[] getRewardIdList() {
return rewardIdList;
}
public SubQuestData[] getSubQuests() {
return subQuests;
}
public List<TalkData> getTalks() {
return talks;
}
public void onLoad() {
this.talks = talks.stream().filter(Objects::nonNull).toList();
Arrays.stream(this.subQuests).forEach(quest -> {
var questData = GameData.getQuestDataMap().get(quest.getSubId());
if (questData != null) questData.applyFrom(quest);
});
}
@Data
public static class SubQuestData {
private int subId;
private int order;
private boolean isRewind;
private boolean finishParent;
}
@Data
@Entity
public static class TalkData {
private int id;
private String heroTalk;
public TalkData() {}
public TalkData(int id, String heroTalk) {
this.id = id;
this.heroTalk = heroTalk;
}
}
}