Implement infinite arena

This commit is contained in:
Melledy
2025-11-09 07:22:21 -08:00
parent 7d5fef1020
commit 3f7b0d366d
7 changed files with 259 additions and 0 deletions
@@ -80,6 +80,9 @@ public class GameData {
@Getter private static DataTable<PotentialDef> PotentialDataTable = new DataTable<>();
@Getter private static DataTable<SubNoteSkillPromoteGroupDef> SubNoteSkillPromoteGroupDataTable = new DataTable<>();
// Infinity Tower
@Getter private static DataTable<InfinityTowerLevelDef> InfinityTowerLevelDataTable = new DataTable<>();
// Vampire survivor
@Getter private static DataTable<VampireSurvivorDef> VampireSurvivorDataTable = new DataTable<>();
@Getter private static DataTable<FateCardDef> FateCardDataTable = new DataTable<>();
@@ -0,0 +1,72 @@
package emu.nebula.data.resources;
import java.util.ArrayList;
import java.util.List;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.instance.InstanceRewardParam;
import emu.nebula.game.inventory.ItemParamMap;
import emu.nebula.util.JsonUtils;
import lombok.Getter;
@Getter
@ResourceType(name = "InfinityTowerLevel.json")
public class InfinityTowerLevelDef extends BaseDef {
private int Id;
private String BaseAwardPreview;
private transient List<InstanceRewardParam> rewards;
@Override
public int getId() {
return Id;
}
public int getEnergyConsume() {
return 0;
}
public ItemParamMap generateRewards() {
var map = new ItemParamMap();
for (var param : this.getRewards()) {
map.add(param.getId(), param.getRandomCount());
}
return map;
}
@Override
public void onLoad() {
// Init reward lists
this.rewards = new ArrayList<>();
// Parse rewards
var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class);
if (awards == null) {
return;
}
for (int[] award : awards) {
int itemId = award[0];
int min = award[1];
int max = award.length >= 4 ? award[2] : min;
boolean isFirst = award[award.length - 1] == 1;
if (min == -1) {
min = 0;
max = 1;
}
var reward = new InstanceRewardParam(itemId, min, max);
if (isFirst) {
} else {
this.rewards.add(reward);
}
}
}
}