| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package view.ui;
- import model.Inventory;
- import model.items.Item;
- import util.TextUtil;
- import util.Translator;
- import javax.imageio.ImageIO;
- import java.awt.*;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- public class InventoryView {
- private Inventory inventory;
- int overlayX = 20;
- int overlayY = 20;
- int slotSize = 48;
- int slotSpacing = 8;
- int slotCount = 0;
- public InventoryView(Inventory inventory){
- this.inventory = inventory;
- }
- public void drawInventoryOverlay(Graphics2D g2) {
- slotCount = inventory.getUniqueItemsCount();
- int overlayWidth = slotSize + 2* slotSpacing;
- int overlayHeight = (slotSize + slotSpacing) * slotCount + slotSpacing;
- g2.setColor(new Color(0, 0, 0, 160));
- g2.fillRoundRect(overlayX, overlayY, overlayWidth, overlayHeight, 15, 15);
- for (int i = 0; i < slotCount; i++) {
- drawSlot(g2, i);
- }
- }
- private void drawSlot(Graphics2D g2, int slot){
- Item item = inventory.getItemList().get(slot);
- if(item.isSelected()){
- g2.setColor(Color.WHITE);
- }else{
- g2.setColor(Color.LIGHT_GRAY);
- }
- int x = overlayX + slotSpacing;
- int y = overlayY + slotSpacing + slot * (slotSize + slotSpacing);
- g2.fillRoundRect(x, y, slotSize, slotSize, 10, 10);
- g2.setColor(Color.DARK_GRAY);
- String itemName = item.getItemName().toString();
- int offset = 20;
- g2.drawImage(getImage("/items/" + "iron_item" + ".png"), x + offset/2, y + offset/2, slotSize - offset, slotSize -offset, null);
- //g2.drawString(Translator.translate("item."+itemName), x + slotSpacing/4, y + slotSize / 2 + 5);
- FontMetrics fm = g2.getFontMetrics();
- String amount = "" + item.getCount();
- int amountWidth = fm.stringWidth(amount);
- g2.drawString( amount , x + slotSize - amountWidth - 3, y + slotSize - 3);
- g2.setColor(Color.LIGHT_GRAY);
- }
- public BufferedImage getImage(String imagePath){
- try {
- return ImageIO.read(getClass().getResourceAsStream(imagePath));
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- public int getClickedInventorySlot(int mouseX, int mouseY) {
- for (int i = 0; i < slotCount; i++) {
- int x = overlayX + slotSpacing;
- int y = overlayY + slotSpacing + i * (slotSize + slotSpacing);
- int width = slotSize;
- int height = slotSize;
- if (mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height) {
- return i; // Slot i was clicked
- }
- }
- return -1; // No slot was clicked
- }
- }
|