public MainScreen(ScreenComponent manager) : base(manager) { Padding = new Border(0,0,0,0); //Image background = new Image(manager); //background.Texture = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/background.png", manager.GraphicsDevice); //background.VerticalAlignment = VerticalAlignment.Stretch; //background.HorizontalAlignment = HorizontalAlignment.Stretch; //Controls.Add(background); Background = new TextureBrush(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/background.png", manager.GraphicsDevice), TextureBrushMode.Stretch); StackPanel stack = new StackPanel(manager); Controls.Add(stack); Button startButton = Button.TextButton(manager, Languages.OctoClient.Start); startButton.HorizontalAlignment = HorizontalAlignment.Stretch; startButton.Margin = new Border(0, 0, 0, 10); startButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new LoadScreen(manager)); }; stack.Controls.Add(startButton); Button optionButton = Button.TextButton(manager, Languages.OctoClient.Options); optionButton.HorizontalAlignment = HorizontalAlignment.Stretch; optionButton.Margin = new Border(0, 0, 0, 10); optionButton.MinWidth = 300; optionButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new OptionsScreen(manager)); }; stack.Controls.Add(optionButton); Button creditsButton = Button.TextButton(manager, Languages.OctoClient.CreditsCrew); creditsButton.HorizontalAlignment = HorizontalAlignment.Stretch; creditsButton.Margin = new Border(0, 0, 0, 10); creditsButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new CreditsScreen(manager)); }; stack.Controls.Add(creditsButton); Button webButton = Button.TextButton(manager, "Octoawesome.net"); webButton.VerticalAlignment = VerticalAlignment.Bottom; webButton.HorizontalAlignment = HorizontalAlignment.Right; webButton.Margin = new Border(10, 10, 10, 10); webButton.LeftMouseClick += (s, e) => { Process.Start("http://octoawesome.net/"); }; Controls.Add(webButton); Button exitButton = Button.TextButton(manager, Languages.OctoClient.Exit); exitButton.HorizontalAlignment = HorizontalAlignment.Stretch; exitButton.Margin = new Border(0, 0, 0, 10); exitButton.LeftMouseClick += (s, e) => { manager.Exit(); }; stack.Controls.Add(exitButton); }
public CreateUniverseScreen(ScreenComponent manager) : base(manager) { Manager = manager; settings = manager.Game.Settings; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.CreateUniverse; SetDefaultBackground(); Panel panel = new Panel(manager); panel.VerticalAlignment = VerticalAlignment.Stretch; panel.HorizontalAlignment = HorizontalAlignment.Stretch; panel.Margin = Border.All(50); panel.Background = new BorderBrush(Color.White * 0.5f); panel.Padding = Border.All(10); Controls.Add(panel); Grid grid = new Grid(manager); grid.VerticalAlignment = VerticalAlignment.Stretch; grid.HorizontalAlignment = HorizontalAlignment.Stretch; panel.Controls.Add(grid); grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Auto }); grid.Columns.Add(new ColumnDefinition() { Width = 1,ResizeMode = ResizeMode.Parts }); nameInput = GetTextbox(); nameInput.TextChanged += (s, e) => { createButton.Visible = !string.IsNullOrEmpty(e.NewValue); }; AddLabeledControl(grid, string.Format("{0}: ", Languages.OctoClient.Name), nameInput); seedInput = GetTextbox(); AddLabeledControl(grid, string.Format("{0}: ", Languages.OctoClient.Seed), seedInput); createButton = Button.TextButton(manager, Languages.OctoClient.Create); createButton.HorizontalAlignment = HorizontalAlignment.Right; createButton.VerticalAlignment = VerticalAlignment.Bottom; createButton.Visible = false; createButton.LeftMouseClick += (s, e) => { if (string.IsNullOrEmpty(nameInput.Text)) return; int? seed = null; int textseed; if (int.TryParse(seedInput.Text, out textseed)) seed = textseed; manager.Player.RemovePlayer(); Guid guid = Manager.Game.Simulation.NewGame(nameInput.Text, seed); settings.Set("LastUniverse", guid.ToString()); manager.Game.Player.InsertPlayer(); manager.NavigateToScreen(new GameScreen(manager)); }; panel.Controls.Add(createButton); }
public MainScreen(ScreenComponent manager) : base(manager) { assets = manager.Game.Assets; Padding = new Border(0,0,0,0); Background = new TextureBrush(assets.LoadTexture(typeof(ScreenComponent), "background"), TextureBrushMode.Stretch); StackPanel stack = new StackPanel(manager); Controls.Add(stack); Button startButton = Button.TextButton(manager, Languages.OctoClient.Start); startButton.HorizontalAlignment = HorizontalAlignment.Stretch; startButton.Margin = new Border(0, 0, 0, 10); startButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new LoadScreen(manager)); }; stack.Controls.Add(startButton); Button optionButton = Button.TextButton(manager, Languages.OctoClient.Options); optionButton.HorizontalAlignment = HorizontalAlignment.Stretch; optionButton.Margin = new Border(0, 0, 0, 10); optionButton.MinWidth = 300; optionButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new OptionsScreen(manager)); }; stack.Controls.Add(optionButton); Button creditsButton = Button.TextButton(manager, Languages.OctoClient.CreditsCrew); creditsButton.HorizontalAlignment = HorizontalAlignment.Stretch; creditsButton.Margin = new Border(0, 0, 0, 10); creditsButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new CreditsScreen(manager)); }; stack.Controls.Add(creditsButton); Button webButton = Button.TextButton(manager, "Octoawesome.net"); webButton.VerticalAlignment = VerticalAlignment.Bottom; webButton.HorizontalAlignment = HorizontalAlignment.Right; webButton.Margin = new Border(10, 10, 10, 10); webButton.LeftMouseClick += (s, e) => { Process.Start("http://octoawesome.net/"); }; Controls.Add(webButton); Button exitButton = Button.TextButton(manager, Languages.OctoClient.Exit); exitButton.HorizontalAlignment = HorizontalAlignment.Stretch; exitButton.Margin = new Border(0, 0, 0, 10); exitButton.LeftMouseClick += (s, e) => { manager.Exit(); }; stack.Controls.Add(exitButton); }
public CreditsScreen(ScreenComponent manager) : base(manager) { Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.CreditsCrew; SetDefaultBackground(); List<CrewMember> crew = CrewMember.getCrew(manager); ScrollContainer crewScroll = new ScrollContainer(manager) { VerticalAlignment = VerticalAlignment.Stretch, Margin = new Border(10, 10, 10, 10), CanFocus = false }; StackPanel crewList = new StackPanel(manager) { MinWidth = 700, VerticalAlignment = VerticalAlignment.Stretch, Orientation = Orientation.Vertical, }; crewScroll.Content = crewList; foreach(CrewMember member in crew) { Button memberButton = Button.TextButton(manager, member.Username); memberButton.HorizontalAlignment = HorizontalAlignment.Stretch; memberButton.Margin = new Border(5, 5, 5, 5); memberButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new CrewMemberScreen(manager, member)); }; crewList.Controls.Add(memberButton); } Controls.Add(crewScroll); }
public CrewMemberScreen(ScreenComponent manager, CrewMember member) : base(manager) { VerticalAlignment = VerticalAlignment.Stretch; HorizontalAlignment = HorizontalAlignment.Stretch; SpriteFont boldFont = manager.Content.Load<SpriteFont>("BoldFont"); Padding = new Border(0, 0, 0, 0); SetDefaultBackground(); //The Panel Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); Panel panel = new Panel(manager) { MaxWidth = 750, Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30), Padding = new Border(15, 15, 15, 15), }; Controls.Add(panel); //The Vertical Stack - Split the Panel in half Vertical StackPanel verticalStack = new StackPanel(manager) { VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, Orientation = Orientation.Vertical, }; // panel.Controls.Add(verticalStack); //The Main Stack - Split the Panel in half Horizontal StackPanel horizontalStack = new StackPanel(manager) { HorizontalAlignment = HorizontalAlignment.Center, Orientation = Orientation.Horizontal }; panel.Controls.Add(horizontalStack); //The Profile Image Image profileImage = new Image(manager) { Height = 200, Width = 200, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Padding = new Border(0, 0, 10, 0) }; if (member.PictureFilename == null) profileImage.Texture = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/Crew/base.png", manager.GraphicsDevice); else profileImage.Texture = manager.Content.LoadTexture2DFromFile(member.PictureFilename, manager.GraphicsDevice); horizontalStack.Controls.Add(profileImage); //The Text Stack StackPanel textStack = new StackPanel(manager); textStack.VerticalAlignment = VerticalAlignment.Stretch; textStack.HorizontalAlignment = HorizontalAlignment.Left; textStack.Width = 430; horizontalStack.Controls.Add(textStack); //The Username Label username = new Label(manager) { Text = member.Username, Font = manager.Content.Load<SpriteFont>("HeadlineFont"), HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top }; textStack.Controls.Add(username); //The Alias Label alias = new Label(manager) { Text = member.Alias, HorizontalAlignment = HorizontalAlignment.Left }; textStack.Controls.Add(alias); //Achievements string achievementString = ""; foreach (CrewMember.Achievements achievement in member.AchievementList) { achievementString += " " + achievement.ToString(); if (member.AchievementList.IndexOf(achievement) != member.AchievementList.Count - 1) achievementString += ", "; } StackPanel achievementStack = new StackPanel(manager); achievementStack.VerticalAlignment = VerticalAlignment.Top; achievementStack.HorizontalAlignment = HorizontalAlignment.Left; achievementStack.Orientation = Orientation.Horizontal; textStack.Controls.Add(achievementStack); Label achievementsTitle = new Label(manager) { Text = Languages.OctoClient.Achievements + ": ", Font = boldFont, HorizontalAlignment = HorizontalAlignment.Left }; Label achievements = new Label(manager) { Text = achievementString, HorizontalAlignment = HorizontalAlignment.Left }; achievementStack.Controls.Add(achievementsTitle); achievementStack.Controls.Add(achievements); Panel DescriptionPanel = new Panel(manager) { VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, }; textStack.Controls.Add(DescriptionPanel); Label Description = new Label(manager) { Text = member.Description, WordWrap = true, VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Left, HorizontalTextAlignment = HorizontalAlignment.Left, VerticalTextAlignment = VerticalAlignment.Top, }; Description.InvalidateDimensions(); DescriptionPanel.Controls.Add(Description); panel.Width = 700; }
public CrewMemberScreen(ScreenComponent manager, CrewMember member) : base(manager) { assets = manager.Game.Assets; VerticalAlignment = VerticalAlignment.Stretch; HorizontalAlignment = HorizontalAlignment.Stretch; Title = Languages.OctoClient.CreditsCrew + ": " + member.Username; SpriteFont boldFont = manager.Content.Load<SpriteFont>("BoldFont"); Padding = new Border(0, 0, 0, 0); SetDefaultBackground(); //The Panel Texture2D panelBackground = assets.LoadTexture(typeof(ScreenComponent), "panel"); Panel panel = new Panel(manager) { MaxWidth = 750, Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30), Padding = new Border(15, 15, 15, 15), }; Controls.Add(panel); //The Main Stack - Split the Panel in half Horizontal StackPanel horizontalStack = new StackPanel(manager) { HorizontalAlignment = HorizontalAlignment.Center, Orientation = Orientation.Horizontal }; panel.Controls.Add(horizontalStack); //The Profile Image Image profileImage = new Image(manager) { Height = 200, Width = 200, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Padding = new Border(0, 0, 10, 0) }; if (member.PictureFilename == null) profileImage.Texture = assets.LoadTexture(typeof(CrewMember), "base"); else profileImage.Texture = assets.LoadTexture(typeof(CrewMember), member.PictureFilename); horizontalStack.Controls.Add(profileImage); //The Text Stack StackPanel textStack = new StackPanel(manager); textStack.VerticalAlignment = VerticalAlignment.Stretch; textStack.HorizontalAlignment = HorizontalAlignment.Left; textStack.Width = 430; horizontalStack.Controls.Add(textStack); //The Username Label username = new Label(manager) { Text = member.Username, Font = manager.Content.Load<SpriteFont>("HeadlineFont"), HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top }; textStack.Controls.Add(username); //The Alias Label alias = new Label(manager) { Text = member.Alias, HorizontalAlignment = HorizontalAlignment.Left }; textStack.Controls.Add(alias); //Achievements string achievementString = string.Join(", ", member.AchievementList.Select(a => a.ToString())); StackPanel achievementStack = new StackPanel(manager) { VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Left, Orientation = Orientation.Horizontal, }; textStack.Controls.Add(achievementStack); Label achievementsTitle = new Label(manager) { Text = Languages.OctoClient.Achievements + ": ", Font = boldFont, HorizontalAlignment = HorizontalAlignment.Left }; achievementStack.Controls.Add(achievementsTitle); Label achievements = new Label(manager) { Text = achievementString, HorizontalAlignment = HorizontalAlignment.Left }; achievementStack.Controls.Add(achievements); // Links string linkString = string.Join(", ", member.Links.Select(a => a.Title)); StackPanel linkStack = new StackPanel(manager) { VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Left, Orientation = Orientation.Horizontal, }; textStack.Controls.Add(linkStack); Label linkTitle = new Label(manager) { Text = Languages.OctoClient.Links + ": ", Font = boldFont, HorizontalAlignment = HorizontalAlignment.Left }; linkStack.Controls.Add(linkTitle); foreach (var link in member.Links) { if (CheckHttpUrl(link.Url)) { Button linkButton = Button.TextButton(manager, link.Title); linkButton.LeftMouseClick += (s, e) => Process.Start(link.Url); linkStack.Controls.Add(linkButton); } } Panel descriptionPanel = new Panel(manager) { VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, }; textStack.Controls.Add(descriptionPanel); Label description = new Label(manager) { Text = member.Description, WordWrap = true, VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Left, HorizontalTextAlignment = HorizontalAlignment.Left, VerticalTextAlignment = VerticalAlignment.Top, }; description.InvalidateDimensions(); descriptionPanel.Controls.Add(description); panel.Width = 700; }
public CreditsScreen(ScreenComponent manager) : base(manager) { Padding = new Border(0, 0, 0, 0); Title = "Credits"; Image background = new Image(manager); background.Texture = Manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/background_notext.png", Manager.GraphicsDevice); background.VerticalAlignment = VerticalAlignment.Stretch; background.HorizontalAlignment = HorizontalAlignment.Stretch; Controls.Add(background); Button backButton = Button.TextButton(manager, "Back"); backButton.VerticalAlignment = VerticalAlignment.Top; backButton.HorizontalAlignment = HorizontalAlignment.Left; backButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; backButton.Margin = new Border(10, 10, 10, 10); Controls.Add(backButton); List<CrewMember> crew = CrewMember.getCrew(manager); ScrollContainer crewScroll = new ScrollContainer(manager) { VerticalAlignment = VerticalAlignment.Stretch, Margin = new Border(10, 10, 10, 10), CanFocus = false }; StackPanel crewList = new StackPanel(manager) { MinWidth = 700, VerticalAlignment = VerticalAlignment.Stretch, Orientation = Orientation.Vertical, }; crewScroll.Content = crewList; foreach(CrewMember member in crew) { Panel memberPanel = new Panel(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, MinHeight = 30, Background = new BorderBrush(Color.White), Margin = new Border(5, 5, 5, 5), HoveredBackground = new BorderBrush(Color.LightGray) }; memberPanel.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new CrewMemberScreen(manager, member)); }; Label name = new Label(manager) { Text = member.Username, VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Center, Padding = new Border(5, 5, 5, 5) }; memberPanel.Controls.Add(name); crewList.Controls.Add(memberPanel); } Controls.Add(crewScroll); }
public LoadScreen(ScreenComponent manager) : base(manager) { Manager = manager; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.SelectUniverse; SetDefaultBackground(); //Main Panel mainStack = new Grid(manager); mainStack.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 3 }); mainStack.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 }); mainStack.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Parts, Height = 1 }); mainStack.Margin = Border.All(50); mainStack.HorizontalAlignment = HorizontalAlignment.Stretch; mainStack.VerticalAlignment = VerticalAlignment.Stretch; Controls.Add(mainStack); //Level Stack levelList = new Listbox<IUniverse>(manager); levelList.Background = new BorderBrush(Color.White * 0.5f); levelList.VerticalAlignment = VerticalAlignment.Stretch; levelList.HorizontalAlignment = HorizontalAlignment.Stretch; levelList.Margin = Border.All(10); levelList.SelectedItemBrush = new BorderBrush(Color.SaddleBrown * 0.7f); levelList.TemplateGenerator += (x) => { return new Label(manager) { Text = string.Format("{0} ({1})", x.Name, x.Seed), HorizontalAlignment = HorizontalAlignment.Stretch, Padding = Border.All(10), }; }; mainStack.AddControl(levelList, 0, 0); //Sidebar Panel sidebar = new Panel(manager); sidebar.Padding = Border.All(20); sidebar.VerticalAlignment = VerticalAlignment.Stretch; sidebar.HorizontalAlignment = HorizontalAlignment.Stretch; sidebar.Background = new BorderBrush(Color.White * 0.5f); sidebar.Margin = Border.All(10); mainStack.AddControl(sidebar, 1, 0); //Universe Info Label l = new Label(manager); l.Text = " Placeholder "; l.VerticalAlignment = VerticalAlignment.Top; l.HorizontalAlignment = HorizontalAlignment.Left; sidebar.Controls.Add(l); //Buttons StackPanel buttonStack = new StackPanel(manager); buttonStack.VerticalAlignment = VerticalAlignment.Bottom; buttonStack.HorizontalAlignment = HorizontalAlignment.Stretch; sidebar.Controls.Add(buttonStack); //renameButton = getButton("Rename"); //buttonStack.Controls.Add(renameButton); deleteButton = GetButton(Languages.OctoClient.Delete); buttonStack.Controls.Add(deleteButton); deleteButton.LeftMouseClick += (s, e) => { if (levelList.SelectedItem == null) { MessageScreen msg = new MessageScreen(manager, Languages.OctoClient.Error, Languages.OctoClient.SelectUniverseFirst); manager.NavigateToScreen(msg); return; } // Sicherstellen, dass universe nicht geladen ist if (ResourceManager.Instance.CurrentUniverse != null && ResourceManager.Instance.CurrentUniverse.Id == levelList.SelectedItem.Id) return; ResourceManager.Instance.DeleteUniverse(levelList.SelectedItem.Id); levelList.Items.Remove(levelList.SelectedItem); levelList.SelectedItem = null; levelList.InvalidateDimensions(); SettingsManager.Set("LastUniverse", ""); }; createButton = GetButton(Languages.OctoClient.Create); createButton.LeftMouseClick += (s, e) => manager.NavigateToScreen(new CreateUniverseScreen(manager)); buttonStack.Controls.Add(createButton); playButton = GetButton(Languages.OctoClient.Play); playButton.LeftMouseClick += (s, e) => { if (levelList.SelectedItem == null) { MessageScreen msg = new MessageScreen(manager, Languages.OctoClient.Error, Languages.OctoClient.SelectUniverseFirst); manager.NavigateToScreen(msg); return; } Play(); }; buttonStack.Controls.Add(playButton); foreach (var universe in ResourceManager.Instance.ListUniverses()) levelList.Items.Add(universe); // Erstes Element auswählen, oder falls vorhanden das letzte gespielte Universum if (levelList.Items.Count >= 1) levelList.SelectedItem = levelList.Items[0]; if (SettingsManager.KeyExists("LastUniverse") && SettingsManager.Get("LastUniverse") != null && SettingsManager.Get("LastUniverse") != "") { levelList.SelectedItem = levelList.Items.First(u => u.Id == Guid.Parse(SettingsManager.Get("LastUniverse"))); } }
public OptionsScreen(ScreenComponent manager) : base(manager) { assets = manager.Game.Assets; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.Options; Texture2D panelBackground = assets.LoadTexture(typeof(ScreenComponent), "panel"); SetDefaultBackground(); TabControl tabs = new TabControl(manager) { Padding = new Border(20, 20, 20, 20), Width = 700, TabPageBackground = NineTileBrush.FromSingleTexture(panelBackground, 30, 30), TabBrush = NineTileBrush.FromSingleTexture(assets.LoadTexture(typeof(ScreenComponent), "buttonLong_brown"), 15, 15), TabActiveBrush = NineTileBrush.FromSingleTexture(assets.LoadTexture(typeof(ScreenComponent), "buttonLong_beige"), 15, 15), }; Controls.Add(tabs); #region OptionsPage TabPage optionsPage = new TabPage(manager, Languages.OctoClient.Options); tabs.Pages.Add(optionsPage); OptionsOptionControl optionsOptions = new OptionsOptionControl(manager, this) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, }; optionsPage.Controls.Add(optionsOptions); #endregion #region BindingsPage TabPage bindingsPage = new TabPage(manager, Languages.OctoClient.KeyBindings); tabs.Pages.Add(bindingsPage); BindingsOptionControl bindingsOptions = new BindingsOptionControl(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, }; bindingsPage.Controls.Add(bindingsOptions); #endregion #region TexturePackPage TabPage resourcePackPage = new TabPage(manager, "Resource Packs"); tabs.Pages.Add(resourcePackPage); ResourcePacksOptionControl resourcePacksOptions = new ResourcePacksOptionControl(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, }; resourcePackPage.Controls.Add(resourcePacksOptions); #endregion ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, Languages.OctoClient.RestartGameToApplyChanges); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => Program.Restart(); exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }
public LoadScreen(ScreenComponent manager) : base(manager) { Manager = manager; Padding = new Border(0, 0, 0, 0); SetDefaultBackground(); //Main Panel mainStack = new Grid(manager); mainStack.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 3 }); mainStack.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 }); mainStack.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Parts, Height = 1 }); mainStack.Margin = Border.All(50); mainStack.HorizontalAlignment = HorizontalAlignment.Stretch; mainStack.VerticalAlignment = VerticalAlignment.Stretch; Controls.Add(mainStack); //Level Stack Listbox<IUniverse> levelList = new Listbox<IUniverse>(manager); levelList.Background = new BorderBrush(Color.White * 0.5f); levelList.VerticalAlignment = VerticalAlignment.Stretch; levelList.HorizontalAlignment = HorizontalAlignment.Stretch; levelList.Margin = Border.All(10); levelList.TemplateGenerator += (x) => { return new Label(manager) { Text = string.Format("{0} ({1})", x.Name, x.Seed), HorizontalAlignment = HorizontalAlignment.Stretch, Padding = Border.All(10), }; }; levelList.SelectedItemChanged += (s, e) => { playButton.Enabled = e.NewItem != null; deleteButton.Enabled = e.NewItem != null; }; mainStack.AddControl(levelList, 0, 0); //Sidebar Panel sidebar = new Panel(manager); sidebar.Padding = Border.All(20); sidebar.VerticalAlignment = VerticalAlignment.Stretch; sidebar.HorizontalAlignment = HorizontalAlignment.Stretch; sidebar.Background = new BorderBrush(Color.White * 0.5f); sidebar.Margin = Border.All(10); mainStack.AddControl(sidebar, 1, 0); //Universe Info Label l = new Label(manager); l.Text = " Placeholder "; l.VerticalAlignment = VerticalAlignment.Top; l.HorizontalAlignment = HorizontalAlignment.Left; sidebar.Controls.Add(l); //Buttons StackPanel buttonStack = new StackPanel(manager); buttonStack.VerticalAlignment = VerticalAlignment.Bottom; buttonStack.HorizontalAlignment = HorizontalAlignment.Stretch; sidebar.Controls.Add(buttonStack); //renameButton = getButton("Rename"); //buttonStack.Controls.Add(renameButton); deleteButton = getButton("Delete"); buttonStack.Controls.Add(deleteButton); deleteButton.LeftMouseClick += (s, e) => { if (levelList.SelectedItem == null) return; // Sicherstellen, dass universe nicht geladen ist if (ResourceManager.Instance.CurrentUniverse != null && ResourceManager.Instance.CurrentUniverse.Id == levelList.SelectedItem.Id) return; ResourceManager.Instance.DeleteUniverse(levelList.SelectedItem.Id); levelList.Items.Remove(levelList.SelectedItem); levelList.SelectedItem = null; levelList.InvalidateDimensions(); }; createButton = getButton("Create"); createButton.LeftMouseClick += (s, e) => manager.NavigateToScreen(new CreateUniverseScreen(manager)); buttonStack.Controls.Add(createButton); playButton = getButton("Play"); playButton.LeftMouseClick += (s, e) => { if (levelList.SelectedItem == null) return; manager.Player.RemovePlayer(); manager.Game.Simulation.LoadGame(levelList.SelectedItem.Id); manager.Game.Player.InsertPlayer(); manager.NavigateToScreen(new GameScreen(manager)); }; buttonStack.Controls.Add(playButton); foreach (var universe in ResourceManager.Instance.ListUniverses()) levelList.Items.Add(universe); }
public Skin(ContentManager content) { ControlSkins = new Dictionary <Type, Action <Control> >(); StyleSkins = new Dictionary <string, Action <Control> >(); SplitterWidth = 4; ScrollbarWidth = 10; ScrollerMinSize = 10; BackgroundColor = new Color(20, 147, 73); LogoColorOrange = new Color(241, 145, 11); LogoColorRed = new Color(225, 7, 22); TextColorBlack = new Color(0, 0, 0); TextColorGray = new Color(86, 86, 86); TextColorWhite = new Color(255, 255, 255); HeadlineFont = content.Load <SpriteFont>("HeadlineFont"); TextFont = content.Load <SpriteFont>("GameFont"); BoldFont = content.Load <SpriteFont>("BoldFont"); FocusFrameBrush = new BorderBrush(LineType.Dotted, Color.Black, 1); ButtonBrush = new BorderBrush(Color.White, LineType.Solid, Color.LightGray, 1); ButtonHoverBrush = new BorderBrush(Color.LightGray, LineType.Solid, Color.LightGray, 1); ButtonPressedBrush = new BorderBrush(Color.LightGray, LineType.Solid, Color.Black, 1); PanelBrush = new BorderBrush(Color.White, LineType.Solid, Color.Black, 1); VerticalScrollBackgroundBrush = new BorderBrush(Color.White, LineType.Solid, Color.Black, 1); HorizontalScrollBackgroundBrush = new BorderBrush(Color.White, LineType.Solid, Color.Black, 1); VerticalScrollForegroundBrush = new BorderBrush(Color.LightGray, LineType.Solid, Color.Black, 1); HorizontalScrollForegroundBrush = new BorderBrush(Color.LightGray, LineType.Solid, Color.Black, 1); HorizontalSplitterBrush = new BorderBrush(Color.White, LineType.Solid, Color.LightGray, 1); VerticalSplitterBrush = new BorderBrush(Color.White, LineType.Solid, Color.LightGray, 1); ProgressBarBrush = new BorderBrush(Color.Blue, LineType.Solid, Color.Black, 1); SelectedItemBrush = new BorderBrush(Color.Red); DisabledBrush = new BorderBrush(Color.White * 0.4f); // ============= // Skin-Methoden // ============= // Control ControlSkins.Add(typeof(Control), (c) => { Control control = c as Control; control.Margin = Border.All(0); control.Padding = Border.All(0); control.HorizontalAlignment = HorizontalAlignment.Center; control.VerticalAlignment = VerticalAlignment.Center; }); // Label ControlSkins.Add(typeof(Label), (c) => { Label label = c as Label; label.VerticalTextAlignment = VerticalAlignment.Center; label.HorizontalTextAlignment = HorizontalAlignment.Left; label.Font = Current.TextFont; label.TextColor = Current.TextColorBlack; label.Padding = Border.All(5); }); // Button ControlSkins.Add(typeof(Button), (c) => { Button button = c as Button; button.Margin = Border.All(2); button.Padding = Border.All(5); button.Background = Current.ButtonBrush; button.HoveredBackground = Current.ButtonHoverBrush; button.PressedBackground = Current.ButtonPressedBrush; }); // Splitter ControlSkins.Add(typeof(Splitter), (c) => { Splitter splitter = c as Splitter; splitter.HorizontalAlignment = HorizontalAlignment.Stretch; splitter.VerticalAlignment = VerticalAlignment.Stretch; splitter.Orientation = Orientation.Horizontal; splitter.SplitterSize = Current.SplitterWidth; splitter.SplitterPosition = 200; splitter.SplitterBrushHorizontal = Current.HorizontalSplitterBrush; splitter.SplitterBrushVertical = Current.VerticalSplitterBrush; }); // Scrollcontainer ControlSkins.Add(typeof(ScrollContainer), (c) => { ScrollContainer scrollContainer = c as ScrollContainer; scrollContainer.HorizontalScrollbarBackground = Current.HorizontalScrollBackgroundBrush; scrollContainer.HorizontalScrollbarForeground = Current.HorizontalScrollForegroundBrush; scrollContainer.VerticalScrollbarBackground = Current.VerticalScrollBackgroundBrush; scrollContainer.VerticalScrollbarForeground = Current.VerticalScrollForegroundBrush; scrollContainer.ScrollbarWidth = Current.ScrollbarWidth; scrollContainer.ScrollerMinSize = Current.ScrollerMinSize; }); // StackPanel ControlSkins.Add(typeof(StackPanel), (c) => { StackPanel stackPanel = c as StackPanel; }); // ListControl //ControlSkins.Add(typeof(ListControl<>), (c) => //{ // dynamic listControl = c; // listControl.SelectedItemBrush = Current.SelectedItemBrush; //}); // Listbox ControlSkins.Add(typeof(Listbox <>), (c) => { dynamic listBox = c; }); // Combobox //ControlSkins.Add(typeof(Combobox<>), (c) => //{ // dynamic comboBox = c; // comboBox.Background = new BorderBrush(Color.White); //}); // Progressbar ControlSkins.Add(typeof(ProgressBar), (c) => { ProgressBar progressBar = c as ProgressBar; progressBar.BarBrush = Current.ProgressBarBrush; }); //Slider ControlSkins.Add(typeof(Slider), (c) => { Slider s = c as Slider; s.Orientation = Orientation.Horizontal; s.SliderBackgroundBrush = new BorderBrush(Color.LightGray); s.SliderForegroundBrush = new BorderBrush(Color.SlateGray); s.SliderWidth = 20; }); ControlSkins.Add(typeof(Checkbox), (c) => { Checkbox checkbox = c as Checkbox; checkbox.BoxBrush = new BorderBrush(Color.Black); checkbox.InnerBoxBrush = new BorderBrush(Color.LightGray); checkbox.HookBrush = new BorderBrush(Color.LawnGreen); checkbox.Width = 20; checkbox.Height = 20; }); ControlSkins.Add(typeof(TabControl), (c) => { TabControl tabControl = c as TabControl; tabControl.TabBrush = new BorderBrush(Color.LightGray); tabControl.TabActiveBrush = new BorderBrush(Color.Gray); tabControl.TabPageBackground = new BorderBrush(Color.Gray); tabControl.TabSpacing = 1; }); }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = (OctoGame)manager.Game; Padding = new Border(0, 0, 0, 0); Title = "Options"; ////////////////////////////////////////////Background//////////////////////////////////////////// Image background = new Image(manager); background.Texture = Manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/background_notext.png", Manager.GraphicsDevice); background.VerticalAlignment = VerticalAlignment.Stretch; background.HorizontalAlignment = HorizontalAlignment.Stretch; Controls.Add(background); ////////////////////////////////////////////Back Button//////////////////////////////////////////// Button backButton = Button.TextButton(manager, "Back"); backButton.VerticalAlignment = VerticalAlignment.Top; backButton.HorizontalAlignment = HorizontalAlignment.Left; backButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; backButton.Margin = new Border(10, 10, 10, 10); Controls.Add(backButton); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager); settingsStack.Orientation = Orientation.Vertical; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); settingsStack.Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); settingsStack.Padding = new Border(20, 20, 20, 20); Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = ConfigurationManager.AppSettings["Viewrange"]; rangeTitle = new Label(manager); rangeTitle.Text = "Viewrange: " + viewrange; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager); viewrangeSlider.HorizontalAlignment = HorizontalAlignment.Stretch; viewrangeSlider.Height = 20; viewrangeSlider.Range = 9; viewrangeSlider.Value = int.Parse(viewrange) -1; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager); persistenceStack.Orientation = Orientation.Horizontal; persistenceStack.Margin = new Border(0, 10, 0, 0); settingsStack.Controls.Add(persistenceStack); persistenceTitle = new Label(manager); persistenceTitle.Text = "Disable persistence:"; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager); disablePersistence.Checked = bool.Parse(ConfigurationManager.AppSettings["DisablePersistence"]); disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager); mapPathStack.Orientation = Orientation.Horizontal; mapPathStack.Margin = new Border(0, 10, 0, 0); mapPathStack.HorizontalAlignment = HorizontalAlignment.Stretch; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager); // mapPath.HorizontalAlignment = HorizontalAlignment.Stretch; mapPath.Text = ConfigurationManager.AppSettings["ChunkRoot"]; mapPath.Enabled = false; mapPath.Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray); mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, "Change Path"); changePath.Height = 31; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); //////////////////////Delete Map////////////////////// deleteButton = Button.TextButton(manager, "Delete Map"); deleteButton.HorizontalAlignment = HorizontalAlignment.Stretch; deleteButton.Margin = new Border(0, 10, 0, 0); deleteButton.LeftMouseClick += (s, e) => deleteMap(); settingsStack.Controls.Add(deleteButton); ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, "Restart game to apply changes"); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => { Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location); game.Exit(); }; exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = manager.Game; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.Options; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); SetDefaultBackground(); TabControl tabs = new TabControl(manager) { Padding = new Border(20, 20, 20, 20), Width = 700, TabPageBackground = NineTileBrush.FromSingleTexture(panelBackground, 30, 30), TabBrush = NineTileBrush.FromSingleTexture(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/buttonLong_brown.png", manager.GraphicsDevice), 15, 15), TabActiveBrush = NineTileBrush.FromSingleTexture(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/buttonLong_beige.png", manager.GraphicsDevice), 15, 15), }; Controls.Add(tabs); #region OptionsPage TabPage optionsPage = new TabPage(manager, "Options"); tabs.Pages.Add(optionsPage); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager) { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Top, Padding = new Border(20, 20, 20, 20), Width = 650 }; optionsPage.Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = SettingsManager.Get("Viewrange"); rangeTitle = new Label(manager) { Text = Languages.OctoClient.Viewrange + ": " + viewrange }; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, Height = 20, Range = 9, Value = int.Parse(viewrange) - 1 }; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, Margin = new Border(0, 20, 0, 0) }; settingsStack.Controls.Add(persistenceStack); Label persistenceTitle = new Label(manager) { Text = Languages.OctoClient.DisablePersistence + ":" }; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager) { Checked = bool.Parse(SettingsManager.Get("DisablePersistence")), HookBrush = new TextureBrush(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/iconCheck_brown.png", manager.GraphicsDevice), TextureBrushMode.Stretch), }; disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager) { Orientation = Orientation.Vertical, Margin = new Border(0, 20, 0, 0), HorizontalAlignment = HorizontalAlignment.Stretch }; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager) { Text = SettingsManager.Get("ChunkRoot"), Enabled = false, HorizontalAlignment = HorizontalAlignment.Stretch, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray) }; mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, Languages.OctoClient.ChangePath); changePath.HorizontalAlignment = HorizontalAlignment.Center; changePath.Height = 40; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); //////////////////////Fullscreen////////////////////// StackPanel fullscreenStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, Margin = new Border(0, 20, 0, 0) }; settingsStack.Controls.Add(fullscreenStack); Label fullscreenTitle = new Label(manager) { Text = Languages.OctoClient.EnableFullscreenOnStartup + ":" }; fullscreenStack.Controls.Add(fullscreenTitle); Checkbox enableFullscreen = new Checkbox(manager) { Checked = bool.Parse(SettingsManager.Get("EnableFullscreen")), HookBrush = new TextureBrush(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/iconCheck_brown.png", manager.GraphicsDevice), TextureBrushMode.Stretch), }; enableFullscreen.CheckedChanged += (state) => SetFullscreen(state); fullscreenStack.Controls.Add(enableFullscreen); //////////////////////Auflösung////////////////////// StackPanel resolutionStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, Margin = new Border(0, 20, 0, 0) }; settingsStack.Controls.Add(resolutionStack); Label resolutionTitle = new Label(manager) { Text = Languages.OctoClient.Resolution + ":" }; resolutionStack.Controls.Add(resolutionTitle); Textbox resolutionWidthTextbox = new Textbox(manager) { Text = SettingsManager.Get("Width"), Width = 50, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray) }; resolutionWidthTextbox.TextChanged += ResolutionWidthTextbox_TextChanged; resolutionStack.Controls.Add(resolutionWidthTextbox); Label xLabel = new Label(manager) { Text = "x" }; resolutionStack.Controls.Add(xLabel); Textbox resolutionHeightTextbox = new Textbox(manager) { Text = SettingsManager.Get("Height"), Width = 50, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray) }; resolutionHeightTextbox.TextChanged += ResolutionHeightTextbox_TextChanged; resolutionStack.Controls.Add(resolutionHeightTextbox); Label pxLabel = new Label(manager) { Text = Languages.OctoClient.Pixels }; resolutionStack.Controls.Add(pxLabel); #endregion #region BindingsPage TabPage bindingsPage = new TabPage(manager, "Bindings"); tabs.Pages.Add(bindingsPage); ScrollContainer bindingsScroll = new ScrollContainer(manager); bindingsPage.Controls.Add(bindingsScroll); StackPanel bindingsStack = new StackPanel(manager) { Orientation = Orientation.Vertical, Padding = new Border(20, 20, 20, 20), Width = 650 }; bindingsScroll.Content = bindingsStack; //////////////////////////////KeyBindings//////////////////////////////////////////// var bindings = game.KeyMapper.GetBindings(); foreach (var binding in bindings) { StackPanel bindingStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Stretch, Height = 35 }; Label lbl = new Label(manager) { Text = binding.DisplayName, Width = 480 }; Label bindingKeyLabel = new Label(manager) { Text = binding.Keys.First().ToString(), HorizontalAlignment = HorizontalAlignment.Right, Width = 90, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray), Tag = new object[] { binding.Id, binding.Keys.First() } }; bindingKeyLabel.LeftMouseClick += BindingKeyLabel_LeftMouseClick; bindingStack.Controls.Add(lbl); bindingStack.Controls.Add(bindingKeyLabel); bindingsStack.Controls.Add(bindingStack); } #endregion ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, Languages.OctoClient.RestartGameToApplyChanges); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => Program.Restart(); exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = (OctoGame)manager.Game; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.Options; SetDefaultBackground(); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager); settingsStack.Orientation = Orientation.Vertical; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); settingsStack.Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); settingsStack.Padding = new Border(20, 20, 20, 20); settingsStack.Width = 500; Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = SettingsManager.Get("Viewrange"); rangeTitle = new Label(manager); rangeTitle.Text = Languages.OctoClient.Viewrange + ": " + viewrange; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager); viewrangeSlider.HorizontalAlignment = HorizontalAlignment.Stretch; viewrangeSlider.Height = 20; viewrangeSlider.Range = 9; viewrangeSlider.Value = int.Parse(viewrange) - 1; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager); persistenceStack.Orientation = Orientation.Horizontal; persistenceStack.Margin = new Border(0, 10, 0, 0); settingsStack.Controls.Add(persistenceStack); persistenceTitle = new Label(manager); persistenceTitle.Text = Languages.OctoClient.DisablePersistence + ":"; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager); disablePersistence.Checked = bool.Parse(SettingsManager.Get("DisablePersistence")); disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager); mapPathStack.Orientation = Orientation.Horizontal; mapPathStack.Margin = new Border(0, 10, 0, 0); mapPathStack.HorizontalAlignment = HorizontalAlignment.Stretch; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager); // mapPath.HorizontalAlignment = HorizontalAlignment.Stretch; mapPath.Text = SettingsManager.Get("ChunkRoot"); mapPath.Enabled = false; mapPath.Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray); mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, Languages.OctoClient.ChangePath); changePath.Height = 31; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, Languages.OctoClient.RestartGameToApplyChanges); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => Program.Restart(); exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }