예제 #1
0
        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";

            //Register Action
            manager.Game.KeyMapper.AddAction("octoawesome:forward", type =>
            {
                if (type == KeyMapper.KeyType.Down)
                {
                    pressedMoveUp = true;
                }
                else if (type == KeyMapper.KeyType.Up)
                {
                    pressedMoveUp = false;
                }
            });
        }
예제 #2
0
        public MessageScreen(ScreenComponent manager, string title, string content, string buttonText = "OK", Action <Control, MouseEventArgs> buttonClick = null) : base(manager)
        {
            assets = manager.Game.Assets;

            IsOverlay  = true;
            Background = new BorderBrush(Color.Black * 0.5f);
            Title      = title;

            panel = new Panel(manager)
            {
                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);

            panel.Background = NineTileBrush.FromSingleTexture(assets.LoadTexture(typeof(ScreenComponent), "panel"), 30, 30);
        }
예제 #3
0
        /// <summary>
        /// Erzeugt eine neue Instanz der Textbox-Klasse
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="style"></param>
        public Textbox(BaseScreenComponent manager, string style = "")
            : base(manager, style)
        {
            TextColor = Color.Black;
            TabStop   = true;
            CanFocus  = true;
            Padding   = Border.All(5);

            ApplySkin(typeof(Textbox));
        }
예제 #4
0
        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);
        }
예제 #5
0
        public Screen(IScreenManager manager) : base(manager)
        {
            Manager             = manager;
            IsOverlay           = false;
            InHistory           = true;
            HorizontalAlignment = HorizontalAlignment.Stretch;
            VerticalAlignment   = VerticalAlignment.Stretch;
            Margin  = Border.All(0);
            Padding = Border.All(20);

            ApplySkin(typeof(Screen));
        }
예제 #6
0
        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");
        }
예제 #7
0
        /// <summary>
        /// Erzeugt einen neuen Screen.
        /// </summary>
        /// <param name="manager">Der verwendete <see cref="BaseScreenComponent"/></param>
        public Screen(BaseScreenComponent manager) : base(manager)
        {
            Manager             = manager;
            IsOverlay           = false;
            InHistory           = true;
            IsVisibleScreen     = false;
            IsActiveScreen      = false;
            DefaultMouseMode    = MouseMode.Free;
            HorizontalAlignment = HorizontalAlignment.Stretch;
            VerticalAlignment   = VerticalAlignment.Stretch;
            Margin  = Border.All(0);
            Padding = Border.All(20);

            ApplySkin(typeof(Screen));
        }
예제 #8
0
        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";
        }
예제 #9
0
        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);
        }
예제 #10
0
        /// <summary>
        /// Wird aufgerufen wenn ein neues Element zu "Pages" hinzugefügt wird, erstellt einen neuen Eintrag in der TabList
        /// </summary>
        private void OnInsert(TabPage item, int index)
        {
            Label title = new Label(ScreenManager);

            title.Text            = item.Title;
            title.Padding         = Border.All(10);
            title.Background      = TabBrush;
            title.Margin          = new Border(0, 0, TabSpacing, 0);
            title.LeftMouseClick += (s, e) => SelectTab(Pages.IndexOf(item));
            title.CanFocus        = true;
            title.TabStop         = true;
            title.KeyDown        += (s, e) => {
                if (e.Key == engenious.Input.Keys.Enter && title.Focused == TreeState.Active)
                {
                    SelectTab(Pages.IndexOf(item));
                }
            };
            tabListStack.Controls.Add(title);

            SelectTab(SelectedTabIndex);
        }
예제 #11
0
        public Combobox(BaseScreenComponent manager)
            : base(manager)
        {
            mainControl = new ContentControl(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Margin  = Border.All(0),
                Padding = Border.All(0),
            };
            Children.Add(mainControl);

            Selector = new Listbox <T>(manager);
            Selector.HorizontalAlignment  = HorizontalAlignment.Left;
            Selector.VerticalAlignment    = VerticalAlignment.Top;
            Selector.MaxHeight            = 100;
            Selector.TemplateGenerator    = GenerateControl;
            Selector.SelectedItemBrush    = null;
            Selector.Background           = new BorderBrush(Color.White);
            Selector.SelectedItemChanged += Selector_SelectedItemChanged;

            ApplySkin(typeof(Combobox <T>));
        }
