mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-13 04:45:02 +01:00
69 lines
1.7 KiB
Java
69 lines
1.7 KiB
Java
package emu.nebula.data.resources;
|
|
|
|
import emu.nebula.data.BaseDef;
|
|
import emu.nebula.data.ResourceType;
|
|
import emu.nebula.game.achievement.AchievementHelper;
|
|
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; // -1 == any, 0 = no param, 1+ = param required
|
|
private transient int param2; // -1 == any, 0 = no param, 1+ = param required
|
|
|
|
@Override
|
|
public int getId() {
|
|
return Id;
|
|
}
|
|
|
|
public void setParams(int param1, int param2) {
|
|
this.param1 = param1;
|
|
this.param2 = param2;
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onLoad() {
|
|
// Add to cached achievement list
|
|
var list = AchievementHelper.getCache().computeIfAbsent(this.CompleteCond, i -> new ObjectArrayList<>());
|
|
list.add(this);
|
|
}
|
|
}
|