/// <summary> /// Creates all of the sub-components of the GUI in for the PlayState (buttons, etc.) /// </summary> public void CreateGUIComponents() { GUI.RootComponent.ClearChildren(); GridLayout layout = new GridLayout(GUI, GUI.RootComponent, 11, 11) { LocalBounds = new Rectangle(0, 0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height), WidthSizeMode = GUIComponent.SizeMode.Fixed, HeightSizeMode = GUIComponent.SizeMode.Fixed }; GUI.RootComponent.AddChild(Master.Debugger.MainPanel); layout.AddChild(Master.ToolBar); Master.ToolBar.Parent = layout; layout.SetComponentPosition(Master.ToolBar, 7, 10, 4, 1); GUIComponent companyInfoComponent = new GUIComponent(GUI, layout); layout.SetComponentPosition(companyInfoComponent, 0, 0, 4, 2); GUIComponent resourceInfoComponent = new ResourceInfoComponent(GUI, layout, Master.Faction); layout.SetComponentPosition(resourceInfoComponent, 7, 0, 2, 2); GridLayout infoLayout = new GridLayout(GUI, companyInfoComponent, 3, 4); CompanyLogoPanel = new ImagePanel(GUI, infoLayout, PlayerCompany.Logo); infoLayout.SetComponentPosition(CompanyLogoPanel, 0, 0, 1, 1); CompanyNameLabel = new Label(GUI, infoLayout, PlayerCompany.Name, GUI.DefaultFont) { TextColor = Color.White, StrokeColor = new Color(0, 0, 0, 255), ToolTip = "Our company Name.", Alignment = Drawer2D.Alignment.Top, }; infoLayout.SetComponentPosition(CompanyNameLabel, 1, 0, 1, 1); MoneyLabel = new DynamicLabel(GUI, infoLayout, "Money:\n", "", GUI.DefaultFont, "C2", () => Master.Faction.Economy.CurrentMoney) { TextColor = Color.White, StrokeColor = new Color(0, 0, 0, 255), ToolTip = "Amount of money in our treasury.", Alignment = Drawer2D.Alignment.Top, }; infoLayout.SetComponentPosition(MoneyLabel, 3, 0, 1, 1); StockLabel = new DynamicLabel(GUI, infoLayout, "Stock:\n", "", GUI.DefaultFont, "C2", () => Master.Faction.Economy.Company.StockPrice) { TextColor = Color.White, StrokeColor = new Color(0, 0, 0, 255), ToolTip = "The price of our company stock.", Alignment = Drawer2D.Alignment.Top, }; infoLayout.SetComponentPosition(StockLabel, 5, 0, 1, 1); TimeLabel = new Label(GUI, layout, Time.CurrentDate.ToShortDateString() + " " + Time.CurrentDate.ToShortTimeString(), GUI.SmallFont) { TextColor = Color.White, StrokeColor = new Color(0, 0, 0, 255), Alignment = Drawer2D.Alignment.Top, ToolTip = "Current time and date." }; layout.SetComponentPosition(TimeLabel, 6, 0, 1, 1); CurrentLevelLabel = new Label(GUI, infoLayout, "Slice: " + ChunkManager.ChunkData.MaxViewingLevel, GUI.DefaultFont) { TextColor = Color.White, StrokeColor = new Color(0, 0, 0, 255), ToolTip = "The maximum height of visible terrain" }; infoLayout.SetComponentPosition(CurrentLevelLabel, 0, 1, 1, 1); CurrentLevelUpButton = new Button(GUI, infoLayout, "", GUI.DefaultFont, Button.ButtonMode.ImageButton, GUI.Skin.GetSpecialFrame(GUISkin.Tile.SmallArrowUp)) { ToolTip = "Go up one level of visible terrain", KeepAspectRatio = true, DontMakeBigger = true, DontMakeSmaller = true }; infoLayout.SetComponentPosition(CurrentLevelUpButton, 1, 1, 1, 1); CurrentLevelUpButton.OnClicked += CurrentLevelUpButton_OnClicked; CurrentLevelDownButton = new Button(GUI, infoLayout, "", GUI.DefaultFont, Button.ButtonMode.ImageButton, GUI.Skin.GetSpecialFrame(GUISkin.Tile.SmallArrowDown)) { ToolTip = "Go down one level of visible terrain", KeepAspectRatio = true, DontMakeBigger = true, DontMakeSmaller = true }; infoLayout.SetComponentPosition(CurrentLevelDownButton, 1, 2, 1, 1); CurrentLevelDownButton.OnClicked += CurrentLevelDownButton_OnClicked; /* LevelSlider = new Slider(GUI, layout, "", ChunkManager.ChunkData.MaxViewingLevel, 0, ChunkManager.ChunkData.ChunkSizeY, Slider.SliderMode.Integer) { Orient = Slider.Orientation.Vertical, ToolTip = "Controls the maximum height of visible terrain", DrawLabel = false }; layout.SetComponentPosition(LevelSlider, 0, 1, 1, 6); LevelSlider.OnClicked += LevelSlider_OnClicked; LevelSlider.InvertValue = true; */ MiniMap = new Minimap(GUI, layout, 192, 192, this, TextureManager.GetTexture(ContentPaths.Terrain.terrain_colormap), TextureManager.GetTexture(ContentPaths.GUI.gui_minimap)) { IsVisible = true }; layout.SetComponentPosition(MiniMap, 0, 8, 4, 4); Rectangle rect = layout.GetRect(new Rectangle(0, 8, 4, 4)); layout.SetComponentOffset(MiniMap, new Point(0, rect.Height - 250)); Button moneyButton = new Button(GUI, layout, "Economy", GUI.SmallFont, Button.ButtonMode.ImageButton, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.icons), 32, 2, 1)) { KeepAspectRatio = true, ToolTip = "Opens the Economy Menu", DontMakeBigger = true, DrawFrame = true, TextColor = Color.White }; moneyButton.OnClicked += moneyButton_OnClicked; Button settingsButton = new Button(GUI, layout, "Settings", GUI.SmallFont, Button.ButtonMode.ImageButton, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.icons), 32, 4, 1)) { KeepAspectRatio = true, ToolTip = "Opens the Settings Menu", DontMakeBigger = true, DrawFrame = true, TextColor = Color.White }; settingsButton.OnClicked += OpenPauseMenu; layout.SetComponentPosition(settingsButton, 10, 0, 1, 1); layout.SetComponentPosition(moneyButton, 9, 0, 1, 1); InputManager.KeyReleasedCallback -= InputManager_KeyReleasedCallback; InputManager.KeyReleasedCallback += InputManager_KeyReleasedCallback; AnnouncementViewer = new AnnouncementViewer(GUI, layout, AnnouncementManager); layout.SetComponentPosition(AnnouncementViewer, 3, 10, 3, 1); layout.UpdateSizes(); }