quest fix & personal line impl

This commit is contained in:
Akka
2022-07-05 20:41:07 +08:00
committed by Luke H-W
parent 7bae35f51b
commit 910008216f
51 changed files with 924 additions and 200 deletions

View File

@@ -3,31 +3,36 @@ package emu.grasscutter.data.excels;
import java.util.Arrays;
import java.util.List;
import com.google.gson.annotations.SerializedName;
import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import emu.grasscutter.game.quest.enums.LogicType;
import emu.grasscutter.game.quest.enums.QuestTrigger;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
@ResourceType(name = "QuestExcelConfigData.json")
@Getter
@ToString
public class QuestData extends GameResource {
private int subId;
private int mainId;
private int order;
private long descTextMapHash;
private boolean finishParent;
private boolean isRewind;
private LogicType acceptCondComb;
private QuestCondition[] acceptConditons;
private LogicType finishCondComb;
private QuestCondition[] finishConditons;
private LogicType failCondComb;
private QuestCondition[] failConditons;
private List<QuestParam> acceptCond;
private List<QuestParam> finishCond;
private List<QuestParam> failCond;
private List<QuestCondition> acceptCond;
private List<QuestCondition> finishCond;
private List<QuestCondition> failCond;
private List<QuestExecParam> beginExec;
private List<QuestExecParam> finishExec;
private List<QuestExecParam> failExec;
@@ -60,67 +65,57 @@ public class QuestData extends GameResource {
return acceptCondComb;
}
public QuestCondition[] getAcceptCond() {
return acceptConditons;
public List<QuestCondition> getAcceptCond() {
return acceptCond;
}
public LogicType getFinishCondComb() {
return finishCondComb;
}
public QuestCondition[] getFinishCond() {
return finishConditons;
public List<QuestCondition> getFinishCond() {
return finishCond;
}
public LogicType getFailCondComb() {
return failCondComb;
}
public QuestCondition[] getFailCond() {
return failConditons;
public List<QuestCondition> getFailCond() {
return failCond;
}
public void onLoad() {
this.acceptConditons = acceptCond.stream().filter(p -> p._type != null).map(QuestCondition::new).toArray(QuestCondition[]::new);
acceptCond = null;
this.finishConditons = finishCond.stream().filter(p -> p._type != null).map(QuestCondition::new).toArray(QuestCondition[]::new);
finishCond = null;
this.failConditons = failCond.stream().filter(p -> p._type != null).map(QuestCondition::new).toArray(QuestCondition[]::new);
failCond = null;
}
public class QuestParam {
QuestTrigger _type;
int[] _param;
String _count;
}
public class QuestExecParam {
QuestTrigger _type;
String[] _param;
String _count;
}
public static class QuestCondition {
private QuestTrigger type;
private int[] param;
private String count;
public QuestCondition(QuestParam param) {
this.type = param._type;
this.param = param._param;
}
public QuestTrigger getType() {
return type;
}
public int[] getParam() {
return param;
}
this.acceptCond = acceptCond.stream().filter(p -> p.type != null).toList();
this.finishCond = finishCond.stream().filter(p -> p.type != null).toList();
this.failCond = failCond.stream().filter(p -> p.type != null).toList();
this.beginExec = beginExec.stream().filter(p -> p.type != null).toList();
this.finishExec = finishExec.stream().filter(p -> p.type != null).toList();
this.failExec = failExec.stream().filter(p -> p.type != null).toList();
}
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class QuestExecParam {
@SerializedName("_type")
QuestTrigger type;
@SerializedName("_param")
String[] param;
@SerializedName("_count")
String count;
}
@Data
public static class QuestCondition {
@SerializedName("_type")
private QuestTrigger type;
@SerializedName("_param")
private int[] param;
@SerializedName("_param_str")
private String paramStr;
@SerializedName("_count")
private String count;
public String getCount() {
return count;
}
}
}