예제 #12
0
        public LoadingScreen(ScreenComponent manager) : base(manager)
        {
            Padding     = new Border(0, 0, 0, 0);
            tokenSource = new CancellationTokenSource();

            Title = "Loading";

            SetDefaultBackground();

            //Main Panel
            var mainStack = new Grid(manager);

            mainStack.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Parts, Width = 4
            });
            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);

            var backgroundStack = new Panel(manager)
            {
                Background          = new BorderBrush(Color.White * 0.5f),
                VerticalAlignment   = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Margin = Border.All(10)
            };

            mainStack.AddControl(backgroundStack, 0, 0, 1, 1);

            var mainGrid = new Grid(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch
            };

            mainGrid.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Parts, Width = 1
            });
            mainGrid.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Parts, Width = 3
            });
            mainGrid.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Parts, Width = 1
            });
            mainGrid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Parts, Height = 4
            });
            mainGrid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Parts, Height = 1
            });
            mainGrid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Parts, Height = 1
            });
            mainGrid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Parts, Height = 4
            });

            backgroundStack.Controls.Add(mainGrid);

            var text = new Label(manager)
            {
                Text = "Konfuzius sagt: Das hier lädt...",
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                Padding             = Border.All(10),
            };

            quoteUpdate = Task.Run(async() => await UpdateLabel(text, loadingQuoteProvider, TimeSpan.FromSeconds(1.5), tokenSource.Token));
            mainGrid.AddControl(text, 1, 1);


            //Buttons
            var buttonStack = new StackPanel(manager)
            {
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
                Orientation         = Orientation.Horizontal
            };

            mainGrid.AddControl(buttonStack, 1, 2);

            Button cancelButton = GetButton(Languages.OctoClient.Cancel);

            buttonStack.Controls.Add(cancelButton);

            Debug.WriteLine("Create GameScreen");
            gameScreen = new GameScreen(manager);
            gameScreen.Update(new GameTime());
            gameScreen.OnCenterChanged += SwitchToGame;

            cancelButton.LeftMouseClick += (s, e) =>
            {
                tokenSource.Cancel();
                tokenSource.Dispose();
                manager.Player.SetEntity(null);
                manager.Game.Simulation.ExitGame();
                gameScreen.Unload();
                manager.NavigateBack();
            };
        }
