mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-12 20:34:36 +01:00
Refactor various inventory functions
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user