/// <summary>
        /// Regenerate topBar for stuff and stuff
        /// </summary>
        /// <param name="rendWidth"></param>
        /// <param name="force">Force Regen?</param>
        public void GenBar(float rendWidth, bool force = false)
        {
            if (setup || force) //prevent recreating toolbars unless forced
            {
                return;
            }

            #region File Menu Buttons
            GUIDropDownButtonConfig[] FileMenuButtons = new GUIDropDownButtonConfig[4];
            FileMenuButtons[0] = new GUIDropDownButtonConfig()
            {
                text = "New", value = null, callback = (d, b) => { screen.LoadNewModel(); }
            };
            FileMenuButtons[1] = new GUIDropDownButtonConfig()
            {
                text = "Open", value = null, callback = (d, b) => { openFileWindow.Visible = true; }
            };
            FileMenuButtons[2] = new GUIDropDownButtonConfig()
            {
                text = "Save", value = null, callback = (d, b) => { if (screen.CurrentFile != null)
                                                                    {
                                                                        screen.SaveModel();
                                                                    }
                                                                    else
                                                                    {
                                                                        saveFileWindow.Visible = true;
                                                                    } }
            };
            FileMenuButtons[3] = new GUIDropDownButtonConfig()
            {
                text = "Save As...", value = null, callback = (d, b) => { saveFileWindow.Visible = true; }
            };
            #endregion

            #region Gfx Menu Buttons
            GUIDropDownButtonConfig[] GfxMenuButtons = new GUIDropDownButtonConfig[3];
            GfxMenuButtons[0] = new GUIDropDownButtonConfig()
            {
                text = "FXAA", value = gfxType.fxaa, callback = SetGfxOption
            };
            GfxMenuButtons[1] = new GUIDropDownButtonConfig()
            {
                text = "Shadows", value = gfxType.shadows, callback = SetGfxOption
            };
            GfxMenuButtons[2] = new GUIDropDownButtonConfig()
            {
                text = "Wireframe", value = gfxType.wireframe, callback = SetGfxOption
            };

            GUIDropDownButtonConfig[] fogButtons = new GUIDropDownButtonConfig[4];
            fogButtons[0] = new GUIDropDownButtonConfig()
            {
                text = "Off", value = FogQuality.Off, callback = SetGfxOption
            };
            fogButtons[1] = new GUIDropDownButtonConfig()
            {
                text = "Low", value = FogQuality.Low, callback = SetGfxOption
            };
            fogButtons[2] = new GUIDropDownButtonConfig()
            {
                text = "Medium", value = FogQuality.Medium, callback = SetGfxOption
            };
            fogButtons[3] = new GUIDropDownButtonConfig()
            {
                text = "High", value = FogQuality.High, callback = SetGfxOption
            };

            GUIDropDownButtonConfig[] pcfButtons = new GUIDropDownButtonConfig[5];
            pcfButtons[0] = new GUIDropDownButtonConfig()
            {
                text = "1", value = 1, callback = SetGfxOption
            };
            pcfButtons[1] = new GUIDropDownButtonConfig()
            {
                text = "2", value = 2, callback = SetGfxOption
            };
            pcfButtons[2] = new GUIDropDownButtonConfig()
            {
                text = "4", value = 4, callback = SetGfxOption
            };
            pcfButtons[3] = new GUIDropDownButtonConfig()
            {
                text = "6", value = 6, callback = SetGfxOption
            };
            pcfButtons[4] = new GUIDropDownButtonConfig()
            {
                text = "12", value = 12, callback = SetGfxOption
            };
            #endregion

            #region Editor Menu Buttons
            GUIDropDownButtonConfig[] EditorButtons = new GUIDropDownButtonConfig[5];
            EditorButtons[0] = new GUIDropDownButtonConfig()
            {
                text = "Color Picker", value = typeof(GUIColorPickerWindow), callback = showWindowElement
            };
            EditorButtons[1] = new GUIDropDownButtonConfig()
            {
                text = "Eyedropper", value = null, callback = null
            };
            EditorButtons[2] = new GUIDropDownButtonConfig()
            {
                text = "Paint", value = null, callback = null
            };
            EditorButtons[3] = new GUIDropDownButtonConfig()
            {
                text = "Create Block", value = null, callback = null
            };
            EditorButtons[4] = new GUIDropDownButtonConfig()
            {
                text = "Delete Block", value = null, callback = null
            };
            #endregion

            #region Debug Menu Buttons
            GUIDropDownButtonConfig[] DebugMenuButtons = new GUIDropDownButtonConfig[2];
            DebugMenuButtons[0] = new GUIDropDownButtonConfig()
            {
                text = "Regen ToolBar", value = null, callback = (d, b) => { GenBar(renderer.ScreenWidth, true); }
            };
            DebugMenuButtons[1] = new GUIDropDownButtonConfig()
            {
                text = "show colour menu", value = typeof(GUIColorPickerWindow), callback = showWindowElement
            };
            #endregion

            GUIFrame bottomBar = new GUIFrame(new UDim2(0, 0, 1, -30), new UDim2(1, 0, 0, 30), theme);

            statusLeft = new GUILabel(UDim2.Zero, new UDim2(0.5f, 0, 1, 0), "<left status>", TextAlign.Left, theme)
            {
                Parent = bottomBar
            };
            statusRight = new GUILabel(new UDim2(0.5f, 0, 0, 0), new UDim2(0.5f, 0, 1, 0), "<right status>", TextAlign.Right, theme)
            {
                Parent = bottomBar
            };

            GUIFrame rightHandBar = new GUIFrame(new UDim2(.5f, -45, 0, 0), new UDim2(1, 0, 1, 0), theme);
            rightHandBar.MinSize = new UDim2(0, 90, .75f, 90);
            rightHandBar.MaxSize = rightHandBar.MinSize;

            GUIButton toAddRBar = new GUIButton(UDim2.Zero, new UDim2(1, 0, 1, 0), "Test", theme)
            {
                Parent = rightHandBar
            };

            ToolBarCreator genTop = new ToolBarCreator(theme);

            genTop.SetButtonWidth(4);

            genTop.Add("File", FileMenuButtons);
            genTop.Add("GFX", GfxMenuButtons,
                       new SubDropdownConfig()
            {
                Title = "Fog", subButtons = fogButtons
            },
                       new SubDropdownConfig()
            {
                Title = "PCF Samples", subButtons = pcfButtons
            }
                       ); //<!-- gfx settings -->
            genTop.Add("Tools", EditorButtons);
            genTop.Add("Debug", DebugMenuButtons);

            this.TopBar = genTop.GetToolBar();

            TopBarHelper = new ToolBarHelper(this.TopBar);

            GUIColorPickerWindow ColorWindow = new GUIColorPickerWindow(renderer.Sprites.GUISystem, new UDim2(0.3f, 0, 0.3f, 0), theme);
            ColorWindow.MinSize = new UDim2(0, 400, 0, 300);
            ColorWindow.MaxSize = new UDim2(0, 550, 0, 400);


            SetupDefaultGraphicsSettings();

            windowElements.Add(ColorWindow);

            renderer.Sprites.GUISystem.Add(ColorWindow);
            area.AddTopLevel(TopBar, bottomBar, rightHandBar);
        }