예제 #13
0
        public InventoryScreen(ScreenComponent manager) : base(manager)
        {
            assets = manager.Game.Assets;

            foreach (var item in manager.Game.DefinitionManager.GetDefinitions())
            {
                Texture2D texture = manager.Game.Assets.LoadTexture(item.GetType(), item.Icon);
                toolTextures.Add(item.GetType().FullName, texture);
            }

            player = manager.Player;

            IsOverlay  = true;
            Background = new BorderBrush(Color.Black * 0.3f);

            backgroundBrush = new BorderBrush(Color.Black);
            hoverBrush      = new BorderBrush(Color.Brown);

            Texture2D panelBackground = assets.LoadTexture(typeof(ScreenComponent), "panel");

            Grid grid = new Grid(manager)
            {
                Width  = 800,
                Height = 500,
            };

            grid.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Fixed, Width = 600
            });
            grid.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Fixed, Width = 200
            });
            grid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Parts, Height = 1
            });
            grid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Fixed, Height = 100
            });

            Controls.Add(grid);

            inventory = new InventoryControl(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Background          = NineTileBrush.FromSingleTexture(panelBackground, 30, 30),
                Padding             = Border.All(20),
            };

            grid.AddControl(inventory, 0, 0);

            StackPanel infoPanel = new StackPanel(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Background          = NineTileBrush.FromSingleTexture(panelBackground, 30, 30),
                Padding             = Border.All(20),
                Margin = Border.All(10, 0, 0, 0),
            };

            nameLabel = new Label(manager);
            infoPanel.Controls.Add(nameLabel);
            massLabel = new Label(manager);
            infoPanel.Controls.Add(massLabel);
            volumeLabel = new Label(manager);
            infoPanel.Controls.Add(volumeLabel);
            grid.AddControl(infoPanel, 1, 0);

            Grid toolbar = new Grid(manager)
            {
                Margin = Border.All(0, 10, 0, 0),
                Height = 100,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Background          = NineTileBrush.FromSingleTexture(panelBackground, 30, 30),
            };

            toolbar.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Parts, Width = 1
            });
            for (int i = 0; i < ToolBarComponent.TOOLCOUNT; i++)
            {
                toolbar.Columns.Add(new ColumnDefinition()
                {
                    ResizeMode = ResizeMode.Fixed, Width = 50
                });
            }
            toolbar.Columns.Add(new ColumnDefinition()
            {
                ResizeMode = ResizeMode.Parts, Width = 1
            });
            toolbar.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Parts, Height = 1
            });

            images = new Image[ToolBarComponent.TOOLCOUNT];
            for (int i = 0; i < ToolBarComponent.TOOLCOUNT; i++)
            {
                Image image = images[i] = new Image(manager)
                {
                    Width               = 42,
                    Height              = 42,
                    Background          = backgroundBrush,
                    HorizontalAlignment = HorizontalAlignment.Center,
                    Tag     = i,
                    Padding = Border.All(2),
                };

                image.StartDrag += (e) =>
                {
                    InventorySlot slot = player.Toolbar.Tools[(int)image.Tag];
                    if (slot != null)
                    {
                        e.Handled = true;
                        e.Icon    = toolTextures[slot.Definition.GetType().FullName];
                        e.Content = slot;
                        e.Sender  = toolbar;
                    }
                };

                image.DropEnter += (e) => { image.Background = hoverBrush; };
                image.DropLeave += (e) => { image.Background = backgroundBrush; };
                image.EndDrop   += (e) =>
                {
                    e.Handled = true;

                    if (e.Sender is Grid) // && ShiftPressed
                    {
                        // Swap
                        int           targetIndex = (int)image.Tag;
                        InventorySlot targetSlot  = player.Toolbar.Tools[targetIndex];

                        InventorySlot sourceSlot  = e.Content as InventorySlot;
                        int           sourceIndex = player.Toolbar.GetSlotIndex(sourceSlot);

                        player.Toolbar.SetTool(sourceSlot, targetIndex);
                        player.Toolbar.SetTool(targetSlot, sourceIndex);
                    }
                    else
                    {
                        // Inventory Drop
                        InventorySlot slot = e.Content as InventorySlot;
                        player.Toolbar.SetTool(slot, (int)image.Tag);
                    }
                };

                toolbar.AddControl(image, i + 1, 0);
            }

            grid.AddControl(toolbar, 0, 1, 2);
            Title = Languages.OctoClient.Inventory;
        }
예제 #14
0
        public LoadScreen(ScreenComponent manager) : base(manager)
        {
            Manager  = manager;
            settings = manager.Game.Settings;

            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();
                settings.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 (settings.KeyExists("LastUniverse") && settings.Get <string>("LastUniverse") != null &&
                settings.Get <string>("LastUniverse") != "")
            {
                var lastlevel = levelList.Items.FirstOrDefault(u => u.Id == Guid.Parse(settings.Get <string>("LastUniverse")));
                if (lastlevel != null)
                {
                    levelList.SelectedItem = lastlevel;
                }
            }
        }
        public CreateUniverseScreen(ScreenComponent manager) : base(manager)
        {
            Manager = manager;

            Padding = new Border(0, 0, 0, 0);

            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, "Name: ", nameInput);

            seedInput = GetTextbox();
            AddLabeledControl(grid, "Seed: ", seedInput);

            createButton = Button.TextButton(manager, "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);
                SettingsManager.Set("LastUniverse", guid.ToString());
                manager.Game.Player.InsertPlayer();
                manager.NavigateToScreen(new GameScreen(manager));
            };
            panel.Controls.Add(createButton);
        }
예제 #16
0
        public ConnectionScreen(ScreenComponent manager) : base(manager)
        {
            game    = Manager.Game;
            Padding = new Border(0, 0, 0, 0);

            Title = Languages.OctoClient.CreateUniverse;

            SetDefaultBackground();

            var panel = new StackPanel(manager)
            {
                VerticalAlignment   = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Margin     = Border.All(50),
                Background = new BorderBrush(Color.White * 0.5f),
                Padding    = Border.All(10)
            };

            Controls.Add(panel);

            var grid = new Grid(manager)
            {
                VerticalAlignment   = VerticalAlignment.Stretch,
                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
            });

            var serverNameInput = new Textbox(manager)
            {
                Text = game.Settings.Get("server", "localhost"),
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Background          = new BorderBrush(Color.LightGray, LineType.Solid, Color.Black)
            };

            AddLabeledControl(grid, "Host:", serverNameInput);

            var playerNameInput = new Textbox(manager)
            {
                Text = game.Settings.Get("player", "USERNAME"),
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Background          = new BorderBrush(Color.LightGray, LineType.Solid, Color.Black)
            };

            AddLabeledControl(grid, "Username:"******"server", serverNameInput.Text);
                game.Settings.Set("player", playerNameInput.Text);

                ((ContainerResourceManager)game.ResourceManager)
                .CreateManager(game.ExtensionLoader, game.DefinitionManager, game.Settings, true);

                PlayMultiplayer(manager, playerNameInput.Text);
            };

            grid.Rows.Add(new RowDefinition()
            {
                ResizeMode = ResizeMode.Auto,
            });
            grid.AddControl(createButton, 1, grid.Rows.Count - 1);
        }
