2
0

InventoryView.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package view.ui;
  2. import model.Inventory;
  3. import model.items.Item;
  4. import util.TextUtil;
  5. import util.Translator;
  6. import javax.imageio.ImageIO;
  7. import java.awt.*;
  8. import java.awt.image.BufferedImage;
  9. import java.io.IOException;
  10. public class InventoryView {
  11. private Inventory inventory;
  12. int overlayX = 20;
  13. int overlayY = 20;
  14. int slotSize = 48;
  15. int slotSpacing = 8;
  16. int slotCount = 0;
  17. public InventoryView(Inventory inventory){
  18. this.inventory = inventory;
  19. }
  20. public void drawInventoryOverlay(Graphics2D g2) {
  21. slotCount = inventory.getUniqueItemsCount();
  22. int overlayWidth = slotSize + 2* slotSpacing;
  23. int overlayHeight = (slotSize + slotSpacing) * slotCount + slotSpacing;
  24. g2.setColor(new Color(0, 0, 0, 160));
  25. g2.fillRoundRect(overlayX, overlayY, overlayWidth, overlayHeight, 15, 15);
  26. for (int i = 0; i < slotCount; i++) {
  27. drawSlot(g2, i);
  28. }
  29. }
  30. private void drawSlot(Graphics2D g2, int slot){
  31. Item item = inventory.getItemList().get(slot);
  32. if(item.isSelected()){
  33. g2.setColor(Color.WHITE);
  34. }else{
  35. g2.setColor(Color.LIGHT_GRAY);
  36. }
  37. int x = overlayX + slotSpacing;
  38. int y = overlayY + slotSpacing + slot * (slotSize + slotSpacing);
  39. g2.fillRoundRect(x, y, slotSize, slotSize, 10, 10);
  40. g2.setColor(Color.DARK_GRAY);
  41. String itemName = item.getItemName().toString();
  42. int offset = 20;
  43. g2.drawImage(getImage("/items/" + "iron_item" + ".png"), x + offset/2, y + offset/2, slotSize - offset, slotSize -offset, null);
  44. //g2.drawString(Translator.translate("item."+itemName), x + slotSpacing/4, y + slotSize / 2 + 5);
  45. FontMetrics fm = g2.getFontMetrics();
  46. String amount = "" + item.getCount();
  47. int amountWidth = fm.stringWidth(amount);
  48. g2.drawString( amount , x + slotSize - amountWidth - 3, y + slotSize - 3);
  49. g2.setColor(Color.LIGHT_GRAY);
  50. }
  51. public BufferedImage getImage(String imagePath){
  52. try {
  53. return ImageIO.read(getClass().getResourceAsStream(imagePath));
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. }
  57. return null;
  58. }
  59. public int getClickedInventorySlot(int mouseX, int mouseY) {
  60. for (int i = 0; i < slotCount; i++) {
  61. int x = overlayX + slotSpacing;
  62. int y = overlayY + slotSpacing + i * (slotSize + slotSpacing);
  63. int width = slotSize;
  64. int height = slotSize;
  65. if (mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height) {
  66. return i; // Slot i was clicked
  67. }
  68. }
  69. return -1; // No slot was clicked
  70. }
  71. }