Example #2
0
        public EditorUI(MasterRenderer renderer, EditorScreen screen)
        {
            this.renderer = renderer;
            this.screen   = screen;

            GUISystem = renderer.Sprites.GUISystem;

            area = new GUIArea(GUISystem);
            renderer.Sprites.Add(area);

            Theme = EditorTheme.Glass;

            TranslateTerrainWindow transTerrainWindow;

            newWindow = new NewWorldWindow(GUISystem, screen, Theme);

            transTerrainWindow          = new TranslateTerrainWindow(GUISystem, Theme);
            transTerrainWindow.OnApply += (sender, d) => { screen.World.TranslateTerrain(d); };

            GUIFrame topBar = new GUIFrame(UDim2.Zero, new UDim2(1, 0, 0, 40), Theme);

            float menuItemWidth = 220;

            GUIDropDown fileMenu = new GUIDropDown(UDim2.Zero, new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                Parent = topBar, Text = "File"
            };

            fileMenu.AddItem("New", null, (d, b) => { newWindow.Visible = true; });
            fileMenu.AddItem("Open", null, (d, b) => { openWorldWindow.Visible = true; });
            fileMenu.AddItem("Save", null, (d, b) => { if (screen.CurrentFile != null)
                                                       {
                                                           screen.SaveWorld();
                                                       }
                                                       else
                                                       {
                                                           saveWorldWindow.Visible = true;
                                                       } });
            fileMenu.AddItem("Save As...", null, (d, b) => { saveWorldWindow.Visible = true; });

            GUIDropDown editMenu = new GUIDropDown(new UDim2(0, menuItemWidth, 0, 0), new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                Parent = topBar, Text = "Edit"
            };

            GUIDropDown editModeMenu = new GUIDropDown(UDim2.Zero, new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                HideMainButton = true
            };

            editMenu.AddItemSub("Mode", editModeMenu);
            editModeButtons = new GUIDropDownButton[] {
                editModeMenu.AddItem("Select", null, OnEditModeSelected),
                editModeMenu.AddItem("Add", null, OnEditModeSelected),
                editModeMenu.AddItem("Delete", null, OnEditModeSelected),
                editModeMenu.AddItem("Paint", null, OnEditModeSelected),
                editModeMenu.AddItem("Terrain Move", null, OnEditModeSelected),
                editModeMenu.AddItem("Terraform", null, OnEditModeSelected),
            };

            GUIDropDown insertSubMenu = new GUIDropDown(UDim2.Zero, new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                HideMainButton = true
            };

            editMenu.AddItemSub("Insert", insertSubMenu);
            GUIDropDownButton[] insertButtons = new GUIDropDownButton[] {
                insertSubMenu.AddItem("Command Post", null, (d, b) => { screen.World.AddNewCommandPost(); }),
                insertSubMenu.AddItem("Intel", null, (d, b) => { screen.World.AddNewIntel(); }),
            };

            editMenu.AddItem("Bake Damage Colors", null, (d, b) => { screen.WorldEditor.TerrainEditor.BakeDamageColors(); });
            editMenu.AddItem("Translate Terrain", null, (d, b) => { transTerrainWindow.Visible = true; });

            editModeButtons[0].Toggled = true;

            GUIDropDown gfxMenu = new GUIDropDown(new UDim2(0, menuItemWidth * 2, 0, 0), new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                Parent = topBar, Text = "Graphics"
            };

            gfxMenu.AddItem("FXAA", null, (d, b) => { TogglePostProcess(b, true); });
            gfxMenu.AddItem("Shadows", null, (d, b) => { b.Toggled = renderer.GFXSettings.RenderShadows = !renderer.GFXSettings.RenderShadows; });

            GUIDropDown gfxFogMenu = new GUIDropDown(UDim2.Zero, new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                HideMainButton = true
            };

            gfxMenu.AddItemSub("Fog", gfxFogMenu);
            fogButtons    = new GUIDropDownButton[4];
            fogButtons[0] = gfxFogMenu.AddItem("Off", null, OnFogSelected);
            fogButtons[1] = gfxFogMenu.AddItem("Low", null, OnFogSelected);
            fogButtons[2] = gfxFogMenu.AddItem("Medium", null, OnFogSelected);
            fogButtons[3] = gfxFogMenu.AddItem("High", null, OnFogSelected);

            GUIDropDown gfxPCFMenu = new GUIDropDown(UDim2.Zero, new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                HideMainButton = true
            };

            gfxMenu.AddItemSub("PCF Samples", gfxPCFMenu);
            pcfButtons    = new GUIDropDownButton[5];
            pcfButtons[0] = gfxPCFMenu.AddItem("1", 1, OnPCFSelected);
            pcfButtons[1] = gfxPCFMenu.AddItem("2", 2, OnPCFSelected);
            pcfButtons[2] = gfxPCFMenu.AddItem("4", 4, OnPCFSelected);
            pcfButtons[3] = gfxPCFMenu.AddItem("6", 6, OnPCFSelected);
            pcfButtons[4] = gfxPCFMenu.AddItem("12", 12, OnPCFSelected);

            GUIDropDown viewMenu = new GUIDropDown(new UDim2(0, menuItemWidth * 3, 0, 0), new UDim2(0, menuItemWidth, 1, 0), Theme, false)
            {
                Parent = topBar, Text = "View"
            };

            viewMenu.AddItem("Color Picker", null, (d, b) => { ColorWindow.Visible = true; });
            viewMenu.AddItem("Chunk Borders", null, (d, b) => { b.Toggled = screen.World.ShowChunkBorders = !screen.World.ShowChunkBorders; });

            currentToolLabel = new GUILabel(new UDim2(1f, -5, 0, 5), UDim2.Zero, "Current Tool: Add", TextAlign.TopRight, Theme)
            {
                Parent = topBar
            };

            SetupDefaultGraphicsSettings(gfxMenu);
            area.AddTopLevel(topBar);

            GUIFrame bottomBar = new GUIFrame(new UDim2(0, 0, 1, -30), new UDim2(1, 0, 0, 30), Theme);

            statusLeft = new GUILabel(UDim2.Zero, new UDim2(0.5f, 0, 1, 0), "<left status>", TextAlign.Left, Theme)
            {
                Parent = bottomBar
            };
            statusRight = new GUILabel(new UDim2(0.5f, 0, 0, 0), new UDim2(0.5f, 0, 1, 0), "<right status>", TextAlign.Right, Theme)
            {
                Parent = bottomBar
            };
            statusMid = new GUILabel(new UDim2(0.25f, 0, 0, 0), new UDim2(0.5f, 0, 1f, 0), "", TextAlign.Center, Theme)
            {
                Parent = bottomBar
            };

            area.AddTopLevel(bottomBar);

            openWorldWindow = new FileBrowserWindow(GUISystem, Theme, new UDim2(0.75f, 0, 0.75f, 0), "Open World",
                                                    FileBrowserMode.OpenFile, new string[] { ".aosw" },
                                                    (window) =>
            {
                if (File.Exists(window.FileName))
                {
                    screen.LoadWorld(window.FileName);
                }
            });

            saveWorldWindow = new FileBrowserWindow(GUISystem, Theme, new UDim2(0.75f, 0, 0.75f, 0), "Save World",
                                                    FileBrowserMode.Save, new string[] { ".aosw" },
                                                    (window) =>
            {
                string fullPath = Path.Combine(window.CurrentDirectory, window.FileName);

                if (!Path.HasExtension(fullPath))
                {
                    fullPath += ".aosw";
                }

                screen.SaveWorld(fullPath);
            });

            ColorWindow          = new GUIColorPickerWindow(GUISystem, new UDim2(0.3f, 0, 0.3f, 0), Theme);
            ColorWindow.Visible  = true;
            ColorWindow.Position = new UDim2(0.7f, -10, 0.7f, -10);
            ColorWindow.MinSize  = new UDim2(0, 400, 0, 300);
            ColorWindow.MaxSize  = new UDim2(0, 550, 0, 400);
            popup         = new MessageWindow(GUISystem, Theme, new UDim2(0.6f, 0, 0.3f, 0), "Alert!");
            popup.MinSize = new UDim2(0, 215, 0, 200);
            popup.MaxSize = new UDim2(0, 600, 0, 275);

            GUISystem.Add(ColorWindow, transTerrainWindow, openWorldWindow, saveWorldWindow, newWindow, popup);
        }