Some menu audio
This commit is contained in:
parent
4499a9e534
commit
9fc52918a3
BIN
assets/Audio/closeMenu.ogg
Normal file
BIN
assets/Audio/closeMenu.ogg
Normal file
Binary file not shown.
BIN
assets/Audio/inventoryGrabItem.ogg
Normal file
BIN
assets/Audio/inventoryGrabItem.ogg
Normal file
Binary file not shown.
BIN
assets/Audio/inventorySlotItem.ogg
Normal file
BIN
assets/Audio/inventorySlotItem.ogg
Normal file
Binary file not shown.
BIN
assets/Audio/openMenu.ogg
Normal file
BIN
assets/Audio/openMenu.ogg
Normal file
Binary file not shown.
@ -2,6 +2,8 @@ package electrosphere.audio;
|
|||||||
|
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.main.Globals;
|
import electrosphere.main.Globals;
|
||||||
|
import electrosphere.util.FileUtils;
|
||||||
|
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,5 +27,20 @@ public class AudioUtils {
|
|||||||
}
|
}
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static AudioSource playAudio(String audioFile){
|
||||||
|
AudioSource rVal = null;
|
||||||
|
AudioBuffer buffer = Globals.assetManager.fetchAudio(FileUtils.sanitizeFilePath(audioFile));
|
||||||
|
if(buffer != null){
|
||||||
|
rVal = new AudioSource(false,false);
|
||||||
|
rVal.setBuffer(buffer.getBufferId());
|
||||||
|
rVal.setGain(Globals.audioEngine.getGain());
|
||||||
|
rVal.setPosition(new Vector3f());
|
||||||
|
rVal.play();
|
||||||
|
} else {
|
||||||
|
LoggerInterface.loggerEngine.WARNING("Failed to start audio in playAudioAtLocation");
|
||||||
|
}
|
||||||
|
return rVal;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package electrosphere.controls;
|
package electrosphere.controls;
|
||||||
|
|
||||||
|
import electrosphere.audio.AudioUtils;
|
||||||
import electrosphere.controls.Control.ControlMethod;
|
import electrosphere.controls.Control.ControlMethod;
|
||||||
import electrosphere.controls.Control.ControlType;
|
import electrosphere.controls.Control.ControlType;
|
||||||
import electrosphere.entity.Entity;
|
import electrosphere.entity.Entity;
|
||||||
@ -22,6 +23,7 @@ import electrosphere.main.Main;
|
|||||||
import electrosphere.menu.WindowStrings;
|
import electrosphere.menu.WindowStrings;
|
||||||
import electrosphere.menu.WindowUtils;
|
import electrosphere.menu.WindowUtils;
|
||||||
import electrosphere.menu.MenuGenerators;
|
import electrosphere.menu.MenuGenerators;
|
||||||
|
import electrosphere.menu.MenuGeneratorsInventory;
|
||||||
import electrosphere.renderer.ui.Window;
|
import electrosphere.renderer.ui.Window;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.KeyboardEvent;
|
import electrosphere.renderer.ui.events.KeyboardEvent;
|
||||||
@ -735,10 +737,8 @@ public class ControlHandler {
|
|||||||
Globals.elementManager.focusFirstElement();
|
Globals.elementManager.focusFirstElement();
|
||||||
Globals.controlHandler.setHandlerState(ControlsState.IN_GAME_MAIN_MENU);
|
Globals.controlHandler.setHandlerState(ControlsState.IN_GAME_MAIN_MENU);
|
||||||
Globals.controlHandler.showMouse();
|
Globals.controlHandler.showMouse();
|
||||||
// Element mainMenu = MenuGenerators.createInGameMainMenu();
|
//play sound effect
|
||||||
// Globals.elementManager.registerWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN, mainMenu);
|
AudioUtils.playAudio("/Audio/openMenu.ogg");
|
||||||
// MenuGenerators.makeMenuDrawable(mainMenu);
|
|
||||||
// Globals.controlHandler.setHandlerState(ControlsState.IN_GAME_MAIN_MENU);
|
|
||||||
}});
|
}});
|
||||||
controls.get(DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU).setRepeatTimeout(0.5f * Main.targetFrameRate);
|
controls.get(DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU).setRepeatTimeout(0.5f * Main.targetFrameRate);
|
||||||
|
|
||||||
@ -751,7 +751,7 @@ public class ControlHandler {
|
|||||||
if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementManager.getWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())) == null){
|
if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementManager.getWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())) == null){
|
||||||
//create window
|
//create window
|
||||||
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(Globals.playerEntity);
|
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(Globals.playerEntity);
|
||||||
Window mainMenuWindow = MenuGenerators.createNaturalInventoryMenu(inventory);
|
Window mainMenuWindow = MenuGeneratorsInventory.createNaturalInventoryMenu(inventory);
|
||||||
//register
|
//register
|
||||||
Globals.elementManager.registerWindow(WindowUtils.getInventoryWindowID(inventory.getId()), mainMenuWindow);
|
Globals.elementManager.registerWindow(WindowUtils.getInventoryWindowID(inventory.getId()), mainMenuWindow);
|
||||||
//make visible
|
//make visible
|
||||||
@ -759,6 +759,8 @@ public class ControlHandler {
|
|||||||
//controls
|
//controls
|
||||||
Globals.controlHandler.setHandlerState(ControlsState.INVENTORY);
|
Globals.controlHandler.setHandlerState(ControlsState.INVENTORY);
|
||||||
Globals.controlHandler.showMouse();
|
Globals.controlHandler.showMouse();
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("/Audio/openMenu.ogg");
|
||||||
//
|
//
|
||||||
Globals.openInventoriesCount++;
|
Globals.openInventoriesCount++;
|
||||||
}
|
}
|
||||||
@ -773,7 +775,7 @@ public class ControlHandler {
|
|||||||
controls.get(INPUT_CODE_CHARACTER_OPEN).setOnClick(new ControlMethod(){public void execute(){
|
controls.get(INPUT_CODE_CHARACTER_OPEN).setOnClick(new ControlMethod(){public void execute(){
|
||||||
if(InventoryUtils.hasEquipInventory(Globals.playerEntity) && Globals.elementManager.getWindow(WindowStrings.WINDOW_CHARACTER) == null){
|
if(InventoryUtils.hasEquipInventory(Globals.playerEntity) && Globals.elementManager.getWindow(WindowStrings.WINDOW_CHARACTER) == null){
|
||||||
//create window
|
//create window
|
||||||
Window mainMenuWindow = MenuGenerators.createCharacterInventoryMenu(InventoryUtils.getEquipInventory(Globals.playerEntity));
|
Window mainMenuWindow = MenuGeneratorsInventory.createCharacterInventoryMenu(InventoryUtils.getEquipInventory(Globals.playerEntity));
|
||||||
//register
|
//register
|
||||||
Globals.elementManager.registerWindow(WindowStrings.WINDOW_CHARACTER, mainMenuWindow);
|
Globals.elementManager.registerWindow(WindowStrings.WINDOW_CHARACTER, mainMenuWindow);
|
||||||
//make visible
|
//make visible
|
||||||
@ -781,6 +783,8 @@ public class ControlHandler {
|
|||||||
//controls
|
//controls
|
||||||
Globals.controlHandler.setHandlerState(ControlsState.INVENTORY);
|
Globals.controlHandler.setHandlerState(ControlsState.INVENTORY);
|
||||||
Globals.controlHandler.showMouse();
|
Globals.controlHandler.showMouse();
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("/Audio/openMenu.ogg");
|
||||||
//
|
//
|
||||||
Globals.openInventoriesCount++;
|
Globals.openInventoriesCount++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -373,6 +373,10 @@ public class Globals {
|
|||||||
Globals.assetManager.addAudioPathToQueue("/Audio/MenuBadOption.ogg");
|
Globals.assetManager.addAudioPathToQueue("/Audio/MenuBadOption.ogg");
|
||||||
Globals.assetManager.addAudioPathToQueue("/Audio/MenuChangeOption.ogg");
|
Globals.assetManager.addAudioPathToQueue("/Audio/MenuChangeOption.ogg");
|
||||||
Globals.assetManager.addAudioPathToQueue("/Audio/MenuType.ogg");
|
Globals.assetManager.addAudioPathToQueue("/Audio/MenuType.ogg");
|
||||||
|
Globals.assetManager.addAudioPathToQueue("/Audio/inventoryGrabItem.ogg");
|
||||||
|
Globals.assetManager.addAudioPathToQueue("/Audio/inventorySlotItem.ogg");
|
||||||
|
Globals.assetManager.addAudioPathToQueue("/Audio/openMenu.ogg");
|
||||||
|
Globals.assetManager.addAudioPathToQueue("/Audio/closeMenu.ogg");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void initDefaultGraphicalResources(){
|
public static void initDefaultGraphicalResources(){
|
||||||
|
|||||||
@ -197,7 +197,7 @@ public class Main {
|
|||||||
if(Globals.RUN_CLIENT){
|
if(Globals.RUN_CLIENT){
|
||||||
Globals.audioEngine = new AudioEngine();
|
Globals.audioEngine = new AudioEngine();
|
||||||
Globals.audioEngine.init();
|
Globals.audioEngine.init();
|
||||||
Globals.audioEngine.setGain(0.1f);
|
// Globals.audioEngine.setGain(0.1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
//init default resources
|
//init default resources
|
||||||
|
|||||||
@ -491,7 +491,7 @@ public class MenuGenerators {
|
|||||||
//clear ui
|
//clear ui
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
String sourceWindowId = WindowUtils.getInventoryWindowID(inventory.getId());
|
String sourceWindowId = WindowUtils.getInventoryWindowID(inventory.getId());
|
||||||
WindowUtils.replaceWindow(sourceWindowId,MenuGenerators.createNaturalInventoryMenu(inventory));
|
WindowUtils.replaceWindow(sourceWindowId,MenuGeneratorsInventory.createNaturalInventoryMenu(inventory));
|
||||||
//null globals
|
//null globals
|
||||||
Globals.dragSourceInventory = null;
|
Globals.dragSourceInventory = null;
|
||||||
Globals.draggedItem = null;
|
Globals.draggedItem = null;
|
||||||
@ -503,7 +503,7 @@ public class MenuGenerators {
|
|||||||
//clear ui
|
//clear ui
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
String sourceWindowId = WindowStrings.WINDOW_CHARACTER;
|
String sourceWindowId = WindowStrings.WINDOW_CHARACTER;
|
||||||
WindowUtils.replaceWindow(sourceWindowId,MenuGenerators.createCharacterInventoryMenu(inventory));
|
WindowUtils.replaceWindow(sourceWindowId,MenuGeneratorsInventory.createCharacterInventoryMenu(inventory));
|
||||||
//null globals
|
//null globals
|
||||||
Globals.dragSourceInventory = null;
|
Globals.dragSourceInventory = null;
|
||||||
Globals.draggedItem = null;
|
Globals.draggedItem = null;
|
||||||
@ -845,333 +845,6 @@ public class MenuGenerators {
|
|||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Window createNaturalInventoryMenu(UnrelationalInventoryState inventory){
|
|
||||||
int width = 500;
|
|
||||||
int height = 500;
|
|
||||||
|
|
||||||
Window rVal = new Window(0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT);
|
|
||||||
|
|
||||||
Div div = new Div();
|
|
||||||
rVal.addChild(div);
|
|
||||||
|
|
||||||
rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){
|
|
||||||
WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowUtils.getInventoryWindowID(inventory.getId())), false);
|
|
||||||
Globals.elementManager.unregisterWindow(WindowUtils.getInventoryWindowID(inventory.getId()));
|
|
||||||
//
|
|
||||||
Globals.openInventoriesCount--;
|
|
||||||
if(Globals.openInventoriesCount == 0){
|
|
||||||
Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME);
|
|
||||||
Globals.controlHandler.hideMouse();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
|
|
||||||
div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
|
|
||||||
if(Globals.draggedItem != null){
|
|
||||||
if(Globals.dragSourceInventory != inventory){
|
|
||||||
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
|
|
||||||
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState)Globals.dragSourceInventory;
|
|
||||||
//transfer item
|
|
||||||
sourceInventory.removeItem(Globals.draggedItem);
|
|
||||||
inventory.addItem(Globals.draggedItem);
|
|
||||||
//null out global state
|
|
||||||
Globals.dragSourceInventory = null;
|
|
||||||
Globals.draggedItem = null;
|
|
||||||
//clear item container ui
|
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
|
||||||
//rerender both inventories
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGenerators.createNaturalInventoryMenu(inventory));
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), MenuGenerators.createNaturalInventoryMenu(sourceInventory));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//clear ui
|
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGenerators.createNaturalInventoryMenu(inventory));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}});
|
|
||||||
|
|
||||||
div.setOnClick(new ClickEventCallback() {public boolean execute(ClickEvent event){
|
|
||||||
WindowUtils.focusWindow(WindowStrings.WINDOW_MENU_INVENTORY);
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
|
|
||||||
//black texture background
|
|
||||||
ImagePanel imagePanel = new ImagePanel(0,0,width,height,Globals.blackTexture);
|
|
||||||
// imagePanel.setWidth(width);
|
|
||||||
// imagePanel.setHeight(height);
|
|
||||||
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
|
||||||
div.addChild(imagePanel);
|
|
||||||
|
|
||||||
//label 1 (inventory)
|
|
||||||
Label inventoryLabel = new Label(10,10,1.0f);
|
|
||||||
inventoryLabel.setText("INVENTORY");
|
|
||||||
div.addChild(inventoryLabel);
|
|
||||||
|
|
||||||
int columns = 8;
|
|
||||||
int columnWidth = 60;
|
|
||||||
int rowHeight = 60;
|
|
||||||
for(int i = 0; i < inventory.getCapacity(); i++){
|
|
||||||
String texturePath = "Textures/icons/itemIconEmpty.png";
|
|
||||||
boolean hasItem = false;
|
|
||||||
if(i < inventory.getItems().size()){
|
|
||||||
Entity currentItem = inventory.getItems().get(i);
|
|
||||||
//get texture path from item
|
|
||||||
texturePath = ItemUtils.getItemIcon(currentItem);
|
|
||||||
//flag that this isn't an empty slot
|
|
||||||
hasItem = true;
|
|
||||||
}
|
|
||||||
if(!Globals.assetManager.hasLoadedTexture(texturePath)){
|
|
||||||
Globals.assetManager.addTexturePathtoQueue(texturePath);
|
|
||||||
}
|
|
||||||
int posX = (10 + i % columns * columnWidth);
|
|
||||||
int posY = 60 + (i / columns * rowHeight);
|
|
||||||
int panelWidth = 50;
|
|
||||||
int panelHeight = 50;
|
|
||||||
ImagePanel panel = new ImagePanel(posX,posY,panelWidth,panelHeight,texturePath);
|
|
||||||
if(hasItem == true){
|
|
||||||
int itemId = i;
|
|
||||||
panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){
|
|
||||||
// System.out.println("Drag start");
|
|
||||||
Globals.dragSourceInventory = inventory;
|
|
||||||
Globals.draggedItem = inventory.getItems().get(itemId);
|
|
||||||
div.removeChild(panel);
|
|
||||||
WindowUtils.pushItemIconToItemWindow(panel);
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
panel.setOnDrag(new DragEventCallback() {public boolean execute(DragEvent event){
|
|
||||||
// System.out.println("Drag");
|
|
||||||
panel.setPositionX(event.getCurrentX() - panelWidth / 2);
|
|
||||||
panel.setPositionY(event.getCurrentY() - panelHeight / 2);
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
} else {
|
|
||||||
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
|
|
||||||
if(Globals.dragSourceInventory instanceof RelationalInventoryState){
|
|
||||||
RelationalInventoryState sourceInventory = (RelationalInventoryState) Globals.dragSourceInventory;
|
|
||||||
Entity item = Globals.draggedItem;
|
|
||||||
//destroy real world item
|
|
||||||
if(ItemUtils.getRealWorldEntity(item) != null){
|
|
||||||
System.out.println("Destroy real world item");
|
|
||||||
ItemUtils.destroyInWorldItem(ItemUtils.getRealWorldEntity(item));
|
|
||||||
}
|
|
||||||
//eject from equip state
|
|
||||||
InventoryUtils.attemptDestroyItem(Globals.playerEntity,item);
|
|
||||||
//add to unrelational
|
|
||||||
sourceInventory.tryRemoveItem(item);
|
|
||||||
inventory.addItem(item);
|
|
||||||
//update ui
|
|
||||||
Globals.dragSourceInventory = null;
|
|
||||||
Globals.draggedItem = null;
|
|
||||||
//clear item container ui
|
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
|
||||||
//rerender both inventories
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGenerators.createCharacterInventoryMenu(sourceInventory));
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGenerators.createNaturalInventoryMenu(inventory));
|
|
||||||
}
|
|
||||||
//now the fun begins :)
|
|
||||||
//if transfer item
|
|
||||||
// remove item from current inventory
|
|
||||||
// place item in new inventory
|
|
||||||
// trigger recreation of the menu
|
|
||||||
//if drop item
|
|
||||||
// remove item from current inventory
|
|
||||||
// create item in world in front of character
|
|
||||||
// trigger recreation of the menu
|
|
||||||
//if neither of above
|
|
||||||
// replace item icon position to origin
|
|
||||||
// System.out.println("Release drag");
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
// imagePanel.setWidth(width);
|
|
||||||
// imagePanel.setHeight(height);
|
|
||||||
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
|
||||||
div.addChild(panel);
|
|
||||||
}
|
|
||||||
|
|
||||||
return rVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static Window createCharacterInventoryMenu(RelationalInventoryState inventory){
|
|
||||||
// int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
||||||
int width = 500;
|
|
||||||
int height = 500;
|
|
||||||
// int screenLeft = (Globals.WINDOW_WIDTH - width)/2;
|
|
||||||
Window rVal = new Window(0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT);
|
|
||||||
|
|
||||||
Div div = new Div();
|
|
||||||
div.setPositionX(1000);
|
|
||||||
rVal.addChild(div);
|
|
||||||
|
|
||||||
rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){
|
|
||||||
WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowStrings.WINDOW_CHARACTER), false);
|
|
||||||
Globals.elementManager.unregisterWindow(WindowStrings.WINDOW_CHARACTER);
|
|
||||||
//
|
|
||||||
Globals.openInventoriesCount--;
|
|
||||||
if(Globals.openInventoriesCount == 0){
|
|
||||||
Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME);
|
|
||||||
Globals.controlHandler.hideMouse();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
|
|
||||||
div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
|
|
||||||
if(Globals.draggedItem != null){
|
|
||||||
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
|
|
||||||
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState)Globals.dragSourceInventory;
|
|
||||||
//null out global state
|
|
||||||
Globals.dragSourceInventory = null;
|
|
||||||
Globals.draggedItem = null;
|
|
||||||
//clear item container ui
|
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
|
||||||
//rerender both inventories
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGenerators.createCharacterInventoryMenu(inventory));
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), MenuGenerators.createNaturalInventoryMenu(sourceInventory));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}});
|
|
||||||
|
|
||||||
div.setOnClick(new ClickEventCallback() {public boolean execute(ClickEvent event){
|
|
||||||
WindowUtils.focusWindow(WindowStrings.WINDOW_CHARACTER);
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
|
|
||||||
//black texture background
|
|
||||||
ImagePanel imagePanel = new ImagePanel(1000,0,width,height,Globals.blackTexture);
|
|
||||||
// imagePanel.setWidth(width);
|
|
||||||
// imagePanel.setHeight(height);
|
|
||||||
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
|
||||||
div.addChild(imagePanel);
|
|
||||||
|
|
||||||
//label 1 (inventory)
|
|
||||||
Label inventoryLabel = new Label(1010,10,1.0f);
|
|
||||||
inventoryLabel.setText("CHARACTER");
|
|
||||||
div.addChild(inventoryLabel);
|
|
||||||
|
|
||||||
// int columns = 8;
|
|
||||||
// int columnWidth = 60;
|
|
||||||
// int rowHeight = 60;
|
|
||||||
int slotSpacing = 30;
|
|
||||||
|
|
||||||
List<String> slots = inventory.getSlots();
|
|
||||||
int numSlots = slots.size();
|
|
||||||
// int numRows = (numSlots / 2) + (numSlots % 2 == 1 ? 1 : 0);
|
|
||||||
|
|
||||||
int incrementer = 0;
|
|
||||||
for(int i = 0; i < numSlots; i++){
|
|
||||||
String texturePath = "Textures/icons/itemIconEmpty.png";
|
|
||||||
boolean hasItem = false;
|
|
||||||
if(inventory.getItemSlot(slots.get(i)) != null){
|
|
||||||
Entity currentItem = inventory.getItemSlot(slots.get(i));
|
|
||||||
//get texture path from item
|
|
||||||
texturePath = ItemUtils.getItemIcon(currentItem);
|
|
||||||
//flag that this isn't an empty slot
|
|
||||||
hasItem = true;
|
|
||||||
}
|
|
||||||
if(!Globals.assetManager.hasLoadedTexture(texturePath)){
|
|
||||||
Globals.assetManager.addTexturePathtoQueue(texturePath);
|
|
||||||
}
|
|
||||||
int panelWidth = 50;
|
|
||||||
int panelHeight = 50;
|
|
||||||
int posX = 1000 + 20;
|
|
||||||
if((incrementer % 2) == 1){
|
|
||||||
posX = posX + 400;
|
|
||||||
}
|
|
||||||
int posY = 60 + (i / 2 * (panelHeight + slotSpacing));
|
|
||||||
ImagePanel panel = new ImagePanel(posX,posY,panelWidth,panelHeight,texturePath);
|
|
||||||
if(hasItem == true){
|
|
||||||
int itemId = i;
|
|
||||||
panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){
|
|
||||||
// System.out.println("Drag start");
|
|
||||||
Globals.dragSourceInventory = inventory;
|
|
||||||
Globals.draggedItem = inventory.getItemSlot(slots.get(itemId));
|
|
||||||
div.removeChild(panel);
|
|
||||||
WindowUtils.pushItemIconToItemWindow(panel);
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
panel.setOnDrag(new DragEventCallback() {public boolean execute(DragEvent event){
|
|
||||||
// System.out.println("Drag");
|
|
||||||
panel.setPositionX(event.getCurrentX() - panelWidth / 2);
|
|
||||||
panel.setPositionY(event.getCurrentY() - panelHeight / 2);
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
} else {
|
|
||||||
int itemId = i;
|
|
||||||
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
|
|
||||||
// panel.setPositionX(posX);
|
|
||||||
// panel.setPositionY(posY);
|
|
||||||
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
|
|
||||||
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState) Globals.dragSourceInventory;
|
|
||||||
Entity item = Globals.draggedItem;
|
|
||||||
if(inventory.canEquipItemToSlot(item, slots.get(itemId))){
|
|
||||||
//transfer item
|
|
||||||
sourceInventory.removeItem(item);
|
|
||||||
inventory.addItem(slots.get(itemId), item);
|
|
||||||
//hydrate inventory item
|
|
||||||
Entity inWorldItem = ItemUtils.spawnBasicItem(ItemUtils.getType(item));
|
|
||||||
//bind in world with in inventory
|
|
||||||
ItemUtils.setRealWorldEntity(item, inWorldItem);
|
|
||||||
//fire equip event to equip state
|
|
||||||
EquipState equipState = (EquipState)Globals.playerEntity.getData(EntityDataStrings.EQUIP_STATE);
|
|
||||||
equipState.attemptEquip(inWorldItem,inventory.getEquipPointFromSlot(slots.get(itemId)));
|
|
||||||
GravityUtils.attemptDeactivateGravity(inWorldItem);
|
|
||||||
}
|
|
||||||
//update ui
|
|
||||||
Globals.dragSourceInventory = null;
|
|
||||||
Globals.draggedItem = null;
|
|
||||||
//clear item container ui
|
|
||||||
WindowUtils.cleanItemDraggingWindow();
|
|
||||||
//rerender both inventories
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGenerators.createCharacterInventoryMenu(inventory));
|
|
||||||
//re-render inventory
|
|
||||||
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), MenuGenerators.createNaturalInventoryMenu(sourceInventory));
|
|
||||||
}
|
|
||||||
//now the fun begins :)
|
|
||||||
//if transfer item
|
|
||||||
// remove item from current inventory
|
|
||||||
// place item in new inventory
|
|
||||||
// trigger recreation of the menu
|
|
||||||
//if drop item
|
|
||||||
// remove item from current inventory
|
|
||||||
// create item in world in front of character
|
|
||||||
// trigger recreation of the menu
|
|
||||||
//if neither of above
|
|
||||||
// replace item icon position to origin
|
|
||||||
// System.out.println("Release drag");
|
|
||||||
//rebuild inventory windows
|
|
||||||
return false;
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
div.addChild(panel);
|
|
||||||
|
|
||||||
//create the slot text
|
|
||||||
posX = 1000 + 80;
|
|
||||||
if((incrementer % 2) == 1){
|
|
||||||
posX = posX + 190;
|
|
||||||
}
|
|
||||||
posY = posY + 15;
|
|
||||||
Label slotText = new Label(posX, posY, 0.4f);
|
|
||||||
slotText.setText(slots.get(i));
|
|
||||||
div.addChild(slotText);
|
|
||||||
|
|
||||||
incrementer++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
373
src/main/java/electrosphere/menu/MenuGeneratorsInventory.java
Normal file
373
src/main/java/electrosphere/menu/MenuGeneratorsInventory.java
Normal file
@ -0,0 +1,373 @@
|
|||||||
|
package electrosphere.menu;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import electrosphere.audio.AudioUtils;
|
||||||
|
import electrosphere.controls.ControlHandler.ControlsState;
|
||||||
|
import electrosphere.entity.Entity;
|
||||||
|
import electrosphere.entity.EntityDataStrings;
|
||||||
|
import electrosphere.entity.state.equip.EquipState;
|
||||||
|
import electrosphere.entity.state.gravity.GravityUtils;
|
||||||
|
import electrosphere.entity.state.inventory.InventoryUtils;
|
||||||
|
import electrosphere.entity.state.inventory.RelationalInventoryState;
|
||||||
|
import electrosphere.entity.state.inventory.UnrelationalInventoryState;
|
||||||
|
import electrosphere.entity.types.item.ItemUtils;
|
||||||
|
import electrosphere.main.Globals;
|
||||||
|
import electrosphere.renderer.ui.DraggableElement.DragEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elements.Div;
|
||||||
|
import electrosphere.renderer.ui.elements.ImagePanel;
|
||||||
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
|
import electrosphere.renderer.ui.Window;
|
||||||
|
import electrosphere.renderer.ui.ClickableElement.ClickEventCallback;
|
||||||
|
import electrosphere.renderer.ui.DraggableElement.DragEventCallback;
|
||||||
|
import electrosphere.renderer.ui.FocusableElement.FocusEventCallback;
|
||||||
|
import electrosphere.renderer.ui.NavigableElement.NavigationEventCallback;
|
||||||
|
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
||||||
|
|
||||||
|
public class MenuGeneratorsInventory {
|
||||||
|
|
||||||
|
public static Window createNaturalInventoryMenu(UnrelationalInventoryState inventory){
|
||||||
|
int width = 500;
|
||||||
|
int height = 500;
|
||||||
|
|
||||||
|
Window rVal = new Window(0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT);
|
||||||
|
|
||||||
|
Div div = new Div();
|
||||||
|
rVal.addChild(div);
|
||||||
|
|
||||||
|
rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){
|
||||||
|
WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowUtils.getInventoryWindowID(inventory.getId())), false);
|
||||||
|
Globals.elementManager.unregisterWindow(WindowUtils.getInventoryWindowID(inventory.getId()));
|
||||||
|
//
|
||||||
|
Globals.openInventoriesCount--;
|
||||||
|
if(Globals.openInventoriesCount == 0){
|
||||||
|
Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME);
|
||||||
|
Globals.controlHandler.hideMouse();
|
||||||
|
}
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("/Audio/closeMenu.ogg");
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
|
||||||
|
div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
|
||||||
|
if(Globals.draggedItem != null){
|
||||||
|
if(Globals.dragSourceInventory != inventory){
|
||||||
|
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
|
||||||
|
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState)Globals.dragSourceInventory;
|
||||||
|
//transfer item
|
||||||
|
sourceInventory.removeItem(Globals.draggedItem);
|
||||||
|
inventory.addItem(Globals.draggedItem);
|
||||||
|
//null out global state
|
||||||
|
Globals.dragSourceInventory = null;
|
||||||
|
Globals.draggedItem = null;
|
||||||
|
//clear item container ui
|
||||||
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
|
//rerender both inventories
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(inventory));
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(sourceInventory));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//clear ui
|
||||||
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(inventory));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}});
|
||||||
|
|
||||||
|
div.setOnClick(new ClickEventCallback() {public boolean execute(ClickEvent event){
|
||||||
|
WindowUtils.focusWindow(WindowStrings.WINDOW_MENU_INVENTORY);
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
|
||||||
|
//black texture background
|
||||||
|
ImagePanel imagePanel = new ImagePanel(0,0,width,height,Globals.blackTexture);
|
||||||
|
// imagePanel.setWidth(width);
|
||||||
|
// imagePanel.setHeight(height);
|
||||||
|
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
||||||
|
div.addChild(imagePanel);
|
||||||
|
|
||||||
|
//label 1 (inventory)
|
||||||
|
Label inventoryLabel = new Label(10,10,1.0f);
|
||||||
|
inventoryLabel.setText("INVENTORY");
|
||||||
|
div.addChild(inventoryLabel);
|
||||||
|
|
||||||
|
int columns = 8;
|
||||||
|
int columnWidth = 60;
|
||||||
|
int rowHeight = 60;
|
||||||
|
for(int i = 0; i < inventory.getCapacity(); i++){
|
||||||
|
String texturePath = "Textures/icons/itemIconEmpty.png";
|
||||||
|
boolean hasItem = false;
|
||||||
|
if(i < inventory.getItems().size()){
|
||||||
|
Entity currentItem = inventory.getItems().get(i);
|
||||||
|
//get texture path from item
|
||||||
|
texturePath = ItemUtils.getItemIcon(currentItem);
|
||||||
|
//flag that this isn't an empty slot
|
||||||
|
hasItem = true;
|
||||||
|
}
|
||||||
|
if(!Globals.assetManager.hasLoadedTexture(texturePath)){
|
||||||
|
Globals.assetManager.addTexturePathtoQueue(texturePath);
|
||||||
|
}
|
||||||
|
int posX = (10 + i % columns * columnWidth);
|
||||||
|
int posY = 60 + (i / columns * rowHeight);
|
||||||
|
int panelWidth = 50;
|
||||||
|
int panelHeight = 50;
|
||||||
|
ImagePanel panel = new ImagePanel(posX,posY,panelWidth,panelHeight,texturePath);
|
||||||
|
if(hasItem == true){
|
||||||
|
int itemId = i;
|
||||||
|
panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){
|
||||||
|
// System.out.println("Drag start");
|
||||||
|
Globals.dragSourceInventory = inventory;
|
||||||
|
Globals.draggedItem = inventory.getItems().get(itemId);
|
||||||
|
div.removeChild(panel);
|
||||||
|
WindowUtils.pushItemIconToItemWindow(panel);
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("/Audio/inventoryGrabItem.ogg");
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
panel.setOnDrag(new DragEventCallback() {public boolean execute(DragEvent event){
|
||||||
|
// System.out.println("Drag");
|
||||||
|
panel.setPositionX(event.getCurrentX() - panelWidth / 2);
|
||||||
|
panel.setPositionY(event.getCurrentY() - panelHeight / 2);
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
} else {
|
||||||
|
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
|
||||||
|
if(Globals.dragSourceInventory instanceof RelationalInventoryState){
|
||||||
|
RelationalInventoryState sourceInventory = (RelationalInventoryState) Globals.dragSourceInventory;
|
||||||
|
Entity item = Globals.draggedItem;
|
||||||
|
//destroy real world item
|
||||||
|
if(ItemUtils.getRealWorldEntity(item) != null){
|
||||||
|
System.out.println("Destroy real world item");
|
||||||
|
ItemUtils.destroyInWorldItem(ItemUtils.getRealWorldEntity(item));
|
||||||
|
}
|
||||||
|
//eject from equip state
|
||||||
|
InventoryUtils.attemptDestroyItem(Globals.playerEntity,item);
|
||||||
|
//add to unrelational
|
||||||
|
sourceInventory.tryRemoveItem(item);
|
||||||
|
inventory.addItem(item);
|
||||||
|
//update ui
|
||||||
|
Globals.dragSourceInventory = null;
|
||||||
|
Globals.draggedItem = null;
|
||||||
|
//clear item container ui
|
||||||
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
|
//rerender both inventories
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(sourceInventory));
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(inventory));
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("Audio/inventorySlotItem.ogg");
|
||||||
|
}
|
||||||
|
//now the fun begins :)
|
||||||
|
//if transfer item
|
||||||
|
// remove item from current inventory
|
||||||
|
// place item in new inventory
|
||||||
|
// trigger recreation of the menu
|
||||||
|
//if drop item
|
||||||
|
// remove item from current inventory
|
||||||
|
// create item in world in front of character
|
||||||
|
// trigger recreation of the menu
|
||||||
|
//if neither of above
|
||||||
|
// replace item icon position to origin
|
||||||
|
// System.out.println("Release drag");
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
// imagePanel.setWidth(width);
|
||||||
|
// imagePanel.setHeight(height);
|
||||||
|
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
||||||
|
div.addChild(panel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Window createCharacterInventoryMenu(RelationalInventoryState inventory){
|
||||||
|
// int screenTop = Globals.WINDOW_HEIGHT - 150;
|
||||||
|
int width = 500;
|
||||||
|
int height = 500;
|
||||||
|
// int screenLeft = (Globals.WINDOW_WIDTH - width)/2;
|
||||||
|
Window rVal = new Window(0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT);
|
||||||
|
|
||||||
|
Div div = new Div();
|
||||||
|
div.setPositionX(1000);
|
||||||
|
rVal.addChild(div);
|
||||||
|
|
||||||
|
rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){
|
||||||
|
WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowStrings.WINDOW_CHARACTER), false);
|
||||||
|
Globals.elementManager.unregisterWindow(WindowStrings.WINDOW_CHARACTER);
|
||||||
|
//
|
||||||
|
Globals.openInventoriesCount--;
|
||||||
|
if(Globals.openInventoriesCount == 0){
|
||||||
|
Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME);
|
||||||
|
Globals.controlHandler.hideMouse();
|
||||||
|
}
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("/Audio/closeMenu.ogg");
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
|
||||||
|
div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
|
||||||
|
if(Globals.draggedItem != null){
|
||||||
|
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
|
||||||
|
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState)Globals.dragSourceInventory;
|
||||||
|
//null out global state
|
||||||
|
Globals.dragSourceInventory = null;
|
||||||
|
Globals.draggedItem = null;
|
||||||
|
//clear item container ui
|
||||||
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
|
//rerender both inventories
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(inventory));
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(sourceInventory));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}});
|
||||||
|
|
||||||
|
div.setOnClick(new ClickEventCallback() {public boolean execute(ClickEvent event){
|
||||||
|
WindowUtils.focusWindow(WindowStrings.WINDOW_CHARACTER);
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
|
||||||
|
//black texture background
|
||||||
|
ImagePanel imagePanel = new ImagePanel(1000,0,width,height,Globals.blackTexture);
|
||||||
|
// imagePanel.setWidth(width);
|
||||||
|
// imagePanel.setHeight(height);
|
||||||
|
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
||||||
|
div.addChild(imagePanel);
|
||||||
|
|
||||||
|
//label 1 (inventory)
|
||||||
|
Label inventoryLabel = new Label(1010,10,1.0f);
|
||||||
|
inventoryLabel.setText("CHARACTER");
|
||||||
|
div.addChild(inventoryLabel);
|
||||||
|
|
||||||
|
// int columns = 8;
|
||||||
|
// int columnWidth = 60;
|
||||||
|
// int rowHeight = 60;
|
||||||
|
int slotSpacing = 30;
|
||||||
|
|
||||||
|
List<String> slots = inventory.getSlots();
|
||||||
|
int numSlots = slots.size();
|
||||||
|
// int numRows = (numSlots / 2) + (numSlots % 2 == 1 ? 1 : 0);
|
||||||
|
|
||||||
|
int incrementer = 0;
|
||||||
|
for(int i = 0; i < numSlots; i++){
|
||||||
|
String texturePath = "Textures/icons/itemIconEmpty.png";
|
||||||
|
boolean hasItem = false;
|
||||||
|
if(inventory.getItemSlot(slots.get(i)) != null){
|
||||||
|
Entity currentItem = inventory.getItemSlot(slots.get(i));
|
||||||
|
//get texture path from item
|
||||||
|
texturePath = ItemUtils.getItemIcon(currentItem);
|
||||||
|
//flag that this isn't an empty slot
|
||||||
|
hasItem = true;
|
||||||
|
}
|
||||||
|
if(!Globals.assetManager.hasLoadedTexture(texturePath)){
|
||||||
|
Globals.assetManager.addTexturePathtoQueue(texturePath);
|
||||||
|
}
|
||||||
|
int panelWidth = 50;
|
||||||
|
int panelHeight = 50;
|
||||||
|
int posX = 1000 + 20;
|
||||||
|
if((incrementer % 2) == 1){
|
||||||
|
posX = posX + 400;
|
||||||
|
}
|
||||||
|
int posY = 60 + (i / 2 * (panelHeight + slotSpacing));
|
||||||
|
ImagePanel panel = new ImagePanel(posX,posY,panelWidth,panelHeight,texturePath);
|
||||||
|
if(hasItem == true){
|
||||||
|
int itemId = i;
|
||||||
|
panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){
|
||||||
|
// System.out.println("Drag start");
|
||||||
|
Globals.dragSourceInventory = inventory;
|
||||||
|
Globals.draggedItem = inventory.getItemSlot(slots.get(itemId));
|
||||||
|
div.removeChild(panel);
|
||||||
|
WindowUtils.pushItemIconToItemWindow(panel);
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("Audio/inventoryGrabItem.ogg");
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
panel.setOnDrag(new DragEventCallback() {public boolean execute(DragEvent event){
|
||||||
|
// System.out.println("Drag");
|
||||||
|
panel.setPositionX(event.getCurrentX() - panelWidth / 2);
|
||||||
|
panel.setPositionY(event.getCurrentY() - panelHeight / 2);
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
} else {
|
||||||
|
int itemId = i;
|
||||||
|
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
|
||||||
|
// panel.setPositionX(posX);
|
||||||
|
// panel.setPositionY(posY);
|
||||||
|
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
|
||||||
|
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState) Globals.dragSourceInventory;
|
||||||
|
Entity item = Globals.draggedItem;
|
||||||
|
if(inventory.canEquipItemToSlot(item, slots.get(itemId))){
|
||||||
|
//transfer item
|
||||||
|
sourceInventory.removeItem(item);
|
||||||
|
inventory.addItem(slots.get(itemId), item);
|
||||||
|
//hydrate inventory item
|
||||||
|
Entity inWorldItem = ItemUtils.spawnBasicItem(ItemUtils.getType(item));
|
||||||
|
//bind in world with in inventory
|
||||||
|
ItemUtils.setRealWorldEntity(item, inWorldItem);
|
||||||
|
//fire equip event to equip state
|
||||||
|
EquipState equipState = (EquipState)Globals.playerEntity.getData(EntityDataStrings.EQUIP_STATE);
|
||||||
|
equipState.attemptEquip(inWorldItem,inventory.getEquipPointFromSlot(slots.get(itemId)));
|
||||||
|
GravityUtils.attemptDeactivateGravity(inWorldItem);
|
||||||
|
//play sound effect
|
||||||
|
AudioUtils.playAudio("Audio/inventorySlotItem.ogg");
|
||||||
|
}
|
||||||
|
//update ui
|
||||||
|
Globals.dragSourceInventory = null;
|
||||||
|
Globals.draggedItem = null;
|
||||||
|
//clear item container ui
|
||||||
|
WindowUtils.cleanItemDraggingWindow();
|
||||||
|
//rerender both inventories
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(inventory));
|
||||||
|
//re-render inventory
|
||||||
|
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(sourceInventory));
|
||||||
|
}
|
||||||
|
//now the fun begins :)
|
||||||
|
//if transfer item
|
||||||
|
// remove item from current inventory
|
||||||
|
// place item in new inventory
|
||||||
|
// trigger recreation of the menu
|
||||||
|
//if drop item
|
||||||
|
// remove item from current inventory
|
||||||
|
// create item in world in front of character
|
||||||
|
// trigger recreation of the menu
|
||||||
|
//if neither of above
|
||||||
|
// replace item icon position to origin
|
||||||
|
// System.out.println("Release drag");
|
||||||
|
//rebuild inventory windows
|
||||||
|
return false;
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
div.addChild(panel);
|
||||||
|
|
||||||
|
//create the slot text
|
||||||
|
posX = 1000 + 80;
|
||||||
|
if((incrementer % 2) == 1){
|
||||||
|
posX = posX + 190;
|
||||||
|
}
|
||||||
|
posY = posY + 15;
|
||||||
|
Label slotText = new Label(posX, posY, 0.4f);
|
||||||
|
slotText.setText(slots.get(i));
|
||||||
|
div.addChild(slotText);
|
||||||
|
|
||||||
|
incrementer++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user