public CrosshairControl(ScreenComponent manager) : base(manager) { Texture = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/octocross.png", manager.GraphicsDevice); Transparency = 0.5f; Color = Color.White; }
public InventoryScreen(ScreenComponent manager) : base(manager) { player = manager.Player; IsOverlay = true; Texture2D panelBackground = manager.Content.Load<Texture2D>("Textures/panel"); Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); HorizontalAlignment = HorizontalAlignment.Center; VerticalAlignment = VerticalAlignment.Center; Width = 600; Height = 400; Label headLine = new Label(manager); headLine.Text = "Inventory"; headLine.Font = Skin.Current.HeadlineFont; headLine.HorizontalAlignment = HorizontalAlignment.Left; headLine.VerticalAlignment = VerticalAlignment.Top; Controls.Add(headLine); Button closeButton = Button.TextButton(Manager, "Close"); closeButton.LeftMouseClick += (s, e) => { Manager.NavigateBack(); }; Controls.Add(closeButton); //counter = new LabelControl(ScreenManager) //{ // Font = ScreenManager.NormalText, // Color = Color.Black, // Position = new Index2(((ScreenManager.ScreenSize.X - 600) / 2) + 100, // ((ScreenManager.ScreenSize.Y - 400) / 2) + 140), //}; //Controls.Add(counter); }
public CompassControl(ScreenComponent screenManager) : base(screenManager) { Player = screenManager.Player; compassTexture = ScreenManager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/compass.png", ScreenManager.GraphicsDevice); }
public CompassControl(ScreenComponent screenManager) : base(screenManager) { Player = screenManager.Player; compassTexture = ScreenManager.Content.Load<Texture2D>("Textures/compass"); }
public ToolbarControl(ScreenComponent screenManager) : base(screenManager) { Player = screenManager.Player; toolTextures = new Dictionary<string, Texture2D>(); activeToolLabel = new Label(screenManager); activeToolLabel.VerticalAlignment = VerticalAlignment.Top; activeToolLabel.HorizontalAlignment = HorizontalAlignment.Center; activeToolLabel.Background = new BorderBrush(Color.Black * 0.3f); activeToolLabel.TextColor = Color.White; activeToolLabel.Visible = false; Controls.Add(activeToolLabel); // toolTextures = new Texture2D[Player.Tools.Length]; // int index = 0; foreach (var item in DefinitionManager.Instance.GetItemDefinitions()) { using (MemoryStream stream = new MemoryStream()) { System.Drawing.Bitmap bitmap = item.Icon; bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); toolTextures.Add(item.GetType().FullName, Texture2D.FromStream(ScreenManager.GraphicsDevice, stream)); } } }
public InventoryScreen(ScreenComponent manager) : base(manager) { player = manager.Player; IsOverlay = true; Texture2D panelBackground = manager.Game.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); HorizontalAlignment = HorizontalAlignment.Center; VerticalAlignment = VerticalAlignment.Center; Width = 600; Height = 400; Label headLine = new Label(manager); headLine.Text = Languages.OctoClient.Inventory; headLine.Font = Skin.Current.HeadlineFont; headLine.HorizontalAlignment = HorizontalAlignment.Left; headLine.VerticalAlignment = VerticalAlignment.Top; Controls.Add(headLine); Button closeButton = Button.TextButton(manager, Languages.OctoClient.Close); closeButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; Controls.Add(closeButton); //counter = new LabelControl(ScreenManager) //{ // Font = ScreenManager.NormalText, // Color = Color.Black, // Position = new Index2(((ScreenManager.ScreenSize.X - 600) / 2) + 100, // ((ScreenManager.ScreenSize.Y - 400) / 2) + 140), //}; //Controls.Add(counter); Title = Languages.OctoClient.Inventory; }
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 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); } }
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 CrosshairControl(ScreenComponent manager) : base(manager) { assets = manager.Game.Assets; Transparency = 0.5f; Color = Color.White; Texture = assets.LoadTexture(GetType(), "octocross"); }
public OctoGame() : base() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; Window.Title = "OctoAwesome"; graphics.PreferredBackBufferWidth = 1280; graphics.PreferredBackBufferHeight = 720; IsMouseVisible = true; Window.AllowUserResizing = false; TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 15); int viewrange; if (int.TryParse(ConfigurationManager.AppSettings["Viewrange"], out viewrange)) { if (viewrange < 1) throw new NotSupportedException("Viewrange in app.config darf nicht kleiner 1 sein"); SceneControl.VIEWRANGE = viewrange; } //int viewheight; //if (int.TryParse(ConfigurationManager.AppSettings["Viewheight"], out viewheight)) //{ // if (viewheight < 1) // throw new NotSupportedException("Viewheight in app.config darf nicht kleiner 1 sein"); // SceneComponent.VIEWHEIGHT = viewheight; //} ResourceManager.CacheSize = ((viewrange * 2) + 1) * ((viewrange * 2) + 1) * 5 * 2; input = new InputComponent(this); input.UpdateOrder = 1; Components.Add(input); simulation = new SimulationComponent(this); simulation.UpdateOrder = 3; Components.Add(simulation); player = new PlayerComponent(this, input, simulation); player.UpdateOrder = 2; Components.Add(player); camera = new CameraComponent(this, player); camera.UpdateOrder = 4; Components.Add(camera); screens = new ScreenComponent(this, player, camera); screens.UpdateOrder = 8; screens.DrawOrder = 4; Components.Add(screens); }
public CompassControl(ScreenComponent screenManager) : base(screenManager) { assets = screenManager.Game.Assets; Player = screenManager.Player; Padding = Border.All(7); Texture2D background = assets.LoadTexture(typeof(ScreenComponent), "buttonLong_brown_pressed"); Background = NineTileBrush.FromSingleTexture(background, 7, 7); compassTexture = assets.LoadTexture(GetType(), "compass"); }
public CompassControl(ScreenComponent screenManager) : base(screenManager) { Player = screenManager.Player; Padding = Border.All(7); Background = NineTileBrush.FromSingleTexture( screenManager.Game.Screen.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/buttonLong_brown_pressed.png", screenManager.GraphicsDevice), 7, 7); compassTexture = ScreenManager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/compass.png", ScreenManager.GraphicsDevice); }
public PauseScreen(ScreenComponent manager) : base(manager) { assets = manager.Game.Assets; // IsOverlay = true; // Background = new BorderBrush(new Color(Color.Black, 0.5f)); Background = new TextureBrush(assets.LoadTexture(typeof(ScreenComponent), "background"), TextureBrushMode.Stretch); StackPanel stack = new StackPanel(manager); Controls.Add(stack); Button resumeButton = Button.TextButton(manager, Languages.OctoClient.Resume); resumeButton.HorizontalAlignment = HorizontalAlignment.Stretch; resumeButton.Margin = new Border(0, 0, 0, 10); resumeButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; stack.Controls.Add(resumeButton); 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 mainMenuButton = Button.TextButton(manager, Languages.OctoClient.ToMainMenu); mainMenuButton.HorizontalAlignment = HorizontalAlignment.Stretch; mainMenuButton.Margin = new Border(0, 0, 0, 10); mainMenuButton.LeftMouseClick += (s, e) => { manager.Player.RemovePlayer(); manager.Game.Simulation.ExitGame(); manager.NavigateHome(); }; stack.Controls.Add(mainMenuButton); }
public InventoryControl(ScreenComponent manager, int columns = COLUMNS) : base(manager) { ScrollContainer scroll = new ScrollContainer(manager) { Margin = new Border(0, 0, 0, 0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, }; Controls.Add(scroll); Grid grid = new Grid(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, }; for (int i = 0; i < columns; i++) grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 }); int rows = (int)System.Math.Ceiling((float)manager.Game.Player.ActorHost.Player.Inventory.Count / columns); for (int i = 0; i < rows; i++) grid.Rows.Add(new RowDefinition() { ResizeMode = ResizeMode.Fixed, Height = 50 }); int column = 0; int row = 0; foreach (var item in manager.Game.Player.ActorHost.Player.Inventory) { Texture2D texture = manager.Game.Assets.LoadTexture(item.Definition.GetType(), item.Definition.Icon); var image = new Image(manager) { Texture = texture, Width = 42, Height = 42, VerticalAlignment = VerticalAlignment.Center }; image.MouseEnter += (s, e) => { HoveredSlot = item; }; image.MouseLeave += (s, e) => { HoveredSlot = null; }; image.StartDrag += (e) => { e.Handled = true; e.Icon = texture; e.Content = item; e.Sender = image; }; var label = new Label(manager) { Text = item.Amount.ToString(), HorizontalAlignment = HorizontalAlignment.Right, VerticalTextAlignment = VerticalAlignment.Bottom, Background = new BorderBrush(Color.White) }; grid.AddControl(image, column, row); grid.AddControl(label, column, row); column++; if (column >= columns) { row++; column = 0; } } scroll.Content = grid; }
public OctoGame() : base() { graphics = new GraphicsDeviceManager(this); graphics.PreferredBackBufferWidth = 1080; graphics.PreferredBackBufferHeight = 720; Content.RootDirectory = "Content"; Window.Title = "OctoAwesome"; IsMouseVisible = true; Window.AllowUserResizing = true; TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 15); int viewrange; if (int.TryParse(SettingsManager.Get("Viewrange"), out viewrange)) { if (viewrange < 1) throw new NotSupportedException("Viewrange in app.config darf nicht kleiner 1 sein"); SceneControl.VIEWRANGE = viewrange; } Simulation = new SimulationComponent(this); Simulation.UpdateOrder = 4; Components.Add(Simulation); Player = new PlayerComponent(this); Player.UpdateOrder = 2; Components.Add(Player); Camera = new CameraComponent(this); Camera.UpdateOrder = 3; Components.Add(Camera); Screen = new ScreenComponent(this); Screen.UpdateOrder = 1; Screen.DrawOrder = 1; Components.Add(Screen); Window.ClientSizeChanged += (s, e) => { if (Window.ClientBounds.Height == graphics.PreferredBackBufferHeight && Window.ClientBounds.Width == graphics.PreferredBackBufferWidth) return; graphics.PreferredBackBufferHeight = Window.ClientBounds.Height; graphics.PreferredBackBufferWidth = Window.ClientBounds.Width; graphics.ApplyChanges(); }; }
internal static List<CrewMember> getCrew(ScreenComponent manager) { using (Stream stream = manager.Game.Assets.LoadStream(typeof(CrewMember), "crew", "xml")) { try { XmlSerializer serializer = new XmlSerializer(typeof(List<CrewMember>)); return (List<CrewMember>)serializer.Deserialize(stream); } catch (Exception ex) { } return new List<CrewMember>(); } }
public BindingsOptionControl(ScreenComponent manager) : base(manager) { Manager = manager; ScrollContainer bindingsScroll = new ScrollContainer(manager); 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 = manager.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); } }
public GameScreen(ScreenComponent manager) : base(manager) { DefaultMouseMode = MouseMode.Captured; Manager = manager; Padding = Border.All(0); scene = new SceneControl(manager); scene.HorizontalAlignment = HorizontalAlignment.Stretch; scene.VerticalAlignment = VerticalAlignment.Stretch; Controls.Add(scene); debug = new DebugControl(manager); debug.HorizontalAlignment = HorizontalAlignment.Stretch; debug.VerticalAlignment = VerticalAlignment.Stretch; Controls.Add(debug); compass = new CompassControl(manager); compass.HorizontalAlignment = HorizontalAlignment.Center; compass.VerticalAlignment = VerticalAlignment.Top; compass.Width = 300; compass.Height = 30; Controls.Add(compass); toolbar = new ToolbarControl(manager); toolbar.HorizontalAlignment = HorizontalAlignment.Stretch; toolbar.VerticalAlignment = VerticalAlignment.Bottom; toolbar.Height = 100; Controls.Add(toolbar); minimap = new MinimapControl(manager, scene); minimap.HorizontalAlignment = HorizontalAlignment.Right; minimap.VerticalAlignment = VerticalAlignment.Bottom; minimap.Width = 128; minimap.Height = 128; minimap.Margin = Border.All(5); Controls.Add(minimap); crosshair = new CrosshairControl(manager); crosshair.HorizontalAlignment = HorizontalAlignment.Center; crosshair.VerticalAlignment = VerticalAlignment.Center; crosshair.Width = 8; crosshair.Height = 8; Controls.Add(crosshair); Title = "Game"; }
public MessageScreen(ScreenComponent manager, string title, string content, string buttonText = "OK", Action<Control, MouseEventArgs> buttonClick = null) : base(manager) { IsOverlay = true; Background = new BorderBrush(Color.Black * 0.5f); Title = title; Texture2D panelBackground = manager.Game.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); Panel panel = new Panel(manager) { Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30), Padding = Border.All(20), HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }; Controls.Add(panel); StackPanel spanel = new StackPanel(manager); panel.Controls.Add(spanel); Label headLine = new Label(manager) { Text = title, Font = Skin.Current.HeadlineFont, HorizontalAlignment = HorizontalAlignment.Stretch }; spanel.Controls.Add(headLine); Label contentLabel = new Label(manager) { Text = content, Font = Skin.Current.TextFont, HorizontalAlignment = HorizontalAlignment.Stretch }; spanel.Controls.Add(contentLabel); Button closeButton = Button.TextButton(manager, buttonText); closeButton.HorizontalAlignment = HorizontalAlignment.Stretch; closeButton.LeftMouseClick += (s, e) => { if (buttonClick != null) buttonClick(s, e); else manager.NavigateBack(); }; spanel.Controls.Add(closeButton); }
public ToolbarControl(ScreenComponent screenManager) : base(screenManager) { Player = screenManager.Player; toolTextures = new Dictionary<string, Texture2D>(); // toolTextures = new Texture2D[Player.Tools.Length]; // int index = 0; foreach (var item in DefinitionManager.GetItemDefinitions()) { using (MemoryStream stream = new MemoryStream()) { System.Drawing.Bitmap bitmap = item.Icon; bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); toolTextures.Add(item.GetType().FullName, Texture2D.FromStream(ScreenManager.GraphicsDevice, stream)); } } }
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 GameScreen(ScreenComponent manager) : base(manager) { Manager = manager; Padding = Border.All(0); SceneControl scene = new SceneControl(manager); scene.HorizontalAlignment = HorizontalAlignment.Stretch; scene.VerticalAlignment = VerticalAlignment.Stretch; Controls.Add(scene); DebugControl debug = new DebugControl(manager); debug.HorizontalAlignment = HorizontalAlignment.Stretch; debug.VerticalAlignment = VerticalAlignment.Stretch; Controls.Add(debug); CompassControl compass = new CompassControl(manager); compass.HorizontalAlignment = HorizontalAlignment.Center; compass.VerticalAlignment = VerticalAlignment.Top; compass.Width = 300; compass.Height = 30; Controls.Add(compass); ToolbarControl toolbar = new ToolbarControl(manager); toolbar.HorizontalAlignment = HorizontalAlignment.Stretch; toolbar.VerticalAlignment = VerticalAlignment.Bottom; toolbar.Height = 100; Controls.Add(toolbar); MinimapControl minimap = new MinimapControl(manager, scene); minimap.HorizontalAlignment = HorizontalAlignment.Right; minimap.VerticalAlignment = VerticalAlignment.Bottom; minimap.Width = 128; minimap.Height = 128; minimap.Margin = Border.All(5); Controls.Add(minimap); }
public MainScreen(ScreenComponent manager) : base(manager) { StackPanel stack = new StackPanel(manager); Controls.Add(stack); Button startButton = Button.TextButton(manager, "Start"); startButton.HorizontalAlignment = HorizontalAlignment.Stretch; startButton.LeftMouseClick += (s, e) => { manager.NavigateToScreen(new GameScreen(manager)); }; stack.Controls.Add(startButton); Button optionButton = Button.TextButton(manager, "Options"); optionButton.HorizontalAlignment = HorizontalAlignment.Stretch; optionButton.MinWidth = 200; stack.Controls.Add(optionButton); Button exitButton = Button.TextButton(manager, "Exit"); exitButton.HorizontalAlignment = HorizontalAlignment.Stretch; exitButton.LeftMouseClick += (s, e) => { manager.Exit(); }; stack.Controls.Add(exitButton); }
public BaseScreen(ScreenComponent manager) : base(manager) { assets = manager.Game.Assets; }
public SceneControl(ScreenComponent manager, string style = "") : base(manager, style) { player = manager.Player; camera = manager.Camera; Manager = manager; simpleShader = manager.Game.Content.Load<Effect>("simple"); sunTexture = manager.Game.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/sun.png", manager.GraphicsDevice); List<Bitmap> bitmaps = new List<Bitmap>(); var definitions = DefinitionManager.Instance.GetBlockDefinitions(); foreach (var definition in definitions) bitmaps.AddRange(definition.Textures); int size = (int)Math.Ceiling(Math.Sqrt(bitmaps.Count)); Bitmap blocks = new Bitmap(size * TEXTURESIZE, size * TEXTURESIZE); using (Graphics g = Graphics.FromImage(blocks)) { int counter = 0; foreach (var bitmap in bitmaps) { int x = counter % size; int y = (int)(counter / size); g.DrawImage(bitmap, new System.Drawing.Rectangle(TEXTURESIZE * x, TEXTURESIZE * y, TEXTURESIZE, TEXTURESIZE)); counter++; } } using (MemoryStream stream = new MemoryStream()) { blocks.Save(stream, ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); blockTextures = Texture2D.FromStream(manager.GraphicsDevice, stream); } planet = ResourceManager.Instance.GetPlanet(0); // TODO: evtl. Cache-Size (Dimensions) VIEWRANGE + 1 int range = ((int)Math.Pow(2, VIEWRANGE) - 2) / 2; localChunkCache = new LocalChunkCache(ResourceManager.Instance.GlobalChunkCache, VIEWRANGE, range); chunkRenderer = new ChunkRenderer[ (int)Math.Pow(2, VIEWRANGE) * (int)Math.Pow(2, VIEWRANGE), planet.Size.Z]; orderedChunkRenderer = new List<ChunkRenderer>( (int)Math.Pow(2, VIEWRANGE) * (int)Math.Pow(2, VIEWRANGE) * planet.Size.Z); for (int i = 0; i < chunkRenderer.GetLength(0); i++) { for (int j = 0; j < chunkRenderer.GetLength(1); j++) { ChunkRenderer renderer = new ChunkRenderer(simpleShader, manager.GraphicsDevice, camera.Projection, blockTextures); chunkRenderer[i, j] = renderer; orderedChunkRenderer.Add(renderer); } } backgroundThread = new Thread(BackgroundLoop); backgroundThread.Priority = ThreadPriority.Lowest; backgroundThread.IsBackground = true; backgroundThread.Start(); selectionLines = new[] { new VertexPositionColor(new Vector3(-0.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), }; billboardVertices = new[] { new VertexPositionTexture(new Vector3(-0.5f, 0.5f, 0), new Vector2(0, 0)), new VertexPositionTexture(new Vector3(0.5f, 0.5f, 0), new Vector2(1, 0)), new VertexPositionTexture(new Vector3(-0.5f, -0.5f, 0), new Vector2(0, 1)), new VertexPositionTexture(new Vector3(0.5f, 0.5f, 0), new Vector2(1, 0)), new VertexPositionTexture(new Vector3(0.5f, -0.5f, 0), new Vector2(1, 1)), new VertexPositionTexture(new Vector3(-0.5f, -0.5f, 0), new Vector2(0, 1)), }; selectionIndeces = new short[] { 0, 1, 0, 2, 1, 3, 2, 3, 4, 5, 4, 6, 5, 7, 6, 7, 0, 4, 1, 5, 2, 6, 3, 7 }; sunEffect = new BasicEffect(manager.GraphicsDevice); sunEffect.TextureEnabled = true; selectionEffect = new BasicEffect(manager.GraphicsDevice); selectionEffect.VertexColorEnabled = true; MiniMapTexture = new RenderTarget2D(manager.GraphicsDevice, 128, 128, false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8); // , false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8, 0, RenderTargetUsage.PreserveContents); miniMapProjectionMatrix = Matrix.CreateOrthographic(128, 128, 1, 10000); }
public OptionsOptionControl(ScreenComponent manager, OptionsScreen optionsScreen) : base(manager) { settings = manager.Game.Settings; this.optionsScreen = optionsScreen; ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager) { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Top, Padding = new Border(20, 20, 20, 20), Width = 650 }; Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = settings.Get<string>("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(settings.Get<string>("DisablePersistence")), HookBrush = new TextureBrush(manager.Game.Assets.LoadTexture(typeof(ScreenComponent), "iconCheck_brown"), 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 = settings.Get<string>("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(settings.Get<string>("EnableFullscreen")), HookBrush = new TextureBrush(manager.Game.Assets.LoadTexture(typeof(ScreenComponent), "iconCheck_brown"), 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 = settings.Get<string>("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 = settings.Get<string>("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); }
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 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; }