Compare commits

..

2 Commits

Author SHA1 Message Date
austin
e6a30cb09b inventory menu visual updates
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
2024-09-17 18:10:33 -04:00
austin
1e13c55f1f inventory menu fixes and work 2024-09-17 17:22:38 -04:00
10 changed files with 230 additions and 805 deletions

View File

@ -779,6 +779,7 @@ Fix equipped item packet not being sent to creature's player
Component-ify natural and equip inventory menus Component-ify natural and equip inventory menus
Post Processing Pipeline w/ blur Post Processing Pipeline w/ blur
Blur on open inventory/main menu in game Blur on open inventory/main menu in game
Remove legacy UI handling of positioning -- entirely reliant on yoga now
(09/17/2024) (09/17/2024)
Framebuffer position drilling Framebuffer position drilling

View File

@ -101,7 +101,6 @@ import electrosphere.menu.WindowStrings;
import electrosphere.menu.WindowUtils; import electrosphere.menu.WindowUtils;
import electrosphere.menu.debug.ImGuiWindowMacros; import electrosphere.menu.debug.ImGuiWindowMacros;
import electrosphere.menu.ingame.MenuGeneratorsInGame; import electrosphere.menu.ingame.MenuGeneratorsInGame;
import electrosphere.menu.ingame.MenuGeneratorsInventory;
import electrosphere.renderer.ui.components.PlayerInventoryWindow; import electrosphere.renderer.ui.components.PlayerInventoryWindow;
import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.elements.Window;
import electrosphere.renderer.ui.events.ClickEvent; 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_INTERACT = "interact";
public static final String INPUT_CODE_DROP = "drop"; public static final String INPUT_CODE_DROP = "drop";
public static final String INPUT_CODE_INVENTORY_OPEN = "inventoryOpen"; 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 ITEM_SECONDARY = "actionItemSecondary";
public static final String INPUT_CODE_PLACE_TERRAIN = "placeTerrain"; public static final String INPUT_CODE_PLACE_TERRAIN = "placeTerrain";
public static final String INPUT_CODE_REMOVE_TERRAIN = "removeTerrain"; 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_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_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_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")); 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)); mainGameControlList.add(controls.get(INPUT_CODE_INVENTORY_OPEN));
inventoryControlList.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(){ 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 //create window
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(Globals.playerEntity);
Window mainMenuWindow = PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity); Window mainMenuWindow = PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity);
//register //register
Globals.elementService.registerWindow(WindowUtils.getInventoryWindowID(inventory.getId()), mainMenuWindow); Globals.elementService.registerWindow(WindowStrings.WINDOW_CHARACTER, mainMenuWindow);
//make visible //make visible
WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowUtils.getInventoryWindowID(inventory.getId())), true); WindowUtils.recursiveSetVisible(WindowStrings.WINDOW_CHARACTER, true);
//controls //controls
Globals.controlHandler.hintUpdateControlState(ControlsState.INVENTORY); Globals.controlHandler.hintUpdateControlState(ControlsState.INVENTORY);
//play sound effect //play sound effect
@ -997,42 +993,16 @@ public class ControlHandler {
Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(true); Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(true);
// //
Globals.openInventoriesCount++; Globals.openInventoriesCount++;
} else if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())) != null){ } else if(InventoryUtils.hasNaturalInventory(Globals.playerEntity) && Globals.elementService.getWindow(WindowStrings.WINDOW_CHARACTER) != null){
Globals.elementService.closeWindow(WindowUtils.getInventoryWindowID(InventoryUtils.getNaturalInventory(Globals.playerEntity).getId())); Globals.elementService.closeWindow(WindowStrings.WINDOW_CHARACTER);
Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false); Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false);
} }
}}); }});
controls.get(INPUT_CODE_INVENTORY_OPEN).setRepeatTimeout(0.5f * Main.targetFrameRate); controls.get(INPUT_CODE_INVENTORY_OPEN).setRepeatTimeout(0.5f * Main.targetFrameRate);
/* /**
Open character * Places terrain
*/ */
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);
mainGameControlList.add(controls.get(INPUT_CODE_PLACE_TERRAIN)); mainGameControlList.add(controls.get(INPUT_CODE_PLACE_TERRAIN));
controls.get(INPUT_CODE_PLACE_TERRAIN).setOnPress(new ControlMethod(){public void execute(){ controls.get(INPUT_CODE_PLACE_TERRAIN).setOnPress(new ControlMethod(){public void execute(){
CollisionEngine collisionEngine = Globals.clientSceneWrapper.getCollisionEngine(); CollisionEngine collisionEngine = Globals.clientSceneWrapper.getCollisionEngine();
@ -1423,19 +1393,6 @@ public class ControlHandler {
* Sets the inventory control callbacks * Sets the inventory control callbacks
*/ */
void setInventoryControls(){ 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 Item manipulation
*/ */

View File

@ -2,11 +2,9 @@ package electrosphere.menu;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.engine.signal.Signal.SignalType; 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.ingame.MenuGeneratorsInventory;
import electrosphere.menu.mainmenu.MenuGeneratorsTitleMenu; import electrosphere.menu.mainmenu.MenuGeneratorsTitleMenu;
import electrosphere.renderer.ui.components.PlayerInventoryWindow;
import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elements.Label;
import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.elements.Window;
import electrosphere.renderer.ui.elementtypes.ContainerElement; import electrosphere.renderer.ui.elementtypes.ContainerElement;
@ -113,6 +111,7 @@ public class WindowUtils {
* @param id the id * @param id the id
* @return the window string for said inventory window * @return the window string for said inventory window
*/ */
@Deprecated
public static String getInventoryWindowID(int id){ public static String getInventoryWindowID(int id){
return "INVENTORY-" + id; return "INVENTORY-" + id;
} }
@ -166,20 +165,9 @@ public class WindowUtils {
public static void attemptRedrawInventoryWindows(){ public static void attemptRedrawInventoryWindows(){
//make sure we're client and the player entity exists //make sure we're client and the player entity exists
if(Globals.RUN_CLIENT && Globals.playerEntity != null){ if(Globals.RUN_CLIENT && Globals.playerEntity != null){
//check equip inventory if(Globals.elementService.containsWindow(WindowStrings.WINDOW_CHARACTER)){
if(InventoryUtils.hasEquipInventory(Globals.playerEntity) && Globals.elementService.containsWindow(WindowStrings.WINDOW_CHARACTER)){
//redraw if necessary //redraw if necessary
RelationalInventoryState inventory = InventoryUtils.getEquipInventory(Globals.playerEntity); WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(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));
}
} }
} }
} }

View File

@ -1,462 +1,19 @@
package electrosphere.menu.ingame; 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.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.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.logger.LoggerInterface;
import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowStrings;
import electrosphere.menu.WindowUtils; import electrosphere.menu.WindowUtils;
import electrosphere.renderer.ui.components.PlayerInventoryWindow;
import electrosphere.renderer.ui.elements.Div; 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.elements.Window;
import electrosphere.renderer.ui.elementtypes.Element; 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.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.DragEvent;
import electrosphere.renderer.ui.events.NavigationEvent;
public class MenuGeneratorsInventory { 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<String> 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(){ public static Element worldItemDropCaptureWindow(){
Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT,true); 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){ div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
LoggerInterface.loggerUI.INFO("World item drop capture window received drag release"); LoggerInterface.loggerUI.INFO("World item drop capture window received drag release");
if(Globals.draggedItem != null){ if(Globals.draggedItem != null){
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
UnrelationalInventoryState inventory = (UnrelationalInventoryState) Globals.dragSourceInventory;
//drop item //drop item
InventoryUtils.clientAttemptEjectItem(Globals.playerEntity,Globals.draggedItem); 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 //clear ui
WindowUtils.cleanItemDraggingWindow(); WindowUtils.cleanItemDraggingWindow();
String sourceWindowId = WindowStrings.WINDOW_CHARACTER; String sourceWindowId = WindowStrings.WINDOW_CHARACTER;
WindowUtils.replaceWindow(sourceWindowId,MenuGeneratorsInventory.createCharacterInventoryMenu(inventory)); WindowUtils.replaceWindow(sourceWindowId,PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
//null globals //null globals
Globals.dragSourceInventory = null; Globals.dragSourceInventory = null;
Globals.draggedItem = null; Globals.draggedItem = null;
return false; return false;
} // }
} }
return true; return true;
}}); }});
@ -504,16 +43,4 @@ public class MenuGeneratorsInventory {
return rVal; 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;
}
}
} }

