diff --git a/src/main/java/electrosphere/controls/ControlHandler.java b/src/main/java/electrosphere/controls/ControlHandler.java index 499192ec..c6659403 100644 --- a/src/main/java/electrosphere/controls/ControlHandler.java +++ b/src/main/java/electrosphere/controls/ControlHandler.java @@ -101,7 +101,6 @@ import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowUtils; import electrosphere.menu.debug.ImGuiWindowMacros; import electrosphere.menu.ingame.MenuGeneratorsInGame; -import electrosphere.menu.ingame.MenuGeneratorsInventory; import electrosphere.renderer.ui.components.PlayerInventoryWindow; import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.events.ClickEvent; @@ -136,7 +135,6 @@ public class ControlHandler { public static final String INPUT_CODE_INTERACT = "interact"; public static final String INPUT_CODE_DROP = "drop"; public static final String INPUT_CODE_INVENTORY_OPEN = "inventoryOpen"; - public static final String INPUT_CODE_CHARACTER_OPEN = "characterOpen"; public static final String ITEM_SECONDARY = "actionItemSecondary"; public static final String INPUT_CODE_PLACE_TERRAIN = "placeTerrain"; public static final String INPUT_CODE_REMOVE_TERRAIN = "removeTerrain"; @@ -326,7 +324,6 @@ public class ControlHandler { handler.addControl(INPUT_CODE_INTERACT, new Control(ControlType.KEY,GLFW_KEY_E,false,"Interact","Interacts with whatever is targeted currently")); handler.addControl(INPUT_CODE_DROP, new Control(ControlType.KEY,GLFW_KEY_Y,false,"Drop","Drops the currently equipped item")); handler.addControl(INPUT_CODE_INVENTORY_OPEN, new Control(ControlType.KEY,GLFW_KEY_I,false,"Inventory","Opens the player's inventory")); - handler.addControl(INPUT_CODE_CHARACTER_OPEN, new Control(ControlType.KEY,GLFW_KEY_C,false,"Equip Menu","Opens the player's equipment menu")); handler.addControl(ITEM_SECONDARY, new Control(ControlType.MOUSE_BUTTON,GLFW_MOUSE_BUTTON_RIGHT,false,"Secondary","Uses the secondary equipped item")); /* @@ -980,14 +977,13 @@ public class ControlHandler { mainGameControlList.add(controls.get(INPUT_CODE_INVENTORY_OPEN)); inventoryControlList.add(controls.get(INPUT_CODE_INVENTORY_OPEN)); controls.get(INPUT_CODE_INVENTORY_OPEN).setOnClick(new ControlMethod(){public void execute(){ - if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())) == null){ + if(Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER) == null){ //create window - UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(Globals.playerEntity); Window mainMenuWindow = PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity); //register - Globals.elementService.registerWindow(WindowUtils.getInventoryWindowID(inventory.getId()), mainMenuWindow); + Globals.elementService.registerWindow(WindowStrings.WINDOW_CHARACTER, mainMenuWindow); //make visible - WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowUtils.getInventoryWindowID(inventory.getId())), true); + WindowUtils.recursiveSetVisible(WindowStrings.WINDOW_CHARACTER, true); //controls Globals.controlHandler.hintUpdateControlState(ControlsState.INVENTORY); //play sound effect @@ -997,42 +993,16 @@ public class ControlHandler { Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(true); // Globals.openInventoriesCount++; - } else if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())) != null){ - Globals.elementService.closeWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())); + } else if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER) != null){ + Globals.elementService.closeWindow(WindowStrings.WINDOW_CHARACTER); Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false); } }}); controls.get(INPUT_CODE_INVENTORY_OPEN).setRepeatTimeout(0.5f * Main.targetFrameRate); - /* - Open character - */ - mainGameControlList.add(controls.get(INPUT_CODE_CHARACTER_OPEN)); - inventoryControlList.add(controls.get(INPUT_CODE_CHARACTER_OPEN)); - controls.get(INPUT_CODE_CHARACTER_OPEN).setOnClick(new ControlMethod(){public void execute(){ - if(InventoryUtils.hasEquipInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER) == null){ - //create window - Window characterInventoryMenu = MenuGeneratorsInventory.createCharacterInventoryMenu(InventoryUtils.getEquipInventory(Globals.playerEntity)); - //register - Globals.elementService.registerWindow(WindowStrings.WINDOW_CHARACTER, characterInventoryMenu); - //make visible - WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER), true); - //controls - Globals.controlHandler.hintUpdateControlState(ControlsState.INVENTORY); - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/openMenu.ogg", VirtualAudioSourceType.UI, false); - } - Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(true); - // - Globals.openInventoriesCount++; - } else if(InventoryUtils.hasEquipInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER) != null){ - Globals.elementService.closeWindow(WindowStrings.WINDOW_CHARACTER); - Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false); - } - }}); - controls.get(INPUT_CODE_CHARACTER_OPEN).setRepeatTimeout(0.5f * Main.targetFrameRate); - + /** + * Places terrain + */ mainGameControlList.add(controls.get(INPUT_CODE_PLACE_TERRAIN)); controls.get(INPUT_CODE_PLACE_TERRAIN).setOnPress(new ControlMethod(){public void execute(){ CollisionEngine collisionEngine = Globals.clientSceneWrapper.getCollisionEngine(); @@ -1423,19 +1393,6 @@ public class ControlHandler { * Sets the inventory control callbacks */ void setInventoryControls(){ - /* - Close inventory - */ - // inventoryControlList.add(controls.get(INPUT_CODE_INVENTORY_CLOSE)); - // controls.get(INPUT_CODE_INVENTORY_CLOSE).setOnPress(new ControlMethod(){public void execute(){ - // // MenuCallbacks.backout(Globals.currentMenu); - // UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(Globals.playerCharacter); - // Element inventoryWindow = Globals.elementManager.getWindow(WindowUtils.getInventoryWindowID(inventory.getId())); - // WindowUtils.recursiveSetVisible(inventoryWindow, false); - // hideMouse(); - // Globals.elementManager.unregisterWindow(WindowUtils.getInventoryWindowID(inventory.getId())); - // Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME); - // }}); /* Item manipulation */ diff --git a/src/main/java/electrosphere/menu/WindowUtils.java b/src/main/java/electrosphere/menu/WindowUtils.java index 76a85e21..a2589a6b 100644 --- a/src/main/java/electrosphere/menu/WindowUtils.java +++ b/src/main/java/electrosphere/menu/WindowUtils.java @@ -2,11 +2,9 @@ package electrosphere.menu; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; -import electrosphere.entity.state.inventory.InventoryUtils; -import electrosphere.entity.state.inventory.RelationalInventoryState; -import electrosphere.entity.state.inventory.UnrelationalInventoryState; import electrosphere.menu.ingame.MenuGeneratorsInventory; import electrosphere.menu.mainmenu.MenuGeneratorsTitleMenu; +import electrosphere.renderer.ui.components.PlayerInventoryWindow; import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.elementtypes.ContainerElement; @@ -113,6 +111,7 @@ public class WindowUtils { * @param id the id * @return the window string for said inventory window */ + @Deprecated public static String getInventoryWindowID(int id){ return "INVENTORY-" + id; } @@ -166,20 +165,9 @@ public class WindowUtils { public static void attemptRedrawInventoryWindows(){ //make sure we're client and the player entity exists if(Globals.RUN_CLIENT && Globals.playerEntity != null){ - //check equip inventory - if(InventoryUtils.hasEquipInventory(Globals.playerEntity) && Globals.elementService.containsWindow(WindowStrings.WINDOW_CHARACTER)){ + if(Globals.elementService.containsWindow(WindowStrings.WINDOW_CHARACTER)){ //redraw if necessary - RelationalInventoryState inventory = InventoryUtils.getEquipInventory(Globals.playerEntity); - WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(inventory)); - } - //check natural inventory - if(InventoryUtils.hasNaturalInventory(Globals.playerEntity)){ - //we need to know the inventory to know which window to check as there can be multiple unrelational inventory screens open - UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(Globals.playerEntity); - if(Globals.elementService.containsWindow(WindowUtils.getInventoryWindowID(inventory.getId()))){ - //once we have the natural inventory, redraw - WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), MenuGeneratorsInventory.createNaturalInventoryMenu(inventory)); - } + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); } } } diff --git a/src/main/java/electrosphere/menu/ingame/MenuGeneratorsInventory.java b/src/main/java/electrosphere/menu/ingame/MenuGeneratorsInventory.java index 6aa7f3f8..67540b01 100644 --- a/src/main/java/electrosphere/menu/ingame/MenuGeneratorsInventory.java +++ b/src/main/java/electrosphere/menu/ingame/MenuGeneratorsInventory.java @@ -1,462 +1,19 @@ package electrosphere.menu.ingame; -import java.util.List; - -import electrosphere.audio.VirtualAudioSourceManager.VirtualAudioSourceType; -import electrosphere.controls.ControlHandler.ControlsState; import electrosphere.engine.Globals; -import electrosphere.engine.signal.Signal.SignalType; -import electrosphere.entity.Entity; -import electrosphere.entity.state.equip.ClientEquipState; 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.game.data.creature.type.equip.EquipPoint; import electrosphere.logger.LoggerInterface; import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowUtils; +import electrosphere.renderer.ui.components.PlayerInventoryWindow; import electrosphere.renderer.ui.elements.Div; -import electrosphere.renderer.ui.elements.ImagePanel; -import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.elementtypes.Element; -import electrosphere.renderer.ui.elementtypes.ClickableElement.ClickEventCallback; -import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment; -import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification; -import electrosphere.renderer.ui.elementtypes.ContainerElement; import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback; -import electrosphere.renderer.ui.elementtypes.NavigableElement.NavigationEventCallback; -import electrosphere.renderer.ui.events.ClickEvent; import electrosphere.renderer.ui.events.DragEvent; -import electrosphere.renderer.ui.events.NavigationEvent; public class MenuGeneratorsInventory { - /** - * The dummy panel - */ - static ImagePanel dummyPanel = null; - - public static Window createNaturalInventoryMenu(UnrelationalInventoryState inventory){ - int width = 500; - int height = 500; - - Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,width,height,true); - rVal.setParentAlignItem(YogaAlignment.Center); - rVal.setParentJustifyContent(YogaJustification.Center); - - //apply yoga so that the screenspace position of the window can be calculated, that allows proper placement of the absolute elements - Globals.signalSystem.post(SignalType.YOGA_APPLY,rVal); - - Div div = Div.createDiv(); - rVal.addChild(div); - - rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){ - WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowUtils.getInventoryWindowID(inventory.getId())), false); - Globals.elementService.unregisterWindow(WindowUtils.getInventoryWindowID(inventory.getId())); - // - Globals.openInventoriesCount--; - if(Globals.openInventoriesCount == 0){ - Globals.controlHandler.hintUpdateControlState(ControlsState.MAIN_GAME); - } - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/closeMenu.ogg", VirtualAudioSourceType.UI, false); - } - return false; - }}); - - div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){ - LoggerInterface.loggerUI.INFO("Natural inventory received drag release 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; - Entity item = Globals.draggedItem; - if(ClientEquipState.hasEquipState(Globals.playerEntity) && InventoryUtils.hasEquipInventory(Globals.playerEntity)){ - RelationalInventoryState equipInventory = InventoryUtils.getEquipInventory(Globals.playerEntity); - ClientEquipState equipState = ClientEquipState.getEquipState(Globals.playerEntity); - equipState.commandAttemptUnequip(equipInventory.getItemSlot(item)); - } - //clear item container ui - WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //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(); - //dummy panel handling - destroyDummyPanel(); - //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; - }}); - - - //label 1 (inventory) - div.addChild(Label.createLabel("INVENTORY")); - - 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 posXf = posX; - int posYf = posY; - int itemPosX = posX; - int itemPosY = posY; - int panelWidth = 50; - int panelHeight = 50; - ImagePanel panel = ImagePanel.createImagePanelAbsolute(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); - ContainerElement container = (ContainerElement)panel.getParent(); - container.removeChild(panel); - WindowUtils.pushItemIconToItemWindow(panel); - //add a dummy icon in place of the existing one - dummyPanel = ImagePanel.createImagePanelAbsolute(posXf,posYf,panelWidth,panelHeight,"Textures/icons/itemIconEmpty.png"); - container.addChild(dummyPanel); - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false); - } - 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; - }}); - panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){ - if(panel.getParent() != div){ - if(panel.getParent() != null){ - ContainerElement container = (ContainerElement)panel.getParent(); - container.removeChild(panel); - } - div.addChild(panel); - Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY()); - } - //dummy panel handling - destroyDummyPanel(); - panel.setPositionX(div.getAbsoluteX() + itemPosX); - panel.setPositionY(div.getAbsoluteY() + itemPosY); - 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; - if(ClientEquipState.hasEquipState(Globals.playerEntity) && InventoryUtils.hasEquipInventory(Globals.playerEntity)){ - RelationalInventoryState equipInventory = InventoryUtils.getEquipInventory(Globals.playerEntity); - ClientEquipState equipState = ClientEquipState.getEquipState(Globals.playerEntity); - equipState.commandAttemptUnequip(equipInventory.getItemSlot(item)); - } - //update ui - // Globals.dragSourceInventory = null; - // Globals.draggedItem = null; - //clear item container ui - WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //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 - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); - } - } - //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(Globals.renderingEngine.getOpenGLState(),0,0,width,height,true); - - Div div = Div.createDiv(); - rVal.addChild(div); - - rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){ - WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER), false); - Globals.elementService.unregisterWindow(WindowStrings.WINDOW_CHARACTER); - // - Globals.openInventoriesCount--; - if(Globals.openInventoriesCount == 0){ - Globals.controlHandler.hintUpdateControlState(ControlsState.MAIN_GAME); - } - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/closeMenu.ogg", VirtualAudioSourceType.UI, false); - } - return false; - }}); - - div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){ - LoggerInterface.loggerUI.INFO("Character inventory received drag release 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(); - //dummy panel handling - destroyDummyPanel(); - //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; - }}); - - - //label 1 (inventory) - Label inventoryLabel = new Label(1.0f); - inventoryLabel.setText("CHARACTER"); - div.addChild(inventoryLabel); - - // int columns = 8; - // int columnWidth = 60; - // int rowHeight = 60; - int slotSpacing = 30; - - List slots = inventory.getSlots(); - int numSlots = slots.size(); - EquipPoint equipPoint = null; - // 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; - String slotId = slots.get(i); - equipPoint = inventory.getEquipPointFromSlot(slotId); - if(!equipPoint.isCombinedPoint()){ - if(inventory.getItemSlot(slotId) != null){ - Entity currentItem = inventory.getItemSlot(slotId); - //get texture path from item - texturePath = ItemUtils.getItemIcon(currentItem); - //flag that this isn't an empty slot - hasItem = true; - } else if(inventory.getCombinedPoint(slotId) != null && inventory.hasItemInSlot(inventory.getCombinedPoint(slotId).getEquipPointId())){ - Entity currentItem = inventory.getItemSlot(inventory.getCombinedPoint(slotId).getEquipPointId()); - //get texture path from item - texturePath = ItemUtils.getItemIcon(currentItem); - //flag that this isn't an empty slot - hasItem = true; - equipPoint = inventory.getCombinedPoint(slotId); - slotId = equipPoint.getEquipPointId(); - } - if(!Globals.assetManager.hasLoadedTexture(texturePath)){ - Globals.assetManager.addTexturePathtoQueue(texturePath); - } - int panelWidth = 50; - int panelHeight = 50; - int posX = 20; - if((incrementer % 2) == 1){ - posX = posX + 400; - } - int posXf = posX; - int posY = 60 + (i / 2 * (panelHeight + slotSpacing)); - int posYf = posY; - int itemPosX = posX; - int itemPosY = posY; - ImagePanel panel = ImagePanel.createImagePanelAbsolute(posX,posY,panelWidth,panelHeight,texturePath); - if(hasItem == true){ - //literally just here to get around finality of variable within callback - String finalSlotId = slotId; - panel.setOnDragStart(new DragEventCallback() { - public boolean execute(DragEvent event){ - LoggerInterface.loggerUI.DEBUG("Drag start"); - Globals.dragSourceInventory = inventory; - Globals.draggedItem = inventory.getItemSlot(finalSlotId); - ContainerElement container = (ContainerElement)panel.getParent(); - container.removeChild(panel); - WindowUtils.pushItemIconToItemWindow(panel); - //add a dummy icon in place of the existing one - dummyPanel = ImagePanel.createImagePanelAbsolute(posXf,posYf,panelWidth,panelHeight,"Textures/icons/itemIconEmpty.png"); - container.addChild(dummyPanel); - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false); - } - 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; - }}); - panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){ - if(panel.getParent() != div){ - if(panel.getParent() != null){ - ContainerElement container = (ContainerElement)panel.getParent(); - container.removeChild(panel); - } - Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY()); - div.addChild(panel); - } - //dummy panel handling - destroyDummyPanel(); - panel.setPositionX(div.getAbsoluteX() + itemPosX); - panel.setPositionY(div.getAbsoluteY() + itemPosY); - 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))){ - //fire equip event to equip state - ClientEquipState equipState = ClientEquipState.getEquipState(Globals.playerEntity); - equipState.commandAttemptEquip(item,inventory.getEquipPointFromSlot(slots.get(itemId))); - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); - } - } else if(inventory.canEquipItemToCombinedSlot(item, slots.get(itemId))){ - EquipPoint combinedPoint = inventory.getCombinedPoint(slots.get(itemId)); - //fire equip event to equip state - ClientEquipState equipState = ClientEquipState.getEquipState(Globals.playerEntity); - equipState.commandAttemptEquip(item,combinedPoint); - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); - } - } - //update ui - Globals.dragSourceInventory = null; - Globals.draggedItem = null; - //clear item container ui - WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //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 = 80; - if((incrementer % 2) == 1){ - posX = posX + 190; - } - posY = posY + 15; - Label slotText = new Label(0.7f); - slotText.setText(slots.get(i)); - slotText.setPositionX(posX); - slotText.setPositionY(posY); - slotText.setAbsolutePosition(true); - div.addChild(slotText); - - incrementer++; - } - } - - return rVal; - } public static Element worldItemDropCaptureWindow(){ Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT,true); @@ -464,35 +21,17 @@ public class MenuGeneratorsInventory { div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){ LoggerInterface.loggerUI.INFO("World item drop capture window received drag release"); if(Globals.draggedItem != null){ - if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){ - UnrelationalInventoryState inventory = (UnrelationalInventoryState) Globals.dragSourceInventory; //drop item InventoryUtils.clientAttemptEjectItem(Globals.playerEntity,Globals.draggedItem); - //dummy panel handling - destroyDummyPanel(); - //clear ui - WindowUtils.cleanItemDraggingWindow(); - String sourceWindowId = WindowUtils.getInventoryWindowID(inventory.getId()); - WindowUtils.replaceWindow(sourceWindowId,MenuGeneratorsInventory.createNaturalInventoryMenu(inventory)); - //null globals - Globals.dragSourceInventory = null; - Globals.draggedItem = null; - return false; - } else if(Globals.dragSourceInventory instanceof RelationalInventoryState){ - RelationalInventoryState inventory = (RelationalInventoryState) Globals.dragSourceInventory; - //drop item - InventoryUtils.clientAttemptEjectItem(Globals.playerEntity,Globals.draggedItem); - //dummy panel handling - destroyDummyPanel(); //clear ui WindowUtils.cleanItemDraggingWindow(); String sourceWindowId = WindowStrings.WINDOW_CHARACTER; - WindowUtils.replaceWindow(sourceWindowId,MenuGeneratorsInventory.createCharacterInventoryMenu(inventory)); + WindowUtils.replaceWindow(sourceWindowId,PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); //null globals Globals.dragSourceInventory = null; Globals.draggedItem = null; return false; - } + // } } return true; }}); @@ -504,16 +43,4 @@ public class MenuGeneratorsInventory { return rVal; } - /** - * Destroys the dummy panel - */ - public static void destroyDummyPanel(){ - if(dummyPanel != null && dummyPanel.getParent() != null){ - ContainerElement container = (ContainerElement)dummyPanel.getParent(); - container.removeChild(dummyPanel); - dummyPanel.destroy(); - dummyPanel = null; - } - } - } diff --git a/src/main/java/electrosphere/renderer/ui/components/CharacterCustomizer.java b/src/main/java/electrosphere/renderer/ui/components/CharacterCustomizer.java index 6a2c1e0e..8042f4d8 100644 --- a/src/main/java/electrosphere/renderer/ui/components/CharacterCustomizer.java +++ b/src/main/java/electrosphere/renderer/ui/components/CharacterCustomizer.java @@ -75,8 +75,7 @@ public class CharacterCustomizer { for(VisualAttribute attribute : selectedRaceType.getVisualAttributes()){ if(attribute.getType().equals(VisualAttribute.TYPE_BONE)){ //add label for slider - Label sliderName = new Label(0.6f); - sliderName.setText(attribute.getAttributeId()); + Label sliderName = Label.createLabel(attribute.getAttributeId()); sliderName.setMinWidth(200); //add a slider Slider boneSlider = Slider.createSlider((ValueChangeEvent event) -> { @@ -108,8 +107,7 @@ public class CharacterCustomizer { scrollable.addChild(Div.createRow(sliderName,boneSlider)); } else if(attribute.getType().equals(VisualAttribute.TYPE_REMESH)){ //add label for carousel - Label scrollableName = new Label(0.6f); - scrollableName.setText(attribute.getAttributeId()); + Label scrollableName = Label.createLabel(attribute.getAttributeId()); scrollableName.setMinWidth(200); //add a carousel StringCarousel variantCarousel = StringCarousel.create( diff --git a/src/main/java/electrosphere/renderer/ui/components/EquipmentInventoryPanel.java b/src/main/java/electrosphere/renderer/ui/components/EquipmentInventoryPanel.java index 48d065ae..fd6ca6d8 100644 --- a/src/main/java/electrosphere/renderer/ui/components/EquipmentInventoryPanel.java +++ b/src/main/java/electrosphere/renderer/ui/components/EquipmentInventoryPanel.java @@ -15,12 +15,12 @@ import electrosphere.game.data.creature.type.equip.EquipPoint; import electrosphere.logger.LoggerInterface; import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowUtils; -import electrosphere.menu.ingame.MenuGeneratorsInventory; import electrosphere.renderer.ui.elements.Div; import electrosphere.renderer.ui.elements.ImagePanel; import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elementtypes.ClickableElement.ClickEventCallback; import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment; +import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification; import electrosphere.renderer.ui.elementtypes.ContainerElement; import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback; import electrosphere.renderer.ui.elementtypes.Element; @@ -32,10 +32,6 @@ import electrosphere.renderer.ui.events.DragEvent; */ public class EquipmentInventoryPanel { - /** - * The dummy panel - */ - static ImagePanel dummyPanel = null; /** @@ -47,25 +43,22 @@ public class EquipmentInventoryPanel { RelationalInventoryState inventory = InventoryUtils.getEquipInventory(entity); Div div = Div.createDiv(); + div.setJustifyContent(YogaJustification.Center); + div.setMarginBottom(25); + div.setMarginLeft(25); + div.setMarginRight(25); + div.setMarginTop(25); div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){ LoggerInterface.loggerUI.INFO("Character inventory received drag release 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(); - //dummy panel handling - destroyDummyPanel(); - //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)); - } + //null out global state + Globals.dragSourceInventory = null; + Globals.draggedItem = null; + //clear item container ui + WindowUtils.cleanItemDraggingWindow(); + //re-render inventory + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); return false; } return true; @@ -78,8 +71,8 @@ public class EquipmentInventoryPanel { //label 1 (inventory) - Label inventoryLabel = new Label(1.0f); - inventoryLabel.setText("CHARACTER"); + Label inventoryLabel = Label.createLabel("CHARACTER"); + inventoryLabel.setMarginBottom(10); div.addChild(inventoryLabel); @@ -101,13 +94,13 @@ public class EquipmentInventoryPanel { String slotId = slots.get(i); equipPoint = inventory.getEquipPointFromSlot(slotId); if(!equipPoint.isCombinedPoint()){ - if(inventory.getItemSlot(slotId) != null){ + if(inventory.getItemSlot(slotId) != null && inventory.getItemSlot(slotId) != Globals.draggedItem){ Entity currentItem = inventory.getItemSlot(slotId); //get texture path from item texturePath = ItemUtils.getItemIcon(currentItem); //flag that this isn't an empty slot hasItem = true; - } else if(inventory.getCombinedPoint(slotId) != null && inventory.hasItemInSlot(inventory.getCombinedPoint(slotId).getEquipPointId())){ + } else if(inventory.getCombinedPoint(slotId) != null && inventory.hasItemInSlot(inventory.getCombinedPoint(slotId).getEquipPointId()) && inventory.getItemSlot(inventory.getCombinedPoint(slotId).getEquipPointId()) != Globals.draggedItem){ Entity currentItem = inventory.getItemSlot(inventory.getCombinedPoint(slotId).getEquipPointId()); //get texture path from item texturePath = ItemUtils.getItemIcon(currentItem); @@ -124,6 +117,10 @@ public class EquipmentInventoryPanel { ImagePanel panel = ImagePanel.createImagePanel(texturePath); panel.setWidth(50); panel.setHeight(50); + panel.setMarginBottom(5); + panel.setMarginLeft(15); + panel.setMarginRight(15); + panel.setMarginTop(15); if(endAlign){ panel.setAlignSelf(YogaAlignment.End); } @@ -139,16 +136,7 @@ public class EquipmentInventoryPanel { container.removeChild(panel); WindowUtils.pushItemIconToItemWindow(panel); panel.setAbsolutePosition(true); - //add a dummy icon in place of the existing one - { - dummyPanel = ImagePanel.createImagePanel("Textures/ui/uiFrame1.png"); - dummyPanel.setWidth(50); - dummyPanel.setHeight(50); - if(endAlign){ - dummyPanel.setAlignSelf(YogaAlignment.End); - } - container.addChild(dummyPanel); - } + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); //play sound effect if(Globals.virtualAudioSourceManager != null){ Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false); @@ -169,21 +157,20 @@ public class EquipmentInventoryPanel { container.removeChild(panel); } Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY()); - colContainer.addChild(panel); panel.setAbsolutePosition(false); } - //dummy panel handling - destroyDummyPanel(); 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; + if(Globals.dragSourceInventory instanceof RelationalInventoryState){ + Entity item = Globals.draggedItem; + if(ItemUtils.getContainingParent(item) != Globals.playerEntity){ + throw new UnsupportedOperationException("Unimplemented!"); + } + } else if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){ Entity item = Globals.draggedItem; if(inventory.canEquipItemToSlot(item, slots.get(itemId))){ //fire equip event to equip state @@ -203,41 +190,26 @@ public class EquipmentInventoryPanel { Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); } } - //update ui - Globals.dragSourceInventory = null; - Globals.draggedItem = null; - //clear item container ui - WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //rerender both inventories - //re-render inventory - WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(inventory)); - //re-render inventory - WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); } - //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 + //update ui + Globals.dragSourceInventory = null; + Globals.draggedItem = null; + //clear item container ui + WindowUtils.cleanItemDraggingWindow(); + //rerender inventories + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); return false; }}); } colContainer.addChild(panel); //create the slot text - Label slotText = new Label(0.7f); - slotText.setText(slots.get(i)); - colContainer.addChild(slotText); + Label slotLabel = Label.createLabel(slots.get(i)); + slotLabel.setMarginBottom(5); + slotLabel.setMarginLeft(15); + slotLabel.setMarginRight(15); + slotLabel.setMarginTop(5); + colContainer.addChild(slotLabel); } } Div columnContainer = Div.createRow(leftSlots,rightSlots); @@ -249,16 +221,5 @@ public class EquipmentInventoryPanel { return div; } - /** - * Destroys the dummy panel - */ - public static void destroyDummyPanel(){ - if(dummyPanel != null && dummyPanel.getParent() != null){ - ContainerElement container = (ContainerElement)dummyPanel.getParent(); - container.removeChild(dummyPanel); - dummyPanel.destroy(); - dummyPanel = null; - } - } } diff --git a/src/main/java/electrosphere/renderer/ui/components/NaturalInventoryPanel.java b/src/main/java/electrosphere/renderer/ui/components/NaturalInventoryPanel.java index 1dc0e9f5..11c75ffb 100644 --- a/src/main/java/electrosphere/renderer/ui/components/NaturalInventoryPanel.java +++ b/src/main/java/electrosphere/renderer/ui/components/NaturalInventoryPanel.java @@ -12,12 +12,13 @@ import electrosphere.entity.types.item.ItemUtils; import electrosphere.logger.LoggerInterface; import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowUtils; -import electrosphere.menu.ingame.MenuGeneratorsInventory; import electrosphere.renderer.ui.elements.Div; import electrosphere.renderer.ui.elements.ImagePanel; import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elementtypes.ClickableElement.ClickEventCallback; +import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment; import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaFlexDirection; +import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification; import electrosphere.renderer.ui.elementtypes.ContainerElement; import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback; import electrosphere.renderer.ui.elementtypes.Element; @@ -29,11 +30,6 @@ import electrosphere.renderer.ui.events.DragEvent; */ public class NaturalInventoryPanel { - /** - * The dummy panel - */ - static ImagePanel dummyPanel = null; - /** * Creates the natural inventory panel * @param entity The entity who has the inventory @@ -44,13 +40,17 @@ public class NaturalInventoryPanel { Div div = Div.createDiv(); + div.setJustifyContent(YogaJustification.Center); + div.setMarginBottom(25); + div.setMarginLeft(25); + div.setMarginRight(25); + div.setMarginTop(25); div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){ LoggerInterface.loggerUI.INFO("Natural inventory received drag release 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); @@ -65,24 +65,15 @@ public class NaturalInventoryPanel { } //clear item container ui WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //rerender both inventories //re-render inventory - WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); - //re-render inventory - WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); } - } else { - //clear ui - WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //re-render inventory - WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); } - return false; } + //clear ui + WindowUtils.cleanItemDraggingWindow(); + //re-render inventory + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); return true; }}); @@ -93,7 +84,9 @@ public class NaturalInventoryPanel { //label 1 (inventory) - div.addChild(Label.createLabel("INVENTORY")); + Label menuTitle = Label.createLabel("INVENTORY"); + menuTitle.setMarginBottom(10); + div.addChild(menuTitle); { //contains all the item panels @@ -103,7 +96,7 @@ public class NaturalInventoryPanel { for(int i = 0; i < inventory.getCapacity(); i++){ String texturePath = "Textures/ui/uiFrame1.png"; boolean hasItem = false; - if(i < inventory.getItems().size()){ + if(i < inventory.getItems().size() && inventory.getItems().get(i) != Globals.draggedItem){ Entity currentItem = inventory.getItems().get(i); //get texture path from item texturePath = ItemUtils.getItemIcon(currentItem); @@ -118,9 +111,13 @@ public class NaturalInventoryPanel { ImagePanel panel = ImagePanel.createImagePanel(texturePath); panel.setMinWidth(panelWidth); panel.setMinHeight(panelHeight); - panel.setMarginRight(10); - panel.setMarginBottom(10); - if(hasItem == true){ + panel.setMarginRight(15); + panel.setMarginBottom(15); + panel.setMarginLeft(15); + panel.setMarginTop(15); + panel.setAlignSelf(YogaAlignment.Start); + panel.setAbsolutePosition(false); + if(hasItem == true && inventory.getItems().get(i) != Globals.draggedItem){ int itemId = i; panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){ // System.out.println("Drag start"); @@ -133,13 +130,7 @@ public class NaturalInventoryPanel { panel.setAbsolutePosition(true); panel.setPositionX(panel.getAbsoluteX()); panel.setPositionY(panel.getAbsoluteY()); - //add a dummy icon in place of the existing one - dummyPanel = ImagePanel.createImagePanel("Textures/ui/uiFrame1.png"); - dummyPanel.setMinWidth(panelWidth); - dummyPanel.setMinHeight(panelHeight); - dummyPanel.setMarginRight(10); - dummyPanel.setMarginBottom(10); - panelContainer.addChild(dummyPanel); + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); //play sound effect if(Globals.virtualAudioSourceManager != null){ Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false); @@ -159,52 +150,33 @@ public class NaturalInventoryPanel { ContainerElement container = (ContainerElement)panel.getParent(); container.removeChild(panel); } - div.addChild(panel); + panel.setAbsolutePosition(false); Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY()); } - //dummy panel handling - destroyDummyPanel(); 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; if(ClientEquipState.hasEquipState(entity) && InventoryUtils.hasEquipInventory(entity)){ RelationalInventoryState equipInventory = InventoryUtils.getEquipInventory(entity); ClientEquipState equipState = ClientEquipState.getEquipState(entity); equipState.commandAttemptUnequip(equipInventory.getItemSlot(item)); } - //update ui - // Globals.dragSourceInventory = null; - // Globals.draggedItem = null; - //clear item container ui - WindowUtils.cleanItemDraggingWindow(); - //dummy panel handling - destroyDummyPanel(); - //rerender both inventories - //re-render inventory - WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(sourceInventory)); - //re-render inventory - WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); - //play sound effect - if(Globals.virtualAudioSourceManager != null){ - Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); + } else if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){ + Entity item = Globals.draggedItem; + if(ItemUtils.getContainingParent(item) != Globals.playerEntity){ + throw new UnsupportedOperationException("Unimplemented!"); } } - //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"); + //update ui + Globals.dragSourceInventory = null; + Globals.draggedItem = null; + //clear item container ui + WindowUtils.cleanItemDraggingWindow(); + //rerender inventories + WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); return false; }}); } @@ -215,16 +187,4 @@ public class NaturalInventoryPanel { return div; } - /** - * Destroys the dummy panel - */ - public static void destroyDummyPanel(){ - if(dummyPanel != null && dummyPanel.getParent() != null){ - ContainerElement container = (ContainerElement)dummyPanel.getParent(); - container.removeChild(dummyPanel); - dummyPanel.destroy(); - dummyPanel = null; - } - } - } diff --git a/src/main/java/electrosphere/renderer/ui/components/PlayerInventoryWindow.java b/src/main/java/electrosphere/renderer/ui/components/PlayerInventoryWindow.java index 31e7c650..690dfb6f 100644 --- a/src/main/java/electrosphere/renderer/ui/components/PlayerInventoryWindow.java +++ b/src/main/java/electrosphere/renderer/ui/components/PlayerInventoryWindow.java @@ -1,12 +1,17 @@ package electrosphere.renderer.ui.components; +import electrosphere.controls.ControlHandler.ControlsState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.entity.Entity; import electrosphere.entity.state.inventory.InventoryUtils; +import electrosphere.menu.WindowStrings; +import electrosphere.menu.WindowUtils; import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment; import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification; +import electrosphere.renderer.ui.elementtypes.NavigableElement.NavigationEventCallback; +import electrosphere.renderer.ui.events.NavigationEvent; /** * The player's inventory @@ -37,6 +42,23 @@ public class PlayerInventoryWindow { rVal.setParentAlignItem(YogaAlignment.Center); rVal.setParentJustifyContent(YogaJustification.Center); + rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){ + WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER), false); + Globals.elementService.unregisterWindow(WindowStrings.WINDOW_CHARACTER); + if(Globals.cameraHandler.getTrackPlayerEntity()){ + Globals.controlHandler.hintUpdateControlState(ControlsState.MAIN_GAME); + } else { + Globals.controlHandler.hintUpdateControlState(ControlsState.IN_GAME_FREE_CAMERA); + } + Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false); + return false; + }}); + + + // + //contents + // + if(InventoryUtils.hasEquipInventory(entity)){ rVal.addChild(EquipmentInventoryPanel.createEquipmentInventoryPanel(entity)); } @@ -45,6 +67,10 @@ public class PlayerInventoryWindow { rVal.addChild(NaturalInventoryPanel.createNaturalInventoryPanel(entity)); } + // + //Final setup + // + Globals.signalSystem.post(SignalType.YOGA_APPLY, rVal); diff --git a/src/main/java/electrosphere/renderer/ui/elements/Button.java b/src/main/java/electrosphere/renderer/ui/elements/Button.java index 8c7f5969..8e0e88a3 100644 --- a/src/main/java/electrosphere/renderer/ui/elements/Button.java +++ b/src/main/java/electrosphere/renderer/ui/elements/Button.java @@ -52,7 +52,7 @@ public class Button extends StandardContainerElement implements DrawableElement, */ public static Button createButton(String text, ClickableElement.ClickEventCallback callback){ Button rVal = new Button(); - Label rValLabel = new Label(1.0f); + Label rValLabel = Label.createLabel(text); rValLabel.setText(text); rVal.addChild(rValLabel); rVal.setOnClick(callback); @@ -68,7 +68,7 @@ public class Button extends StandardContainerElement implements DrawableElement, */ public static Button createButton(String text, Runnable callback){ Button rVal = new Button(); - Label rValLabel = new Label(1.0f); + Label rValLabel = Label.createLabel(text); rValLabel.setText(text); rVal.addChild(rValLabel); rVal.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){ diff --git a/src/main/java/electrosphere/renderer/ui/elements/Label.java b/src/main/java/electrosphere/renderer/ui/elements/Label.java index 82c5d529..10c4c01d 100644 --- a/src/main/java/electrosphere/renderer/ui/elements/Label.java +++ b/src/main/java/electrosphere/renderer/ui/elements/Label.java @@ -47,6 +47,7 @@ public class Label extends StandardContainerElement implements DrawableElement { * Simplified constructor * @param fontSize the size of the font (default is 1.0f) */ + @Deprecated public Label(float fontSize){ super(); this.font = Globals.fontManager.getFont("default"); @@ -61,6 +62,7 @@ public class Label extends StandardContainerElement implements DrawableElement { * @param y the y position * @param fontSize the font size (default is 1.0f) */ + @Deprecated public Label(int x, int y, float fontSize){ super(); this.setPositionX(x);