Refactor various inventory functions

This commit is contained in:
Melledy
2025-11-12 03:33:00 -08:00
parent 2c74441583
commit 281d61d0ab
14 changed files with 61 additions and 87 deletions

View File

@@ -1,11 +1,9 @@
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.InstanceData;
import emu.nebula.game.inventory.ItemRewardList;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.util.JsonUtils;
@@ -21,8 +19,8 @@ public class CharGemInstanceDef extends BaseDef implements InstanceData {
private int EnergyConsume;
private String BaseAwardPreview;
private transient List<ItemRewardParam> firstRewards;
private transient List<ItemRewardParam> rewards;
private transient ItemRewardList firstRewards;
private transient ItemRewardList rewards;
@Override
public int getId() {
@@ -32,8 +30,8 @@ public class CharGemInstanceDef extends BaseDef implements InstanceData {
@Override
public void onLoad() {
// Init reward lists
this.firstRewards = new ArrayList<>();
this.rewards = new ArrayList<>();
this.firstRewards = new ItemRewardList();
this.rewards = new ItemRewardList();
// Parse rewards
var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class);

View File

@@ -1,12 +1,10 @@
package emu.nebula.data.resources;
import java.util.List;
import emu.nebula.data.BaseDef;
import emu.nebula.data.GameData;
import emu.nebula.data.ResourceType;
import emu.nebula.game.instance.InstanceData;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.game.inventory.ItemRewardList;
import lombok.Getter;
@Getter
@@ -36,18 +34,18 @@ public class DailyInstanceDef extends BaseDef implements InstanceData {
@Override
@Deprecated
public List<ItemRewardParam> getFirstRewards() {
public ItemRewardList getFirstRewards() {
return null;
}
@Override
@Deprecated
public List<ItemRewardParam> getRewards() {
public ItemRewardList getRewards() {
return null;
}
@Override
public List<ItemRewardParam> getFirstRewards(int rewardType) {
public ItemRewardList getFirstRewards(int rewardType) {
var data = this.getRewardGroup(rewardType);
if (data != null) {
@@ -58,7 +56,7 @@ public class DailyInstanceDef extends BaseDef implements InstanceData {
}
@Override
public List<ItemRewardParam> getRewards(int rewardType) {
public ItemRewardList getRewards(int rewardType) {
var data = this.getRewardGroup(rewardType);
if (data != null) {

View File

@@ -1,12 +1,11 @@
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.inventory.ItemRewardList;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.util.JsonUtils;
import lombok.Getter;
@Getter
@@ -16,8 +15,8 @@ public class DailyInstanceRewardGroupDef extends BaseDef {
private int DailyRewardType;
private String BaseAwardPreview;
private transient List<ItemRewardParam> firstRewards;
private transient List<ItemRewardParam> rewards;
private transient ItemRewardList firstRewards;
private transient ItemRewardList rewards;
@Override
public int getId() {
@@ -27,8 +26,8 @@ public class DailyInstanceRewardGroupDef extends BaseDef {
@Override
public void onLoad() {
// Init reward lists
this.firstRewards = new ArrayList<>();
this.rewards = new ArrayList<>();
this.firstRewards = new ItemRewardList();
this.rewards = new ItemRewardList();
// Parse rewards
var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class);

View File

@@ -1,11 +1,9 @@
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.InstanceData;
import emu.nebula.game.inventory.ItemRewardList;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.util.JsonUtils;
@@ -21,8 +19,8 @@ public class RegionBossLevelDef extends BaseDef implements InstanceData {
private int EnergyConsume;
private String BaseAwardPreview;
private transient List<ItemRewardParam> firstRewards;
private transient List<ItemRewardParam> rewards;
private transient ItemRewardList firstRewards;
private transient ItemRewardList rewards;
@Override
public int getId() {
@@ -32,8 +30,8 @@ public class RegionBossLevelDef extends BaseDef implements InstanceData {
@Override
public void onLoad() {
// Init reward lists
this.firstRewards = new ArrayList<>();
this.rewards = new ArrayList<>();
this.firstRewards = new ItemRewardList();
this.rewards = new ItemRewardList();
// Parse rewards
var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class);

View File

@@ -1,11 +1,9 @@
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.InstanceData;
import emu.nebula.game.inventory.ItemRewardList;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.util.JsonUtils;
import lombok.Getter;
@@ -20,8 +18,8 @@ public class SkillInstanceDef extends BaseDef implements InstanceData {
private int EnergyConsume;
private String BaseAwardPreview;
private transient List<ItemRewardParam> firstRewards;
private transient List<ItemRewardParam> rewards;
private transient ItemRewardList firstRewards;
private transient ItemRewardList rewards;
@Override
public int getId() {
@@ -31,8 +29,8 @@ public class SkillInstanceDef extends BaseDef implements InstanceData {
@Override
public void onLoad() {
// Init reward lists
this.firstRewards = new ArrayList<>();
this.rewards = new ArrayList<>();
this.firstRewards = new ItemRewardList();
this.rewards = new ItemRewardList();
// Parse rewards
var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class);

View File

@@ -1,11 +1,9 @@
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.InstanceData;
import emu.nebula.game.inventory.ItemRewardList;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.util.JsonUtils;
@@ -19,8 +17,8 @@ public class WeekBossLevelDef extends BaseDef implements InstanceData {
private int NeedWorldClass;
private String BaseAwardPreview;
private transient List<ItemRewardParam> firstRewards;
private transient List<ItemRewardParam> rewards;
private transient ItemRewardList firstRewards;
private transient ItemRewardList rewards;
@Override
public int getId() {
@@ -34,8 +32,8 @@ public class WeekBossLevelDef extends BaseDef implements InstanceData {
@Override
public void onLoad() {
// Init reward lists
this.firstRewards = new ArrayList<>();
this.rewards = new ArrayList<>();
this.firstRewards = new ItemRewardList();
this.rewards = new ItemRewardList();
// Parse rewards
var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class);

View File

@@ -140,7 +140,7 @@ public class AgentManager extends PlayerManager implements GameDatabaseObject {
}
// Create rewards
var rewards = duration.getRewards().generateRewards();
var rewards = duration.getRewards().generate();
result.setRewards(rewards);
// Add to inventory

View File

@@ -181,7 +181,7 @@ public class Character implements GameDatabaseObject {
params.add(GameConstants.GOLD_ITEM_ID, (int) Math.ceil(exp * 0.15D));
// Verify that the player has the items
if (!this.getPlayer().getInventory().verifyItems(params)) {
if (!this.getPlayer().getInventory().hasItems(params)) {
return null;
}
@@ -207,7 +207,7 @@ public class Character implements GameDatabaseObject {
}
// Verify that the player has the items
if (!this.getPlayer().getInventory().verifyItems(data.getMaterials())) {
if (!this.getPlayer().getInventory().hasItems(data.getMaterials())) {
return null;
}
@@ -257,7 +257,7 @@ public class Character implements GameDatabaseObject {
}
// Verify that the player has the items
if (!this.getPlayer().getInventory().verifyItems(data.getMaterials())) {
if (!this.getPlayer().getInventory().hasItems(data.getMaterials())) {
return null;
}

View File

@@ -161,7 +161,7 @@ public class GameDisc implements GameDatabaseObject {
params.add(GameConstants.GOLD_ITEM_ID, (int) Math.ceil(exp * 0.25D));
// Verify that the player has the items
if (!this.getPlayer().getInventory().verifyItems(params)) {
if (!this.getPlayer().getInventory().hasItems(params)) {
return null;
}
@@ -190,7 +190,7 @@ public class GameDisc implements GameDatabaseObject {
}
// Verify that the player has the items
if (!this.getPlayer().getInventory().verifyItems(data.getMaterials())) {
if (!this.getPlayer().getInventory().hasItems(data.getMaterials())) {
return null;
}
@@ -218,7 +218,7 @@ public class GameDisc implements GameDatabaseObject {
materials.add(this.getData().getTransformItemId(), count);
// Verify that the player has the items
if (!this.getPlayer().getInventory().verifyItems(materials)) {
if (!this.getPlayer().getInventory().hasItems(materials)) {
return null;
}

View File

@@ -1,9 +1,6 @@
package emu.nebula.game.instance;
import java.util.List;
import emu.nebula.game.inventory.ItemParamMap;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.game.inventory.ItemRewardList;
import emu.nebula.game.player.Player;
public interface InstanceData {
@@ -14,38 +11,20 @@ public interface InstanceData {
public int getEnergyConsume();
// Handle reward generation
// Item rewards
public List<ItemRewardParam> getFirstRewards();
public ItemRewardList getFirstRewards();
public default List<ItemRewardParam> getFirstRewards(int rewardType) {
public default ItemRewardList getFirstRewards(int rewardType) {
return getFirstRewards();
}
public default ItemParamMap generateFirstRewards(int rewardType) {
return this.generateRewards(this.getFirstRewards());
}
public ItemRewardList getRewards();
public List<ItemRewardParam> getRewards();
public default List<ItemRewardParam> getRewards(int rewardType) {
public default ItemRewardList getRewards(int rewardType) {
return getRewards();
}
public default ItemParamMap generateRewards(int rewardType) {
return this.generateRewards(this.getRewards());
}
public default ItemParamMap generateRewards(List<ItemRewardParam> params) {
var map = new ItemParamMap();
for (var param : params) {
map.add(param.getId(), param.getRandomCount());
}
return map;
}
/**
* Checks if the player has enough energy to complete this instance
* @return true if the player has enough energy

View File

@@ -115,7 +115,7 @@ public class InstanceManager extends PlayerManager {
for (int i = 0; i < count; i++) {
// Generate rewards for each settle count
var rewards = data.generateRewards(rewardType);
var rewards = data.getRewards(rewardType).generate();
// Add to reward list
list.add(rewards);

View File

@@ -19,9 +19,9 @@ public class InstanceSettleData {
public void generateRewards(InstanceData data, int rewardType) {
if (this.isFirst) {
this.firstRewards = data.generateFirstRewards(rewardType);
this.firstRewards = data.getFirstRewards(rewardType).generate();
}
this.rewards = data.generateRewards(rewardType);
this.rewards = data.getRewards(rewardType).generate();
}
}

View File

@@ -483,7 +483,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
/**
* Checks if the player has enough quanity of this item
*/
public synchronized boolean verifyItem(int id, int count) {
public synchronized boolean hasItem(int id, int count) {
// Sanity check
if (count == 0) {
return true;
@@ -511,6 +511,12 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
case Char -> {
yield getPlayer().getCharacters().hasCharacter(id);
}
case CharacterSkin -> {
yield this.hasSkin(id);
}
case Title -> {
yield this.getTitles().contains(id);
}
default -> {
// Not implemented
yield false;
@@ -521,11 +527,11 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
return result;
}
public synchronized boolean verifyItems(ItemParamMap params) {
public synchronized boolean hasItems(ItemParamMap params) {
boolean hasItems = true;
for (var param : params.entries()) {
hasItems = this.verifyItem(param.getIntKey(), param.getIntValue());
hasItems = this.hasItem(param.getIntKey(), param.getIntValue());
if (!hasItems) {
return hasItems;
@@ -553,7 +559,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
var materials = data.getMaterials().mulitply(num);
// Verify that we have the materials
if (!this.verifyItems(materials)) {
if (!this.hasItems(materials)) {
return change;
}
@@ -572,7 +578,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
var change = new PlayerChangeInfo();
// Make sure we have the gems
if (!this.verifyItem(GameConstants.ENERGY_BUY_ITEM_ID, 30)) {
if (!this.hasItem(GameConstants.ENERGY_BUY_ITEM_ID, 30)) {
return change;
}
@@ -604,7 +610,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
// Make sure we have the currency
int cost = buyCount * currencyCount;
if (!this.verifyItem(currencyId, cost)) {
if (!this.hasItem(currencyId, cost)) {
return change;
}
@@ -631,7 +637,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject {
}
// Make sure we have this item
if (!this.verifyItem(id, count)) {
if (!this.hasItem(id, count)) {
return change;
}

View File

@@ -9,7 +9,7 @@ public class ItemRewardList extends ArrayList<ItemRewardParam> {
super();
}
public ItemParamMap generateRewards() {
public ItemParamMap generate() {
var map = new ItemParamMap();
for (var param : this) {