113 lines
4.2 KiB
Java
113 lines
4.2 KiB
Java
package electrosphere.menu;
|
|
|
|
import electrosphere.main.Globals;
|
|
import electrosphere.renderer.ui.ContainerElement;
|
|
import electrosphere.renderer.ui.DrawableElement;
|
|
import electrosphere.renderer.ui.Element;
|
|
import electrosphere.renderer.ui.Window;
|
|
import electrosphere.renderer.ui.elements.Label;
|
|
|
|
public class WindowUtils {
|
|
|
|
public static void replaceMainMenuContents(Element newMenu){
|
|
Element mainMenuEl = Globals.elementManager.getWindow(WindowStrings.WINDOW_MENU_MAIN);
|
|
if(mainMenuEl != null && mainMenuEl instanceof Window){
|
|
Window mainMenu = (Window) mainMenuEl;
|
|
//todo: destroy elements as well
|
|
mainMenu.getChildren().clear();
|
|
mainMenu.addChild(newMenu);
|
|
Globals.elementManager.focusFirstElement();
|
|
}
|
|
}
|
|
|
|
public static void recursiveSetVisible(Element topLevelMenu, boolean visible){
|
|
if(topLevelMenu instanceof DrawableElement){
|
|
((DrawableElement)topLevelMenu).setVisible(visible);
|
|
}
|
|
if(topLevelMenu instanceof ContainerElement){
|
|
for(Element child : ((ContainerElement)topLevelMenu).getChildren()){
|
|
recursiveSetVisible(child, visible);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static String getInventoryWindowID(int id){
|
|
return "INVENTORY-" + id;
|
|
}
|
|
|
|
public static void replaceWindowContents(String window, Element content){
|
|
Element mainMenuEl = Globals.elementManager.getWindow(window);
|
|
if(mainMenuEl != null && mainMenuEl instanceof Window){
|
|
Window mainMenu = (Window) mainMenuEl;
|
|
//todo: destroy elements as well
|
|
mainMenu.getChildren().clear();
|
|
mainMenu.addChild(content);
|
|
Globals.elementManager.focusFirstElement();
|
|
}
|
|
}
|
|
|
|
public static void pushItemIconToItemWindow(Element itemIcon){
|
|
Window targetWindow = (Window) Globals.elementManager.getWindow(WindowStrings.WINDOW_ITEM_DRAG_CONTAINER);
|
|
targetWindow.addChild(itemIcon);
|
|
recursiveSetVisible(targetWindow,true);
|
|
Globals.elementManager.pushWindowToFront(targetWindow);
|
|
}
|
|
|
|
public static void cleanItemDraggingWindow(){
|
|
Window targetWindow = (Window) Globals.elementManager.getWindow(WindowStrings.WINDOW_ITEM_DRAG_CONTAINER);
|
|
targetWindow.getChildren().clear();
|
|
recursiveSetVisible(targetWindow, false);
|
|
}
|
|
|
|
public static void replaceWindow(String window, Window windowEl){
|
|
Globals.elementManager.unregisterWindow(window);
|
|
Globals.elementManager.registerWindow(window, windowEl);
|
|
recursiveSetVisible(windowEl, true);
|
|
Globals.elementManager.focusFirstElement();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void initBaseWindows(){
|
|
initLoadingWindow();
|
|
initItemDropWindow();
|
|
initItemDragContainerWindow();
|
|
initMainMenuWindow();
|
|
}
|
|
|
|
static void initLoadingWindow(){
|
|
Window loadingWindow = new Window(0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT);
|
|
Label loadingLabel = new Label(100,50,1.0f);
|
|
loadingLabel.setText("LOADING");
|
|
loadingWindow.addChild(loadingLabel);
|
|
Globals.elementManager.registerWindow(WindowStrings.WINDOW_LOADING, loadingWindow);
|
|
WindowUtils.recursiveSetVisible(loadingWindow, true);
|
|
}
|
|
|
|
static void initMainMenuWindow(){
|
|
Window mainMenuWindow = new Window(0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT);
|
|
Globals.elementManager.registerWindow(WindowStrings.WINDOW_MENU_MAIN, mainMenuWindow);
|
|
WindowUtils.replaceMainMenuContents(MenuGenerators.createTitleMenu());
|
|
}
|
|
|
|
static void initItemDropWindow(){
|
|
Globals.elementManager.registerWindow(WindowStrings.WINDDOW_ITEM_DROP, MenuGenerators.worldItemDropCaptureWindow());
|
|
}
|
|
|
|
static void initItemDragContainerWindow(){
|
|
Window itemDragContainerWindow = new Window(0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT);
|
|
Globals.elementManager.registerWindow(WindowStrings.WINDOW_ITEM_DRAG_CONTAINER, itemDragContainerWindow);
|
|
}
|
|
|
|
public static void focusWindow(String window){
|
|
Element windowEl = Globals.elementManager.getWindow(window);
|
|
Globals.elementManager.unregisterWindow(window);
|
|
Globals.elementManager.registerWindow(window, windowEl);
|
|
}
|
|
|
|
}
|