mirror of
https://github.com/Melledy/Nebula.git
synced 2026-09-19 17:19:58 +02:00
Improve achievement params handling
This commit is contained in:
@@ -122,6 +122,7 @@ public class GameData {
|
||||
@Getter private static DataTable<StarTowerFloorExpDef> StarTowerFloorExpDataTable = new DataTable<>();
|
||||
@Getter private static DataTable<StarTowerTeamExpDef> StarTowerTeamExpDataTable = new DataTable<>();
|
||||
@Getter private static DataTable<StarTowerEventDef> StarTowerEventDataTable = new DataTable<>();
|
||||
@Getter private static DataTable<StarTowerBuildRankDef> StarTowerBuildRankDataTable = new DataTable<>();
|
||||
@Getter private static DataTable<SubNoteSkillPromoteGroupDef> SubNoteSkillPromoteGroupDataTable = new DataTable<>();
|
||||
|
||||
@Getter private static DataTable<PotentialDef> PotentialDataTable = new DataTable<>();
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package emu.nebula.data.custom;
|
||||
|
||||
import emu.nebula.data.BaseDef;
|
||||
import emu.nebula.data.GameData;
|
||||
import emu.nebula.data.ResourceType;
|
||||
import emu.nebula.data.ResourceType.LoadPriority;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = "AchievementParam.json", useInternal = true, loadPriority = LoadPriority.LOW)
|
||||
public class AchievementParamDef extends BaseDef {
|
||||
private int Id;
|
||||
|
||||
private int Param1;
|
||||
private int ParamCond1;
|
||||
private int Param2;
|
||||
private int ParamCond2;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
var achievement = GameData.getAchievementDataTable().get(this.Id);
|
||||
if (achievement == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
achievement.setParams(this);
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,9 @@ package emu.nebula.data.resources;
|
||||
|
||||
import emu.nebula.data.BaseDef;
|
||||
import emu.nebula.data.ResourceType;
|
||||
import emu.nebula.data.custom.AchievementParamDef;
|
||||
import emu.nebula.game.achievement.AchievementHelper;
|
||||
import emu.nebula.game.achievement.AchievementParamCond;
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -20,43 +22,50 @@ public class AchievementDef extends BaseDef {
|
||||
private int Qty1;
|
||||
|
||||
// Custom params
|
||||
private transient int param1; // -1 == any, 0 = no param, 1+ = param required
|
||||
private transient int param2; // -1 == any, 0 = no param, 1+ = param required
|
||||
private transient int param1;
|
||||
private transient AchievementParamCond paramCond1;
|
||||
private transient int param2;
|
||||
private transient AchievementParamCond paramCond2;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setParams(int param1, int param2) {
|
||||
this.param1 = param1;
|
||||
this.param2 = param2;
|
||||
}
|
||||
|
||||
public void setParams(AchievementParamDef params) {
|
||||
this.param1 = params.getParam1();
|
||||
this.param2 = params.getParam2();
|
||||
|
||||
this.paramCond1 = AchievementParamCond.getByValue(params.getParamCond1());
|
||||
this.paramCond2 = AchievementParamCond.getByValue(params.getParamCond2());
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this achievement requires params to match
|
||||
*/
|
||||
public boolean hasParam1(int param) {
|
||||
if (this.param1 < 0) {
|
||||
return false;
|
||||
} else if (this.param1 == 0) {
|
||||
return param != 0;
|
||||
} else {
|
||||
return true;
|
||||
public boolean matchParam1(int value) {
|
||||
if (this.paramCond1 == null) {
|
||||
this.paramCond1 = AchievementParamCond.EQUALS;
|
||||
}
|
||||
|
||||
return this.paramCond1.test(this.param1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this achievement requires params to match
|
||||
*/
|
||||
public boolean hasParam2(int param) {
|
||||
if (this.param2 < 0) {
|
||||
return false;
|
||||
} else if (this.param2 == 0) {
|
||||
return param != 0;
|
||||
} else {
|
||||
return true;
|
||||
public boolean matchParam2(int value) {
|
||||
if (this.paramCond2 == null) {
|
||||
this.paramCond2 = AchievementParamCond.EQUALS;
|
||||
}
|
||||
|
||||
return this.paramCond2.test(this.param2, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,9 +4,9 @@ import emu.nebula.data.BaseDef;
|
||||
import emu.nebula.data.GameData;
|
||||
import emu.nebula.data.ResourceType;
|
||||
import emu.nebula.data.custom.CharGemAttrGroupDef;
|
||||
import emu.nebula.util.CustomIntArray;
|
||||
import emu.nebula.util.Utils;
|
||||
import emu.nebula.util.WeightedList;
|
||||
import emu.nebula.util.ints.CustomIntArray;
|
||||
import it.unimi.dsi.fastutil.ints.IntList;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import emu.nebula.data.BaseDef;
|
||||
import emu.nebula.data.GameData;
|
||||
import emu.nebula.data.ResourceType;
|
||||
import emu.nebula.util.WeightedList;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package emu.nebula.data.resources;
|
||||
|
||||
import emu.nebula.data.BaseDef;
|
||||
import emu.nebula.data.ResourceType;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = "StarTowerBuildRank.json")
|
||||
public class StarTowerBuildRankDef extends BaseDef {
|
||||
private int Id;
|
||||
private int MinGrade;
|
||||
private int Rarity;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user