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