#3 Shops update! Corrected drawing on slot items in the catalogue menu to be drawn by the slot menu itself and not the catalogue menu. This allows slot menu to draw items in it among other things!
Some checks are pending
build / build (21) (push) Waiting to run
Some checks are pending
build / build (21) (push) Waiting to run
This commit is contained in:
parent
56537ebb77
commit
2c32440fc4
@ -27,6 +27,13 @@ abstract public class ClickableLayer extends ClickableWidget {
|
||||
this.layerName = layerName;
|
||||
}
|
||||
|
||||
public void ResetLayer(int startX, int startY, int width, int height) {
|
||||
this.setX(startX);
|
||||
this.setY(startY);
|
||||
this.setWidth(width);
|
||||
this.setHeight(height);
|
||||
}
|
||||
|
||||
protected void ResizeLayer(int width, int height) {
|
||||
this.setWidth(width);
|
||||
this.setHeight(height);
|
||||
|
@ -2,7 +2,9 @@ package jesse.keeblarcraft.gui.ShopKeeperGUI;
|
||||
|
||||
import jesse.keeblarcraft.Keeblarcraft;
|
||||
import jesse.keeblarcraft.gui.Generics.ClickableLayer;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
@ -13,9 +15,11 @@ public class DrawableStoreItem extends ClickableLayer {
|
||||
private Integer itemCost;
|
||||
private String itemName;
|
||||
private Integer amountSelected = 0;
|
||||
ItemStack itemTextureId;
|
||||
|
||||
public DrawableStoreItem(String itemName, Integer itemCost) {
|
||||
public DrawableStoreItem(String itemName, Integer itemCost, ItemStack itemTextureId) {
|
||||
this(itemName, itemCost, Text.of(""), 85, 50);
|
||||
this.itemTextureId = itemTextureId;
|
||||
}
|
||||
|
||||
public DrawableStoreItem(String itemName, Integer itemCost, Text layerName, int width, int height) {
|
||||
@ -37,6 +41,18 @@ public class DrawableStoreItem extends ClickableLayer {
|
||||
System.out.println("Current buy amount: " + this.amountSelected);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||
super.renderButton(context, mouseX, mouseY, delta);
|
||||
|
||||
// Now we want to draw the item icon in the icon slot
|
||||
if (this.itemTextureId != null) {
|
||||
context.drawItem(this.itemTextureId, this.getX() + 13, this.getY() + 22); // TODO: Need to correct offest to draw
|
||||
} else {
|
||||
// TODO: Add default icon to draw if no texture is set or could be found for item
|
||||
}
|
||||
}
|
||||
|
||||
public void Subtract() {
|
||||
--this.amountSelected;
|
||||
System.out.println("Current buy amount: " + this.amountSelected);
|
||||
|
@ -57,7 +57,8 @@ public class MerchandiseScroller extends ClickableLayer {
|
||||
// System.out.println("DRAWX DRAWY WIDTH HEIGHT: " + drawX + " " + drawY + " " + storeItem.getWidth() + " " + storeItem.getHeight());
|
||||
// uv values can be changed for smooth scrolling in the future; but for now with jar-scrolling we will be
|
||||
// scrolling at least 1 height value of the store stuff
|
||||
context.drawTexture(storeItem.GetTexture(), drawX, drawY, 0, 0, storeItem.getWidth(), storeItem.getHeight(), storeItem.getWidth(), storeItem.getHeight());
|
||||
storeItem.ResetLayer(drawX, drawY, storeItem.getWidth(), storeItem.getHeight());
|
||||
storeItem.renderButton(context, mouseX, mouseY, delta); // The draw item will draw out its contents like item icons, menu info, etc
|
||||
|
||||
if (oscillator % 2 == 0) {
|
||||
// Even implies we are going to odd; which means this is xScalar+1
|
||||
@ -89,7 +90,7 @@ public class MerchandiseScroller extends ClickableLayer {
|
||||
|
||||
public void Add(StoreItem item) {
|
||||
storeInventory.Add(item);
|
||||
drawableInventory.put(item.GetUPC(), new DrawableStoreItem(item.GetName(), item.GetCost()));
|
||||
drawableInventory.put(item.GetUPC(), new DrawableStoreItem(item.GetName(), item.GetCost(), item.GetItem()));
|
||||
ResizeDrawlist();
|
||||
}
|
||||
|
||||
|
@ -60,13 +60,24 @@ public class ShopKeeperMenu extends HandledScreen<ShopKeeperHandler> {
|
||||
|
||||
|
||||
// This is for temporary testing
|
||||
StoreItem newMerch = new StoreItem("Dirt block", "minecraft:dirt_block", 10000000);
|
||||
StoreItem newMerch2 = new StoreItem("Dirt block2", "minecraft:dirt_block2", 10000000);
|
||||
StoreItem newMerch3 = new StoreItem("Dirt block3", "minecraft:dirt_block3", 10000000);
|
||||
StoreItem newMerch4 = new StoreItem("Dirt block4", "minecraft:dirt_block4", 10000000);
|
||||
StoreItem newMerch5 = new StoreItem("Dirt block5", "minecraft:dirt_block5", 10000000);
|
||||
StoreItem newMerch6 = new StoreItem("Dirt block6", "minecraft:dirt_block6", 10000000);
|
||||
StoreItem newMerch7 = new StoreItem("Dirt block7", "minecraft:dirt_block7", 10000000);
|
||||
StoreItem newMerch = new StoreItem("Dirt block", "minecraft:dirt_block", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch2 = new StoreItem("Dirt block2", "minecraft:dirt_block2", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch3 = new StoreItem("Dirt block3", "minecraft:dirt_block3", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch4 = new StoreItem("Dirt block4", "minecraft:dirt_block4", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch5 = new StoreItem("Dirt block5", "minecraft:dirt_block5", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch6 = new StoreItem("Dirt block6", "minecraft:dirt_block6", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch7 = new StoreItem("Dirt block7", "minecraft:dirt_block7", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch8 = new StoreItem("Dirt block8", "minecraft:dirt_block8", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch9 = new StoreItem("Dirt block9", "minecraft:dirt_block9", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch10 = new StoreItem("Dirt block10", "minecraft:dirt_block10", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch11 = new StoreItem("Dirt block11", "minecraft:dirt_block11", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch12 = new StoreItem("Dirt block711", "minecraft:dirt_block12", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch13 = new StoreItem("Dirt block711", "minecraft:dirt_block13", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch14 = new StoreItem("Dirt block711", "minecraft:dirt_block14", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch15 = new StoreItem("Dirt block71", "minecraft:dirt_block15", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch16 = new StoreItem("Dirt block711111", "minecraft:dirt_block16", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch17 = new StoreItem("Dirt block711", "minecraft:dirt_block17", 10000000, Items.DIRT.getDefaultStack());
|
||||
StoreItem newMerch18 = new StoreItem("Dirt block711", "minecraft:dirt_block18", 10000000, Items.DIRT.getDefaultStack());
|
||||
|
||||
|
||||
catalogue.Add(newMerch);
|
||||
@ -76,6 +87,17 @@ public class ShopKeeperMenu extends HandledScreen<ShopKeeperHandler> {
|
||||
catalogue.Add(newMerch5);
|
||||
catalogue.Add(newMerch6);
|
||||
catalogue.Add(newMerch7);
|
||||
catalogue.Add(newMerch8);
|
||||
catalogue.Add(newMerch9);
|
||||
catalogue.Add(newMerch10);
|
||||
catalogue.Add(newMerch11);
|
||||
catalogue.Add(newMerch12);
|
||||
catalogue.Add(newMerch13);
|
||||
catalogue.Add(newMerch14);
|
||||
catalogue.Add(newMerch15);
|
||||
catalogue.Add(newMerch16);
|
||||
catalogue.Add(newMerch17);
|
||||
catalogue.Add(newMerch18);
|
||||
|
||||
|
||||
|
||||
@ -99,9 +121,6 @@ public class ShopKeeperMenu extends HandledScreen<ShopKeeperHandler> {
|
||||
|
||||
this.getScreenHandler().showSlot("add_item_menu", "add_item_slot");
|
||||
|
||||
// TODO: Temporary to just prove a point that we can draw item icons in the menu
|
||||
ItemStack tempStack = Items.ACACIA_DOOR.getDefaultStack();
|
||||
|
||||
catalogue.UpdateScrollAmount(scrollbar.GetScrollDistance());
|
||||
catalogue.renderButton(context, mouseX, mouseY, delta);
|
||||
|
||||
@ -117,8 +136,6 @@ public class ShopKeeperMenu extends HandledScreen<ShopKeeperHandler> {
|
||||
ToggleSlots(subLayer.GetLayerName().getString(), subLayer.GetDrawableSlots());
|
||||
}
|
||||
|
||||
// TODO: HACK to see if this works
|
||||
context.drawItem(tempStack, this.x, this.y); // TODO: REMOVE
|
||||
// We only notify the parent to update sub layers. It must manage its own sub layers
|
||||
layer.UpdateSubLayers();
|
||||
}
|
||||
|
@ -15,6 +15,8 @@ import net.minecraft.world.World;
|
||||
import java.util.OptionalInt;
|
||||
|
||||
public class ShopKeeper extends VillagerEntity {
|
||||
private final int MAX_STORE_ITEMS = 64; // TODO: May be in wrong area. Number will be QA tested from scrolling amount
|
||||
|
||||
public ShopKeeper(EntityType<? extends VillagerEntity> entityType, World world) {
|
||||
super(entityType, world);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package jesse.keeblarcraft.GuiMgr.ShopKeeper;
|
||||
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.village.MerchantInventory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -12,7 +13,8 @@ public class ShopKeeperInventory {
|
||||
public ShopKeeperInventory(MerchantInventory merchantInventory) {
|
||||
items = new ArrayList<StoreItem>();
|
||||
// This is temporary to see if this stuff works client->server->client etc
|
||||
items.add(new StoreItem("Among Us Statue", "$$$$$$$$$$", 10000));
|
||||
// Also default item for now is a dirt block because why not!
|
||||
items.add(new StoreItem("Among Us Statue", "$$$$$$$$$$", 10000, Items.DIRT.getDefaultStack()));
|
||||
this.merchantInventory = merchantInventory;
|
||||
}
|
||||
|
||||
|
@ -1,19 +1,27 @@
|
||||
package jesse.keeblarcraft.GuiMgr.ShopKeeper;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
// All the custom content that a store item will have. Handled by @see MerchandiseScroller.java
|
||||
public class StoreItem {
|
||||
private Integer itemCost;
|
||||
private String itemName;
|
||||
private String upc;
|
||||
private ItemStack storeItem;
|
||||
|
||||
public StoreItem(String itemName, String upc, Integer cost) {
|
||||
public StoreItem(String itemName, String upc, Integer cost, ItemStack storeItem) {
|
||||
this.itemName = itemName;
|
||||
this.upc = upc;
|
||||
this.itemCost = cost;
|
||||
this.storeItem = storeItem;
|
||||
}
|
||||
|
||||
public String GetName() {
|
||||
return itemName;
|
||||
return this.itemName;
|
||||
}
|
||||
|
||||
public ItemStack GetItem() {
|
||||
return this.storeItem;
|
||||
}
|
||||
|
||||
public String GetUPC() {
|
||||
|
Loading…
Reference in New Issue
Block a user