mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-22 17:24:45 +01:00
78 lines
2.1 KiB
Java
78 lines
2.1 KiB
Java
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;
|
|
|
|
@Getter
|
|
@ResourceType(name = "Achievement.json")
|
|
public class AchievementDef extends BaseDef {
|
|
private int Id;
|
|
private int Type;
|
|
private int CompleteCond;
|
|
private int AimNumShow;
|
|
private int[] Prerequisites;
|
|
|
|
// Reward
|
|
private int Tid1;
|
|
private int Qty1;
|
|
|
|
// Custom params
|
|
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 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 matchParam2(int value) {
|
|
if (this.paramCond2 == null) {
|
|
this.paramCond2 = AchievementParamCond.EQUALS;
|
|
}
|
|
|
|
return this.paramCond2.test(this.param2, value);
|
|
}
|
|
|
|
@Override
|
|
public void onLoad() {
|
|
// Add to cached achievement list
|
|
var list = AchievementHelper.getCache().computeIfAbsent(this.CompleteCond, i -> new ObjectArrayList<>());
|
|
list.add(this);
|
|
}
|
|
}
|