예제 #17
0
        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;
            debug.Visible             = false;
            Controls.Add(debug);

            compass = new CompassControl(manager);
            compass.HorizontalAlignment = HorizontalAlignment.Center;
            compass.VerticalAlignment   = VerticalAlignment.Top;
            compass.Margin = Border.All(10);
            compass.Width  = 300;
            compass.Height = 50;
            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);

            healthbar = new HealthBarControl(manager);
            healthbar.HorizontalAlignment = HorizontalAlignment.Left;
            healthbar.VerticalAlignment   = VerticalAlignment.Bottom;
            healthbar.Width   = 240;
            healthbar.Height  = 78;
            healthbar.Maximum = 100;
            healthbar.Value   = 40;
            healthbar.Margin  = Border.All(20, 30);
            Controls.Add(healthbar);

            crosshair = new CrosshairControl(manager);
            crosshair.HorizontalAlignment = HorizontalAlignment.Center;
            crosshair.VerticalAlignment   = VerticalAlignment.Center;
            crosshair.Width  = 8;
            crosshair.Height = 8;
            Controls.Add(crosshair);

            Title = Languages.OctoClient.Game;

            RegisterKeyActions();
        }
예제 #18
0
        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);
            bindingsPage.Padding = Border.All(10);
            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

            #region ExtensionPage

            TabPage extensionPage = new TabPage(manager, Languages.OctoClient.Extensions);
            tabs.Pages.Add(extensionPage);

            ExtensionsOptionControl extensionOptions = new ExtensionsOptionControl(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
            };
            extensionPage.Controls.Add(extensionOptions);

            #endregion

            ////////////////////////////////////////////Restart Button////////////////////////////////////////////
            exitButton = new 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);
        }
예제 #19
0
        public ExtensionsOptionControl(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

            enableButton = new TextButton(manager, Languages.OctoClient.Enable);
            enableButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            enableButton.Visible             = false;
            buttons.Controls.Add(enableButton);

            disableButton = new TextButton(manager, Languages.OctoClient.Disable);
            disableButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            disableButton.Visible             = false;
            buttons.Controls.Add(disableButton);

            #endregion

            applyButton = new TextButton(manager, Languages.OctoClient.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

            loadedExtensionsList = new Listbox <IExtension>(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                SelectedItemBrush   = new BorderBrush(Color.SaddleBrown * 0.7f),
                TemplateGenerator   = ListTemplateGenerator,
            };

            grid.AddControl(loadedExtensionsList, 0, 0);

            activeExtensionsList = new Listbox <IExtension>(manager)
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                SelectedItemBrush   = new BorderBrush(Color.SaddleBrown * 0.7f),
                TemplateGenerator   = ListTemplateGenerator,
            };

            grid.AddControl(activeExtensionsList, 2, 0);

            #endregion

            loadedExtensionsList.SelectedItemChanged += loadedList_SelectedItemChanged;
            activeExtensionsList.SelectedItemChanged += activeList_SelectedItemChanged;

            enableButton.LeftMouseClick += (s, e) =>
            {
                IExtension ext = loadedExtensionsList.SelectedItem;
                loadedExtensionsList.Items.Remove(ext);
                activeExtensionsList.Items.Add(ext);
                activeExtensionsList.SelectedItem = ext;
            };

            disableButton.LeftMouseClick += (s, e) =>
            {
                IExtension ext = activeExtensionsList.SelectedItem;
                activeExtensionsList.Items.Remove(ext);
                loadedExtensionsList.Items.Add(ext);
                loadedExtensionsList.SelectedItem = ext;
            };

            applyButton.LeftMouseClick += (s, e) =>
            {
                //TODO: Apply
                manager.Game.ExtensionLoader.ApplyExtensions(loadedExtensionsList.Items);
                Program.Restart();
            };

            // Daten laden
            var loader = manager.Game.ExtensionLoader;
            foreach (var item in loader.LoadedExtensions)
            {
                loadedExtensionsList.Items.Add(item);
            }

            foreach (var item in loader.ActiveExtensions)
            {
                activeExtensionsList.Items.Add(item);
                if (loadedExtensionsList.Items.Contains(item))
                {
                    loadedExtensionsList.Items.Remove(item);
                }
            }
        }
        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, Languages.OctoClient.Add);
            addButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            addButton.Visible             = false;
            buttons.Controls.Add(addButton);

            removeButton = Button.TextButton(manager, Languages.OctoClient.Remove);
            removeButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            removeButton.Visible             = false;
            buttons.Controls.Add(removeButton);

            moveUpButton = Button.TextButton(manager, Languages.OctoClient.Up);
            moveUpButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            moveUpButton.Visible             = false;
            buttons.Controls.Add(moveUpButton);

            moveDownButton = Button.TextButton(manager, Languages.OctoClient.Down);
            moveDownButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            moveDownButton.Visible             = false;
            buttons.Controls.Add(moveDownButton);

            #endregion

            applyButton = Button.TextButton(manager, Languages.OctoClient.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);
                }
            }
        }
