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 ToolbarControl(ScreenComponent screenManager) : base(screenManager) { Player = screenManager.Player; toolTextures = new Dictionary<string, Texture2D>(); buttonBackgroud = new BorderBrush(Color.Black); activeBackground = new BorderBrush(Color.Red); foreach (var item in DefinitionManager.Instance.GetItemDefinitions()) { Texture2D texture = screenManager.Game.Assets.LoadTexture(item.GetType(), item.Icon); toolTextures.Add(item.GetType().FullName, texture); } Grid grid = new Grid(screenManager) { Margin = new Border(0, 0, 0, 0), HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Bottom }; Controls.Add(grid); grid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Auto, Height = 1 }); grid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Fixed, Height = 50 }); for (int i = 0; i < OctoAwesome.Player.TOOLCOUNT; i++) { grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Fixed, Width = 50 }); } activeToolLabel = new Label(screenManager); activeToolLabel.VerticalAlignment = VerticalAlignment.Top; activeToolLabel.HorizontalAlignment = HorizontalAlignment.Center; activeToolLabel.Background = new BorderBrush(Color.Black * 0.3f); activeToolLabel.TextColor = Color.White; grid.AddControl(activeToolLabel, 0, 0, OctoAwesome.Player.TOOLCOUNT); for (int i = 0; i < OctoAwesome.Player.TOOLCOUNT; i++) { buttons[i] = new Button(screenManager) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Background = buttonBackgroud, HoveredBackground = null, PressedBackground = null, }; buttons[i].Content = images[i] = new Image(screenManager) { Width = 42, Height = 42, }; grid.AddControl(buttons[i], i, 1); } }
protected override void OnNavigatedTo(NavigationEventArgs args) { if (Manager.CanGoBack) { BackButton = Button.TextButton(Manager, Languages.OctoClient.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); } }
public ResourcePacksOptionControl(ScreenComponent manager) : base(manager) { Grid grid = new Grid(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Margin = Border.All(15), }; Controls.Add(grid); grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 }); grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Fixed, Width = 100 }); grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 }); grid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Parts, Height = 1 }); grid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Auto, Height = 1 }); grid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Auto, Height = 1 }); StackPanel buttons = new StackPanel(manager) { VerticalAlignment = VerticalAlignment.Stretch, }; grid.AddControl(buttons, 1, 0); #region Manipulationsbuttons addButton = Button.TextButton(manager, "Add"); addButton.HorizontalAlignment = HorizontalAlignment.Stretch; addButton.Visible = false; buttons.Controls.Add(addButton); removeButton = Button.TextButton(manager, "Remove"); removeButton.HorizontalAlignment = HorizontalAlignment.Stretch; removeButton.Visible = false; buttons.Controls.Add(removeButton); moveUpButton = Button.TextButton(manager, "Up"); moveUpButton.HorizontalAlignment = HorizontalAlignment.Stretch; moveUpButton.Visible = false; buttons.Controls.Add(moveUpButton); moveDownButton = Button.TextButton(manager, "Down"); moveDownButton.HorizontalAlignment = HorizontalAlignment.Stretch; moveDownButton.Visible = false; buttons.Controls.Add(moveDownButton); #endregion applyButton = Button.TextButton(manager, "Apply"); applyButton.HorizontalAlignment = HorizontalAlignment.Right; applyButton.VerticalAlignment = VerticalAlignment.Bottom; grid.AddControl(applyButton, 0, 2, 3); infoLabel = new Label(ScreenManager) { HorizontalTextAlignment = HorizontalAlignment.Left, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Top, WordWrap = true, }; grid.AddControl(infoLabel, 0, 1, 3); #region Listen loadedPacksList = new Listbox<ResourcePack>(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, SelectedItemBrush = new BorderBrush(Color.SaddleBrown * 0.7f), TemplateGenerator = ListTemplateGenerator, }; grid.AddControl(loadedPacksList, 0, 0); activePacksList = new Listbox<ResourcePack>(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, SelectedItemBrush = new BorderBrush(Color.SaddleBrown * 0.7f), TemplateGenerator = ListTemplateGenerator, }; grid.AddControl(activePacksList, 2, 0); #endregion #region Info Grid //Grid infoGrid = new Grid(ScreenManager) //{ // HorizontalAlignment = HorizontalAlignment.Stretch, //}; //infoGrid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Auto, Width = 1 }); //infoGrid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 }); //infoGrid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Auto, Height = 1 }); //infoGrid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Auto, Height = 1 }); //infoGrid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Auto, Height = 1 }); //Label nameLabel = new Label(ScreenManager) //{ // Text = "Name:", //}; //infoGrid.AddControl(nameLabel, 0, 0); //Label authorLabel = new Label(ScreenManager) //{ // Text = "Author:", //}; //infoGrid.AddControl(authorLabel, 0, 1); //Label descriptionLabel = new Label(ScreenManager) //{ // Text = "Description:", //}; //infoGrid.AddControl(descriptionLabel, 0, 2); //grid.AddControl(infoGrid, 0, 1, 3); #endregion loadedPacksList.SelectedItemChanged += loadedList_SelectedItemChanged; activePacksList.SelectedItemChanged += activeList_SelectedItemChanged; addButton.LeftMouseClick += (s, e) => { ResourcePack pack = loadedPacksList.SelectedItem; loadedPacksList.Items.Remove(pack); activePacksList.Items.Add(pack); activePacksList.SelectedItem = pack; }; removeButton.LeftMouseClick += (s, e) => { ResourcePack pack = activePacksList.SelectedItem; activePacksList.Items.Remove(pack); loadedPacksList.Items.Add(pack); loadedPacksList.SelectedItem = pack; }; moveUpButton.LeftMouseClick += (s, e) => { ResourcePack pack = activePacksList.SelectedItem; if (pack == null) return; int index = activePacksList.Items.IndexOf(pack); if (index > 0) { activePacksList.Items.Remove(pack); activePacksList.Items.Insert(index - 1, pack); activePacksList.SelectedItem = pack; } }; moveDownButton.LeftMouseClick += (s, e) => { ResourcePack pack = activePacksList.SelectedItem; if (pack == null) return; int index = activePacksList.Items.IndexOf(pack); if (index < activePacksList.Items.Count - 1) { activePacksList.Items.Remove(pack); activePacksList.Items.Insert(index + 1, pack); activePacksList.SelectedItem = pack; } }; applyButton.LeftMouseClick += (s, e) => { manager.Game.Assets.ApplyResourcePacks(activePacksList.Items); Program.Restart(); }; // Daten laden AssetComponent assets = manager.Game.Assets; foreach (var item in assets.LoadedResourcePacks) loadedPacksList.Items.Add(item); foreach (var item in manager.Game.Assets.ActiveResourcePacks) { activePacksList.Items.Add(item); if (loadedPacksList.Items.Contains(item)) loadedPacksList.Items.Remove(item); } }
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 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 SplitScreen(BaseScreenComponent manager) : base(manager) { Background = new BorderBrush(Color.Gray); //Hintergrundfarbe festlegen Button backButton = Button.TextButton(manager, "Back"); //Neuen TextButton erzeugen backButton.HorizontalAlignment = HorizontalAlignment.Left; //Links backButton.VerticalAlignment = VerticalAlignment.Top; //Oben backButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; //KlickEvent festlegen Controls.Add(backButton); //Button zum Screen hinzufügen //ScrollContainer ScrollContainer scrollContainer = new ScrollContainer(manager) //Neuen ScrollContainer erzeugen { VerticalAlignment = VerticalAlignment.Stretch, // 100% Höhe HorizontalAlignment = HorizontalAlignment.Stretch //100% Breite }; Controls.Add(scrollContainer); //ScrollContainer zum Root(Screen) hinzufügen //Stackpanel - SubControls werden Horizontal oder Vertikal gestackt StackPanel panel = new StackPanel(manager); //Neues Stackpanel erzeugen panel.VerticalAlignment = VerticalAlignment.Stretch; //100% Höhe scrollContainer.Content = panel; //Ein Scroll Container kann nur ein Control beherbergen //Label Label label = new Label(manager) { Text = "Control Showcase" }; //Neues Label erzeugen panel.Controls.Add(label); //Label zu Panel hinzufügen Button tB = Button.TextButton(manager, "TEST"); tB.Background = new TextureBrush(LoadTexture2DFromFile("./test_texture_round.png", manager.GraphicsDevice), TextureBrushMode.Stretch); panel.Controls.Add(tB); //Button Button button = Button.TextButton(manager, "Dummy Button"); //Neuen TextButton erzeugen panel.Controls.Add(button); //Button zu Panel hinzufügen //Progressbar ProgressBar pr = new ProgressBar(manager) //Neue ProgressBar erzeugen { Value = 99, //Aktueller Wert Height = 20, //Höhe Width = 200 //Breite }; panel.Controls.Add(pr); //ProgressBar zu Panel hinzufügen //ListBox Listbox<string> list = new Listbox<string>(manager); //Neue ListBox erstellen list.TemplateGenerator = (item) => //Template Generator festlegen { return new Label(manager) { Text = item }; //Control (Label) erstellen }; panel.Controls.Add(list); //Liste zu Panel hinzufügen list.Items.Add("Hallo"); //Items zur Liste hinzufügen list.Items.Add("Welt"); //... //Combobox Combobox<string> combobox = new Combobox<string>(manager) //Neue Combobox erstellen { Height = 20, //Höhe 20 Width = 100 //Breite 100 }; combobox.TemplateGenerator = (item) => //Template Generator festlegen { return new Label(manager) { Text = item }; //Control (Label) erstellen }; panel.Controls.Add(combobox); //Combobox zu Panel hinzufügen combobox.Items.Add("Combobox"); //Items zu Combobox hinzufügen combobox.Items.Add("Item"); combobox.Items.Add("Hallo"); Button clearCombobox = Button.TextButton(manager, "Clear Combobox"); clearCombobox.LeftMouseClick += (s, e) => { combobox.Items.Clear(); list.Items.Clear(); }; panel.Controls.Add(clearCombobox); //Slider Value Label Label labelSliderHorizontal = new Label(manager); //Horizontaler Slider Slider sliderHorizontal = new Slider(manager) { Width = 150, Height = 20, }; sliderHorizontal.ValueChanged += (value) => { labelSliderHorizontal.Text = "Value: " + value; }; //Event on Value Changed panel.Controls.Add(sliderHorizontal); labelSliderHorizontal.Text = "Value: " + sliderHorizontal.Value; //Set Text initially panel.Controls.Add(labelSliderHorizontal); //Slider Value Label Label labelSliderVertical = new Label(manager); //Vertikaler Slider Slider sliderVertical = new Slider(manager) { Range = 100, Height = 200, Width = 20, Orientation = Orientation.Vertical }; sliderVertical.ValueChanged += (value) => { labelSliderVertical.Text = "Value: " + value; }; panel.Controls.Add(sliderVertical); labelSliderVertical.Text = "Value: " + sliderVertical.Value; panel.Controls.Add(labelSliderVertical); Checkbox checkbox = new Checkbox(manager); panel.Controls.Add(checkbox); //Textbox textbox = new Textbox(manager) //Neue TextBox erzeugen { Background = new BorderBrush(Color.LightGray), //Festlegen eines Backgrounds für ein Control HorizontalAlignment = HorizontalAlignment.Stretch, //100% Breite Text = "TEXTBOX!", //Voreingestellter text MinWidth = 100 //Eine Textbox kann ihre Größe automatisch anpassen }; Button clearTextbox = new Button(manager); clearTextbox.LeftMouseClick += (s, e) => { textbox.SelectionStart = 0; textbox.Text = ""; }; panel.Controls.Add(clearTextbox); panel.Controls.Add(textbox); //Textbox zu Panel hinzufügen }
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); }