Renderer/src/main/java/electrosphere/menu/WindowUtils.java
2022-03-06 15:17:32 -05:00

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);
}
}