예제 #21
0
        public TargetScreen(ScreenComponent manager, Action <int, int> tp, int x, int y) : base(manager)
        {
            assets = manager.Game.Assets;

            IsOverlay  = true;
            Background = new BorderBrush(Color.Black * 0.5f);
            Title      = "Select target";

            Texture2D panelBackground = assets.LoadTexture(typeof(ScreenComponent), "panel");
            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);

            StackPanel vstack = new StackPanel(manager);

            vstack.Orientation = Orientation.Vertical;
            spanel.Controls.Add(vstack);

            StackPanel xStack = new StackPanel(manager);

            xStack.Orientation = Orientation.Horizontal;
            vstack.Controls.Add(xStack);

            Label xLabel = new Label(manager);

            xLabel.Text = "X:";
            xStack.Controls.Add(xLabel);

            Textbox xText = new Textbox(manager)
            {
                Background = new BorderBrush(Color.Gray),
                Width      = 150,
                Margin     = new Border(2, 10, 2, 10),
                Text       = x.ToString()
            };

            xStack.Controls.Add(xText);

            StackPanel yStack = new StackPanel(manager);

            yStack.Orientation = Orientation.Horizontal;
            vstack.Controls.Add(yStack);

            Label yLabel = new Label(manager);

            yLabel.Text = "Y:";
            yStack.Controls.Add(yLabel);

            Textbox yText = new Textbox(manager)
            {
                Background = new BorderBrush(Color.Gray),
                Width      = 150,
                Margin     = new Border(2, 10, 2, 10),
                Text       = y.ToString()
            };

            yStack.Controls.Add(yText);

            Button closeButton = Button.TextButton(manager, "Teleport");

            closeButton.HorizontalAlignment = HorizontalAlignment.Stretch;
            closeButton.LeftMouseClick     += (s, e) =>
            {
                if (tp != null)
                {
                    tp(int.Parse(xText.Text), int.Parse(yText.Text));
                }
                else
                {
                    manager.NavigateBack();
                }
            };
            spanel.Controls.Add(closeButton);
        }
예제 #22
0
        public CreateUniverseScreen(ScreenComponent manager) : base(manager)
        {
            Manager  = manager;
            settings = manager.Game.Settings;

            Padding = new Border(0, 0, 0, 0);

            Title = Languages.OctoClient.CreateUniverse;

            SetDefaultBackground();

            var panel = new Panel(manager)
            {
                VerticalAlignment   = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Margin     = Border.All(50),
                Background = new BorderBrush(Color.White * 0.5f),
                Padding    = Border.All(10)
            };

            Controls.Add(panel);

            var grid = new Grid(manager)
            {
                VerticalAlignment   = VerticalAlignment.Stretch,
                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.SetEntity(null);

                Guid guid = Manager.Game.Simulation.NewGame(nameInput.Text, seed);
                settings.Set("LastUniverse", guid.ToString());

                Player player = manager.Game.Simulation.LoginPlayer("");
                manager.Game.Player.SetEntity(player);

                manager.NavigateToScreen(new GameScreen(manager));
            };
            panel.Controls.Add(createButton);
        }