navybofus

t0neg0d Inventory Window

Nov 15th, 2014
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.91 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package com.navybofus;
  6.  
  7. import com.jme3.app.SimpleApplication;
  8. import com.jme3.asset.AssetManager;
  9. import com.jme3.input.event.MouseButtonEvent;
  10. import com.jme3.math.Vector2f;
  11. import com.jme3.math.Vector4f;
  12. import com.jme3.system.AppSettings;
  13. import com.jme3.texture.Texture;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import tonegod.gui.controls.buttons.ButtonAdapter;
  17. import tonegod.gui.controls.windows.Window;
  18. import tonegod.gui.core.Element;
  19. import tonegod.gui.core.Screen;
  20. import tonegod.gui.core.layouts.LayoutHelper;
  21. import tonegod.gui.core.utils.UIDUtil;
  22.  
  23. /**
  24.  *
  25.  * @author Jessica
  26.  */
  27. public class GUI {
  28.  
  29.     public static enum InventoryType {
  30.  
  31.         DragDrop,
  32.         PointClick
  33.     }
  34.     private InventoryType inventoryType = InventoryType.DragDrop;
  35.     private Screen screen;
  36.     private AppSettings settings;
  37.     private ButtonAdapter cursor;
  38.     public int winCount = 0;
  39.     private Texture objIcons;
  40.     private int iconSize = 40;
  41.     private String iconDefault = "x=64|y=64|w=64|h=64";
  42.     private Window invWindow;
  43.     List<ButtonAdapter> slots = new ArrayList();
  44.  
  45.     public GUI(SimpleApplication app, AppSettings settings, AssetManager assetManager) {
  46.         this.screen = new Screen(app, "Styles/defEdit/style_map.gui.xml");
  47.         this.settings = settings;
  48.        
  49.         initInventory(app);
  50.     }
  51.  
  52.     private void initInventory(SimpleApplication app) {
  53.         objIcons = app.getAssetManager().loadTexture("Textures/ObjIcons.png");
  54.        
  55.         createInventoryWindow();
  56.        
  57.         cursor = new ButtonAdapter(screen, UIDUtil.getUID(), Vector2f.ZERO, new Vector2f(iconSize, iconSize), Vector4f.ZERO, null) {
  58.             @Override
  59.             public void update(float tpf) {
  60.                 setPosition(screen.getMouseXY().x + 25, screen.getMouseXY().y - 50);
  61.             }
  62.         };
  63.         cursor.setIsEnabled(false);
  64.         cursor.setInterval(1);
  65.         cursor.setTextureAtlasImage(objIcons, iconDefault);
  66.         cursor.setIsModal(true);
  67.         cursor.setIsGlobalModal(true);
  68.         cursor.setEffectZOrder(false);
  69.         cursor.setIgnoreMouse(true);
  70.         screen.addElement(cursor);
  71.         cursor.move(0, 0, 20);
  72.     }
  73.  
  74.     private void createInventoryWindow() {
  75.         invWindow = getInvWindow();
  76.         screen.addElement(invWindow);
  77.         createInventorySlots();
  78.     }
  79.  
  80.     private void createInventorySlots() {
  81.         LayoutHelper.reset();
  82.         Element lastEl = null;
  83.         int index = 0;
  84.         for (int y = 0; y < 4; y++) {
  85.             LayoutHelper.resetX();
  86.             for (int x = 0; x < 4; x++) {
  87.                 ButtonAdapter e = createInventorySlot(index, LayoutHelper.position());
  88.                 e.setScaleEW(false);
  89.                 e.setScaleNS(false);
  90.                 e.setDocking(Element.Docking.SW);
  91.                 e.setEffectZOrder(false);
  92.                 invWindow.getContentArea().addChild(e);
  93.                 slots.add(e);
  94.                 lastEl = e;
  95.                 LayoutHelper.advanceX(lastEl, true);
  96.                 index++;
  97.             }
  98.             LayoutHelper.advanceY(lastEl, true);
  99.         }
  100.     }
  101.  
  102.     private ButtonAdapter createInventorySlot(int index, Vector2f position) {
  103.         ButtonAdapter slot = new ButtonAdapter(
  104.                 screen,
  105.                 "InvSlot" + index,
  106.                 position,
  107.                 LayoutHelper.dimensions(iconSize, iconSize),
  108.                 screen.getStyle("CheckBox").getVector4f("resizeBorders"),
  109.                 screen.getStyle("CheckBox").getString("defaultImg")) {
  110.             @Override
  111.             public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) {
  112.                 if (inventoryType == InventoryType.PointClick) {
  113.                     InteractiveNode prevNode = null;
  114.                     InteractiveNode nextNode = null;
  115.                     if (getUserData("worldObject") != null) {
  116.                         prevNode = getUserData("worldObject");
  117.                         setToolTipText("");
  118.                         setUserData("worldObject", null);
  119.                         setButtonIcon(iconSize, iconSize, iconDefault);
  120.                     }
  121.                     if (cursor.getUserData("worldObject") != null) {
  122.                         nextNode = cursor.getUserData("worldObject");
  123.                         cursor.setTextureAtlasImage(objIcons, iconDefault);
  124.                         cursor.setUserData("worldObject", null);
  125.                     }
  126.                     if (nextNode != null) {
  127.                         String ttt = nextNode.getToolTipText();
  128.                         setToolTipText(ttt.substring(0, ttt.indexOf("\n")) + "\n\nDrop me back into\nthe world.");
  129.                         setUserData("worldObject", nextNode);
  130.                         setButtonIcon(iconSize, iconSize, nextNode.getIcon());
  131.                     }
  132.                     if (prevNode != null) {
  133.                         cursor.setUserData("worldObject", prevNode);
  134.                         cursor.setTextureAtlasImage(objIcons, prevNode.getIcon());
  135.                     }
  136.                 }
  137.             }
  138.         };
  139.         slot.clearAltImages();
  140.         slot.setEffectZOrder(false);
  141.         slot.setButtonIcon(iconSize, iconSize, iconDefault);
  142.         slot.getButtonIcon().setTextureAtlasImage(objIcons, iconDefault);
  143.         slot.setIsDragDropDropElement(true);
  144.         return slot;
  145.     }
  146.  
  147.     private Window getInvWindow() {
  148.         Vector2f dim = new Vector2f(300, 400);
  149.         Window nWin = new Window(screen, "Window" + winCount,
  150.                 new Vector2f(settings.getWidth() - dim.x, settings.getHeight()));
  151.         nWin.setWindowTitle("Inventory");
  152.         nWin.setIsMovable(true);
  153.         nWin.setIsResizable(false);
  154.         winCount++;
  155.         return nWin;
  156.     }
  157.  
  158.     public Screen getScreen() {
  159.         return screen;
  160.     }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment