package regalowl.hyperconomy; import java.util.Map; import org.bukkit.Material; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; public class CompositeShopItem extends BasicShopObject implements PlayerShopItem { CompositeShopItem(PlayerShop playerShop, CompositeItem ci, double stock, double price, HyperObjectStatus status) { super(playerShop, ci, stock, price, status); } public void setHyperObject(HyperItem ho) { this.ho = ho; sw.addToQueue("UPDATE hyperconomy_shop_objects SET HYPEROBJECT='"+ho.getName()+"' WHERE SHOP='"+playerShop.getName()+"' AND HYPEROBJECT='"+ho.getName()+"'"); } @Override public double getStock() { double stock = 999999999.99; for (Map.Entry<HyperItem,Double> entry : ((CompositeItem)ho).getComponents().entrySet()) { PlayerShopItem pso = (PlayerShopItem) playerShop.getPlayerShopObject(entry.getKey()); Double qty = entry.getValue(); double cs = (pso.getStock() / qty); if (cs < stock) { stock = cs; } } return stock; } @Override public double getPrice() { double price = 0; for (Map.Entry<HyperItem,Double> entry : ((CompositeItem)ho).getComponents().entrySet()) { PlayerShopItem pso = (PlayerShopItem) playerShop.getPlayerShopObject(entry.getKey()); Double qty = entry.getValue(); price += (pso.getPrice() * qty); } return price; } @Override public void setStock(double stock) { double difference = stock - getStock(); for (Map.Entry<HyperItem,Double> entry : ((CompositeItem)ho).getComponents().entrySet()) { PlayerShopItem pso = (PlayerShopItem) playerShop.getPlayerShopObject(entry.getKey()); Double qty = entry.getValue(); double newStock = pso.getStock() + (difference * qty); pso.setStock(newStock); } } public String getMaterial() { return ((CompositeItem)ho).getMaterial(); } public int getData() { return ((CompositeItem)ho).getData(); } public int getDurability() { return ((CompositeItem)ho).getDurability(); } public void setMaterial(String material) { //do nothing } public void setMaterial(Material material) { //do nothing } public void setData(int data) { //do nothing } public void setDurability(int durability) { //do nothing } public double getCost(int amount) { if (getPrice() != 0.0) { return getPrice() * amount; } else { return ((CompositeItem)ho).getCost(amount); } } public double getValue(int amount) { if (getPrice() != 0.0) { return getPrice() * amount; } else { return ((CompositeItem)ho).getValue(amount); } } public double getValue(int amount, HyperPlayer hp) { if (getPrice() != 0.0) { return getPrice() * amount; } else { return ((CompositeItem)ho).getValue(amount, hp); } } @Override public double getPurchaseTax(double cost) { return 0; } @Override public double getSalesTaxEstimate(double value) { return 0; } public boolean isDurable() { return ((CompositeItem)ho).isDurable(); } public int count(Inventory inventory) { return ((CompositeItem)ho).count(inventory); } public int getAvailableSpace(Inventory inventory) { return ((CompositeItem)ho).getAvailableSpace(inventory); } public void add(int amount, Inventory inventory) { ((CompositeItem)ho).add(amount, inventory); } public double remove(int amount, Inventory inventory) { return ((CompositeItem)ho).remove(amount, inventory); } public Material getMaterialEnum() { return ((HyperItem)ho).getMaterialEnum(); } public ItemStack getItemStack() { return ((HyperItem)ho).getItemStack(); } public ItemStack getItemStack(int amount) { return ((HyperItem)ho).getItemStack(amount); } }