View File

@ -75,8 +75,7 @@ public class CharacterCustomizer {
for(VisualAttribute attribute : selectedRaceType.getVisualAttributes()){ for(VisualAttribute attribute : selectedRaceType.getVisualAttributes()){
if(attribute.getType().equals(VisualAttribute.TYPE_BONE)){ if(attribute.getType().equals(VisualAttribute.TYPE_BONE)){
//add label for slider //add label for slider
Label sliderName = new Label(0.6f); Label sliderName = Label.createLabel(attribute.getAttributeId());
sliderName.setText(attribute.getAttributeId());
sliderName.setMinWidth(200); sliderName.setMinWidth(200);
//add a slider //add a slider
Slider boneSlider = Slider.createSlider((ValueChangeEvent event) -> { Slider boneSlider = Slider.createSlider((ValueChangeEvent event) -> {
@ -108,8 +107,7 @@ public class CharacterCustomizer {
scrollable.addChild(Div.createRow(sliderName,boneSlider)); scrollable.addChild(Div.createRow(sliderName,boneSlider));
} else if(attribute.getType().equals(VisualAttribute.TYPE_REMESH)){ } else if(attribute.getType().equals(VisualAttribute.TYPE_REMESH)){
//add label for carousel //add label for carousel
Label scrollableName = new Label(0.6f); Label scrollableName = Label.createLabel(attribute.getAttributeId());
scrollableName.setText(attribute.getAttributeId());
scrollableName.setMinWidth(200); scrollableName.setMinWidth(200);
//add a carousel //add a carousel
StringCarousel variantCarousel = StringCarousel.create( StringCarousel variantCarousel = StringCarousel.create(

View File

@ -4,6 +4,7 @@ import java.util.List;
import electrosphere.audio.VirtualAudioSourceManager.VirtualAudioSourceType; import electrosphere.audio.VirtualAudioSourceManager.VirtualAudioSourceType;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.engine.signal.Signal.SignalType;
import electrosphere.entity.Entity; import electrosphere.entity.Entity;
import electrosphere.entity.state.equip.ClientEquipState; import electrosphere.entity.state.equip.ClientEquipState;
import electrosphere.entity.state.inventory.InventoryUtils; import electrosphere.entity.state.inventory.InventoryUtils;
@ -14,11 +15,12 @@ import electrosphere.game.data.creature.type.equip.EquipPoint;
import electrosphere.logger.LoggerInterface; import electrosphere.logger.LoggerInterface;
import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowStrings;
import electrosphere.menu.WindowUtils; import electrosphere.menu.WindowUtils;
import electrosphere.menu.ingame.MenuGeneratorsInventory;
import electrosphere.renderer.ui.elements.Div; import electrosphere.renderer.ui.elements.Div;
import electrosphere.renderer.ui.elements.ImagePanel; import electrosphere.renderer.ui.elements.ImagePanel;
import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elements.Label;
import electrosphere.renderer.ui.elementtypes.ClickableElement.ClickEventCallback; 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.ContainerElement;
import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback; import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback;
import electrosphere.renderer.ui.elementtypes.Element; import electrosphere.renderer.ui.elementtypes.Element;
@ -30,10 +32,6 @@ import electrosphere.renderer.ui.events.DragEvent;
*/ */
public class EquipmentInventoryPanel { public class EquipmentInventoryPanel {
/**
* The dummy panel
*/
static ImagePanel dummyPanel = null;
/** /**
@ -45,25 +43,22 @@ public class EquipmentInventoryPanel {
RelationalInventoryState inventory = InventoryUtils.getEquipInventory(entity); RelationalInventoryState inventory = InventoryUtils.getEquipInventory(entity);
Div div = Div.createDiv(); 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){ div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
LoggerInterface.loggerUI.INFO("Character inventory received drag release event"); LoggerInterface.loggerUI.INFO("Character inventory received drag release event");
if(Globals.draggedItem != null){ if(Globals.draggedItem != null){
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){ //null out global state
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState)Globals.dragSourceInventory; Globals.dragSourceInventory = null;
//null out global state Globals.draggedItem = null;
Globals.dragSourceInventory = null; //clear item container ui
Globals.draggedItem = null; WindowUtils.cleanItemDraggingWindow();
//clear item container ui //re-render inventory
WindowUtils.cleanItemDraggingWindow(); WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
//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 false;
} }
return true; return true;
@ -76,123 +71,124 @@ public class EquipmentInventoryPanel {
//label 1 (inventory) //label 1 (inventory)
Label inventoryLabel = new Label(1.0f); Label inventoryLabel = Label.createLabel("CHARACTER");
inventoryLabel.setText("CHARACTER"); inventoryLabel.setMarginBottom(10);
div.addChild(inventoryLabel); div.addChild(inventoryLabel);
// int columns = 8;
// int columnWidth = 60;
// int rowHeight = 60;
int slotSpacing = 30;
List<String> slots = inventory.getSlots(); {
int numSlots = slots.size(); Div leftSlots = Div.createCol();
EquipPoint equipPoint = null; leftSlots.setFlexGrow(1);
// int numRows = (numSlots / 2) + (numSlots % 2 == 1 ? 1 : 0); Div rightSlots = Div.createCol();
rightSlots.setFlexGrow(1);
rightSlots.setAlignItems(YogaAlignment.End);
int incrementer = 0; List<String> slots = inventory.getSlots();
for(int i = 0; i < numSlots; i++){ EquipPoint equipPoint = null;
String texturePath = "Textures/ui/uiFrame1.png";
boolean hasItem = false; for(int i = 0; i < slots.size(); i++){
String slotId = slots.get(i); Div colContainer = i % 2 == 0 ? leftSlots : rightSlots;
equipPoint = inventory.getEquipPointFromSlot(slotId); boolean endAlign = i % 2 == 1;
if(!equipPoint.isCombinedPoint()){ String texturePath = "Textures/ui/uiFrame1.png";
if(inventory.getItemSlot(slotId) != null){ boolean hasItem = false;
Entity currentItem = inventory.getItemSlot(slotId); String slotId = slots.get(i);
//get texture path from item equipPoint = inventory.getEquipPointFromSlot(slotId);
texturePath = ItemUtils.getItemIcon(currentItem); if(!equipPoint.isCombinedPoint()){
//flag that this isn't an empty slot if(inventory.getItemSlot(slotId) != null && inventory.getItemSlot(slotId) != Globals.draggedItem){
hasItem = true; Entity currentItem = inventory.getItemSlot(slotId);
} else if(inventory.getCombinedPoint(slotId) != null && inventory.hasItemInSlot(inventory.getCombinedPoint(slotId).getEquipPointId())){ //get texture path from item
Entity currentItem = inventory.getItemSlot(inventory.getCombinedPoint(slotId).getEquipPointId()); texturePath = ItemUtils.getItemIcon(currentItem);
//get texture path from item //flag that this isn't an empty slot
texturePath = ItemUtils.getItemIcon(currentItem); hasItem = true;
//flag that this isn't an empty slot } else if(inventory.getCombinedPoint(slotId) != null && inventory.hasItemInSlot(inventory.getCombinedPoint(slotId).getEquipPointId()) && inventory.getItemSlot(inventory.getCombinedPoint(slotId).getEquipPointId()) != Globals.draggedItem){
hasItem = true; Entity currentItem = inventory.getItemSlot(inventory.getCombinedPoint(slotId).getEquipPointId());
equipPoint = inventory.getCombinedPoint(slotId); //get texture path from item
slotId = equipPoint.getEquipPointId(); texturePath = ItemUtils.getItemIcon(currentItem);
} //flag that this isn't an empty slot
if(!Globals.assetManager.hasLoadedTexture(texturePath)){ hasItem = true;
Globals.assetManager.addTexturePathtoQueue(texturePath); equipPoint = inventory.getCombinedPoint(slotId);
} slotId = equipPoint.getEquipPointId();
int panelWidth = 50; }
int panelHeight = 50; if(!Globals.assetManager.hasLoadedTexture(texturePath)){
int posX = 20; Globals.assetManager.addTexturePathtoQueue(texturePath);
if((incrementer % 2) == 1){ }
posX = posX + 400; int panelWidth = 50;
} int panelHeight = 50;
int posXf = posX; ImagePanel panel = ImagePanel.createImagePanel(texturePath);
int posY = 60 + (i / 2 * (panelHeight + slotSpacing)); panel.setWidth(50);
int posYf = posY; panel.setHeight(50);
int itemPosX = posX; panel.setMarginBottom(5);
int itemPosY = posY; panel.setMarginLeft(15);
ImagePanel panel = ImagePanel.createImagePanelAbsolute(posX,posY,panelWidth,panelHeight,texturePath); panel.setMarginRight(15);
if(hasItem == true){ panel.setMarginTop(15);
//literally just here to get around finality of variable within callback if(endAlign){
String finalSlotId = slotId; panel.setAlignSelf(YogaAlignment.End);
panel.setOnDragStart(new DragEventCallback() { }
public boolean execute(DragEvent event){ if(hasItem == true){
LoggerInterface.loggerUI.DEBUG("Drag start"); //literally just here to get around finality of variable within callback
Globals.dragSourceInventory = inventory; String finalSlotId = slotId;
Globals.draggedItem = inventory.getItemSlot(finalSlotId); panel.setOnDragStart(new DragEventCallback() {
ContainerElement container = (ContainerElement)panel.getParent(); public boolean execute(DragEvent event){
container.removeChild(panel); LoggerInterface.loggerUI.DEBUG("Drag start");
WindowUtils.pushItemIconToItemWindow(panel); Globals.dragSourceInventory = inventory;
//add a dummy icon in place of the existing one Globals.draggedItem = inventory.getItemSlot(finalSlotId);
dummyPanel = ImagePanel.createImagePanelAbsolute(posXf,posYf,panelWidth,panelHeight,"Textures/ui/uiFrame1.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(); ContainerElement container = (ContainerElement)panel.getParent();
container.removeChild(panel); container.removeChild(panel);
} WindowUtils.pushItemIconToItemWindow(panel);
Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY()); panel.setAbsolutePosition(true);
div.addChild(panel); WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
}
//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 //play sound effect
if(Globals.virtualAudioSourceManager != null){ if(Globals.virtualAudioSourceManager != null){
Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false);
} }
} else if(inventory.canEquipItemToCombinedSlot(item, slots.get(itemId))){ return false;
EquipPoint combinedPoint = inventory.getCombinedPoint(slots.get(itemId)); }});
//fire equip event to equip state panel.setOnDrag(new DragEventCallback() {public boolean execute(DragEvent event){
ClientEquipState equipState = ClientEquipState.getEquipState(Globals.playerEntity); // System.out.println("Drag");
equipState.commandAttemptEquip(item,combinedPoint); panel.setPositionX(event.getCurrentX() - panelWidth / 2);
//play sound effect panel.setPositionY(event.getCurrentY() - panelHeight / 2);
if(Globals.virtualAudioSourceManager != null){ Globals.signalSystem.post(SignalType.YOGA_APPLY, Globals.elementService.getWindow(WindowStrings.WINDOW_ITEM_DRAG_CONTAINER));
Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventorySlotItem.ogg", VirtualAudioSourceType.UI, false); return false;
}});
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
if(panel.getParent() != colContainer){
if(panel.getParent() != null){
ContainerElement container = (ContainerElement)panel.getParent();
container.removeChild(panel);
}
Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY());
panel.setAbsolutePosition(false);
}
return false;
}});
} else {
int itemId = i;
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
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
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 //update ui
@ -200,62 +196,30 @@ public class EquipmentInventoryPanel {
Globals.draggedItem = null; Globals.draggedItem = null;
//clear item container ui //clear item container ui
WindowUtils.cleanItemDraggingWindow(); WindowUtils.cleanItemDraggingWindow();
//dummy panel handling //rerender inventories
destroyDummyPanel(); WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
//rerender both inventories return false;
//re-render inventory }});
WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, MenuGeneratorsInventory.createCharacterInventoryMenu(inventory)); }
//re-render inventory colContainer.addChild(panel);
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
return false;
}});
}
div.addChild(panel);
//create the slot text //create the slot text
posX = 80; Label slotLabel = Label.createLabel(slots.get(i));
if((incrementer % 2) == 1){ slotLabel.setMarginBottom(5);
posX = posX + 190; slotLabel.setMarginLeft(15);
slotLabel.setMarginRight(15);
slotLabel.setMarginTop(5);
colContainer.addChild(slotLabel);
} }
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++;
} }
Div columnContainer = Div.createRow(leftSlots,rightSlots);
columnContainer.setAlignItems(YogaAlignment.Between);
columnContainer.setFlexGrow(1);
div.addChild(columnContainer);
} }
return div; 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;
}
}
} }

View File

@ -2,6 +2,7 @@ package electrosphere.renderer.ui.components;
import electrosphere.audio.VirtualAudioSourceManager.VirtualAudioSourceType; import electrosphere.audio.VirtualAudioSourceManager.VirtualAudioSourceType;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.engine.signal.Signal.SignalType;
import electrosphere.entity.Entity; import electrosphere.entity.Entity;
import electrosphere.entity.state.equip.ClientEquipState; import electrosphere.entity.state.equip.ClientEquipState;
import electrosphere.entity.state.inventory.InventoryUtils; import electrosphere.entity.state.inventory.InventoryUtils;
@ -11,12 +12,13 @@ import electrosphere.entity.types.item.ItemUtils;
import electrosphere.logger.LoggerInterface; import electrosphere.logger.LoggerInterface;
import electrosphere.menu.WindowStrings; import electrosphere.menu.WindowStrings;
import electrosphere.menu.WindowUtils; import electrosphere.menu.WindowUtils;
import electrosphere.menu.ingame.MenuGeneratorsInventory;
import electrosphere.renderer.ui.elements.Div; import electrosphere.renderer.ui.elements.Div;
import electrosphere.renderer.ui.elements.ImagePanel; import electrosphere.renderer.ui.elements.ImagePanel;
import electrosphere.renderer.ui.elements.Label; import electrosphere.renderer.ui.elements.Label;
import electrosphere.renderer.ui.elementtypes.ClickableElement.ClickEventCallback; 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.YogaFlexDirection;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification;
import electrosphere.renderer.ui.elementtypes.ContainerElement; import electrosphere.renderer.ui.elementtypes.ContainerElement;
import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback; import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback;
import electrosphere.renderer.ui.elementtypes.Element; import electrosphere.renderer.ui.elementtypes.Element;
@ -28,11 +30,6 @@ import electrosphere.renderer.ui.events.DragEvent;
*/ */
public class NaturalInventoryPanel { public class NaturalInventoryPanel {
/**
* The dummy panel
*/
static ImagePanel dummyPanel = null;
/** /**
* Creates the natural inventory panel * Creates the natural inventory panel
* @param entity The entity who has the inventory * @param entity The entity who has the inventory
@ -43,13 +40,17 @@ public class NaturalInventoryPanel {
Div div = Div.createDiv(); 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){ div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
LoggerInterface.loggerUI.INFO("Natural inventory received drag release event"); LoggerInterface.loggerUI.INFO("Natural inventory received drag release event");
if(Globals.draggedItem != null){ if(Globals.draggedItem != null){
if(Globals.dragSourceInventory != inventory){ if(Globals.dragSourceInventory != inventory){
if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){ if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
UnrelationalInventoryState sourceInventory = (UnrelationalInventoryState)Globals.dragSourceInventory;
//transfer item //transfer item
// sourceInventory.removeItem(Globals.draggedItem); // sourceInventory.removeItem(Globals.draggedItem);
// inventory.addItem(Globals.draggedItem); // inventory.addItem(Globals.draggedItem);
@ -64,24 +65,15 @@ public class NaturalInventoryPanel {
} }
//clear item container ui //clear item container ui
WindowUtils.cleanItemDraggingWindow(); WindowUtils.cleanItemDraggingWindow();
//dummy panel handling
destroyDummyPanel();
//rerender both inventories
//re-render inventory //re-render inventory
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(inventory.getId()), PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity)); WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
//re-render inventory
WindowUtils.replaceWindow(WindowUtils.getInventoryWindowID(sourceInventory.getId()), 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; return true;
}}); }});
@ -92,7 +84,9 @@ public class NaturalInventoryPanel {
//label 1 (inventory) //label 1 (inventory)
div.addChild(Label.createLabel("INVENTORY")); Label menuTitle = Label.createLabel("INVENTORY");
menuTitle.setMarginBottom(10);
div.addChild(menuTitle);
{ {
//contains all the item panels //contains all the item panels
@ -102,7 +96,7 @@ public class NaturalInventoryPanel {
for(int i = 0; i < inventory.getCapacity(); i++){ for(int i = 0; i < inventory.getCapacity(); i++){
String texturePath = "Textures/ui/uiFrame1.png"; String texturePath = "Textures/ui/uiFrame1.png";
boolean hasItem = false; 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); Entity currentItem = inventory.getItems().get(i);
//get texture path from item //get texture path from item
texturePath = ItemUtils.getItemIcon(currentItem); texturePath = ItemUtils.getItemIcon(currentItem);
@ -117,9 +111,13 @@ public class NaturalInventoryPanel {
ImagePanel panel = ImagePanel.createImagePanel(texturePath); ImagePanel panel = ImagePanel.createImagePanel(texturePath);
panel.setMinWidth(panelWidth); panel.setMinWidth(panelWidth);
panel.setMinHeight(panelHeight); panel.setMinHeight(panelHeight);
panel.setMarginRight(10); panel.setMarginRight(15);
panel.setMarginBottom(10); panel.setMarginBottom(15);
if(hasItem == true){ 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; int itemId = i;
panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){ panel.setOnDragStart(new DragEventCallback() {public boolean execute(DragEvent event){
// System.out.println("Drag start"); // System.out.println("Drag start");
@ -132,13 +130,7 @@ public class NaturalInventoryPanel {
panel.setAbsolutePosition(true); panel.setAbsolutePosition(true);
panel.setPositionX(panel.getAbsoluteX()); panel.setPositionX(panel.getAbsoluteX());
panel.setPositionY(panel.getAbsoluteY()); panel.setPositionY(panel.getAbsoluteY());
//add a dummy icon in place of the existing one WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
dummyPanel = ImagePanel.createImagePanel("Textures/ui/uiFrame1.png");
dummyPanel.setMinWidth(panelWidth);
dummyPanel.setMinHeight(panelHeight);
dummyPanel.setMarginRight(10);
dummyPanel.setMarginBottom(10);
panelContainer.addChild(dummyPanel);
//play sound effect //play sound effect
if(Globals.virtualAudioSourceManager != null){ if(Globals.virtualAudioSourceManager != null){
Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false); Globals.virtualAudioSourceManager.createVirtualAudioSource("/Audio/inventoryGrabItem.ogg", VirtualAudioSourceType.UI, false);
@ -149,6 +141,7 @@ public class NaturalInventoryPanel {
// System.out.println("Drag"); // System.out.println("Drag");
panel.setPositionX(event.getCurrentX() - panelWidth / 2); panel.setPositionX(event.getCurrentX() - panelWidth / 2);
panel.setPositionY(event.getCurrentY() - panelHeight / 2); panel.setPositionY(event.getCurrentY() - panelHeight / 2);
Globals.signalSystem.post(SignalType.YOGA_APPLY, Globals.elementService.getWindow(WindowStrings.WINDOW_ITEM_DRAG_CONTAINER));
return false; return false;
}}); }});
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){ panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
@ -157,52 +150,33 @@ public class NaturalInventoryPanel {
ContainerElement container = (ContainerElement)panel.getParent(); ContainerElement container = (ContainerElement)panel.getParent();
container.removeChild(panel); container.removeChild(panel);
} }
div.addChild(panel); panel.setAbsolutePosition(false);
Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY()); Globals.elementService.fireEvent(event, event.getCurrentX(), event.getCurrentY());
} }
//dummy panel handling
destroyDummyPanel();
return false; return false;
}}); }});
} else { } else {
panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){ panel.setOnDragRelease(new DragEventCallback(){public boolean execute(DragEvent event){
if(Globals.dragSourceInventory instanceof RelationalInventoryState){ if(Globals.dragSourceInventory instanceof RelationalInventoryState){
RelationalInventoryState sourceInventory = (RelationalInventoryState) Globals.dragSourceInventory;
Entity item = Globals.draggedItem; Entity item = Globals.draggedItem;
if(ClientEquipState.hasEquipState(entity) && InventoryUtils.hasEquipInventory(entity)){ if(ClientEquipState.hasEquipState(entity) && InventoryUtils.hasEquipInventory(entity)){
RelationalInventoryState equipInventory = InventoryUtils.getEquipInventory(entity); RelationalInventoryState equipInventory = InventoryUtils.getEquipInventory(entity);
ClientEquipState equipState = ClientEquipState.getEquipState(entity); ClientEquipState equipState = ClientEquipState.getEquipState(entity);
equipState.commandAttemptUnequip(equipInventory.getItemSlot(item)); equipState.commandAttemptUnequip(equipInventory.getItemSlot(item));
} }
//update ui } else if(Globals.dragSourceInventory instanceof UnrelationalInventoryState){
// Globals.dragSourceInventory = null; Entity item = Globals.draggedItem;
// Globals.draggedItem = null; if(ItemUtils.getContainingParent(item) != Globals.playerEntity){
//clear item container ui throw new UnsupportedOperationException("Unimplemented!");
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);
} }
} }
//now the fun begins :) //update ui
//if transfer item Globals.dragSourceInventory = null;
// remove item from current inventory Globals.draggedItem = null;
// place item in new inventory //clear item container ui
// trigger recreation of the menu WindowUtils.cleanItemDraggingWindow();
//if drop item //rerender inventories
// remove item from current inventory WindowUtils.replaceWindow(WindowStrings.WINDOW_CHARACTER, PlayerInventoryWindow.createPlayerInventoryWindow(Globals.playerEntity));
// 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; return false;
}}); }});
} }
@ -213,16 +187,4 @@ public class NaturalInventoryPanel {
return div; 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;
}
}
} }

View File

@ -1,12 +1,17 @@
package electrosphere.renderer.ui.components; package electrosphere.renderer.ui.components;
import electrosphere.controls.ControlHandler.ControlsState;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.engine.signal.Signal.SignalType; import electrosphere.engine.signal.Signal.SignalType;
import electrosphere.entity.Entity; import electrosphere.entity.Entity;
import electrosphere.entity.state.inventory.InventoryUtils; import electrosphere.entity.state.inventory.InventoryUtils;
import electrosphere.menu.WindowStrings;
import electrosphere.menu.WindowUtils;
import electrosphere.renderer.ui.elements.Window; import electrosphere.renderer.ui.elements.Window;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment; import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification; import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification;
import electrosphere.renderer.ui.elementtypes.NavigableElement.NavigationEventCallback;
import electrosphere.renderer.ui.events.NavigationEvent;
/** /**
* The player's inventory * The player's inventory
@ -37,14 +42,35 @@ public class PlayerInventoryWindow {
rVal.setParentAlignItem(YogaAlignment.Center); rVal.setParentAlignItem(YogaAlignment.Center);
rVal.setParentJustifyContent(YogaJustification.Center); rVal.setParentJustifyContent(YogaJustification.Center);
if(InventoryUtils.hasNaturalInventory(entity)){ rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){
rVal.addChild(NaturalInventoryPanel.createNaturalInventoryPanel(entity)); 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)){ if(InventoryUtils.hasEquipInventory(entity)){
rVal.addChild(EquipmentInventoryPanel.createEquipmentInventoryPanel(entity)); rVal.addChild(EquipmentInventoryPanel.createEquipmentInventoryPanel(entity));
} }
if(InventoryUtils.hasNaturalInventory(entity)){
rVal.addChild(NaturalInventoryPanel.createNaturalInventoryPanel(entity));
}
//
//Final setup
//
Globals.signalSystem.post(SignalType.YOGA_APPLY, rVal); Globals.signalSystem.post(SignalType.YOGA_APPLY, rVal);

View File

@ -52,7 +52,7 @@ public class Button extends StandardContainerElement implements DrawableElement,
*/ */
public static Button createButton(String text, ClickableElement.ClickEventCallback callback){ public static Button createButton(String text, ClickableElement.ClickEventCallback callback){
Button rVal = new Button(); Button rVal = new Button();
Label rValLabel = new Label(1.0f); Label rValLabel = Label.createLabel(text);
rValLabel.setText(text); rValLabel.setText(text);
rVal.addChild(rValLabel); rVal.addChild(rValLabel);
rVal.setOnClick(callback); rVal.setOnClick(callback);
@ -68,7 +68,7 @@ public class Button extends StandardContainerElement implements DrawableElement,
*/ */
public static Button createButton(String text, Runnable callback){ public static Button createButton(String text, Runnable callback){
Button rVal = new Button(); Button rVal = new Button();
Label rValLabel = new Label(1.0f); Label rValLabel = Label.createLabel(text);
rValLabel.setText(text); rValLabel.setText(text);
rVal.addChild(rValLabel); rVal.addChild(rValLabel);
rVal.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){ rVal.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){

View File

@ -47,6 +47,7 @@ public class Label extends StandardContainerElement implements DrawableElement {
* Simplified constructor * Simplified constructor
* @param fontSize the size of the font (default is 1.0f) * @param fontSize the size of the font (default is 1.0f)
*/ */
@Deprecated
public Label(float fontSize){ public Label(float fontSize){
super(); super();
this.font = Globals.fontManager.getFont("default"); this.font = Globals.fontManager.getFont("default");
@ -61,6 +62,7 @@ public class Label extends StandardContainerElement implements DrawableElement {
* @param y the y position * @param y the y position
* @param fontSize the font size (default is 1.0f) * @param fontSize the font size (default is 1.0f)
*/ */
@Deprecated
public Label(int x, int y, float fontSize){ public Label(int x, int y, float fontSize){
super(); super();
this.setPositionX(x); this.setPositionX(x);