public AssetComponent(OctoGame game) : base(game) { settings = game.Settings; Ready = false; textures = new Dictionary <string, Texture2D>(); bitmaps = new Dictionary <string, Bitmap>(); ScanForResourcePacks(); // Load list of active Resource Packs List <ResourcePack> toLoad = new List <ResourcePack>(); if (settings.KeyExists(SETTINGSKEY)) { string activePackPathes = settings.Get <string>(SETTINGSKEY); if (!string.IsNullOrEmpty(activePackPathes)) { string[] packPathes = activePackPathes.Split(';'); foreach (var packPath in packPathes) { ResourcePack resourcePack = loadedPacks.FirstOrDefault(p => p.Path.Equals(packPath)); if (resourcePack != null) { toLoad.Add(resourcePack); } } } } ApplyResourcePacks(toLoad); }
public EntityComponent(OctoGame game, SimulationComponent simulation) : base(game) { Simulation = simulation; Entities = new List <Entity>(); graphicsDevice = game.GraphicsDevice; effect = new BasicEffect(graphicsDevice); }
public PlayerComponent(OctoGame game, IResourceManager resourceManager) : base(game) { this.resourceManager = resourceManager; Game = game; }
public ScreenComponent(OctoGame game) : base(game) { Game = game; TitlePrefix = "OctoAwesome"; }
public PlayerComponent(OctoGame game) : base(game) { Game = game; }
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); }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = manager.Game; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.Options; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); SetDefaultBackground(); TabControl tabs = new TabControl(manager) { Padding = new Border(20, 20, 20, 20), Width = 700, TabPageBackground = NineTileBrush.FromSingleTexture(panelBackground, 30, 30), TabBrush = NineTileBrush.FromSingleTexture(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/buttonLong_brown.png", manager.GraphicsDevice), 15, 15), TabActiveBrush = NineTileBrush.FromSingleTexture(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/buttonLong_beige.png", manager.GraphicsDevice), 15, 15), }; Controls.Add(tabs); #region OptionsPage TabPage optionsPage = new TabPage(manager, "Options"); tabs.Pages.Add(optionsPage); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager) { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Top, Padding = new Border(20, 20, 20, 20), Width = 650 }; optionsPage.Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = SettingsManager.Get("Viewrange"); rangeTitle = new Label(manager) { Text = Languages.OctoClient.Viewrange + ": " + viewrange }; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager) { HorizontalAlignment = HorizontalAlignment.Stretch, Height = 20, Range = 9, Value = int.Parse(viewrange) - 1 }; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, Margin = new Border(0, 20, 0, 0) }; settingsStack.Controls.Add(persistenceStack); Label persistenceTitle = new Label(manager) { Text = Languages.OctoClient.DisablePersistence + ":" }; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager) { Checked = bool.Parse(SettingsManager.Get("DisablePersistence")), HookBrush = new TextureBrush(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/iconCheck_brown.png", manager.GraphicsDevice), TextureBrushMode.Stretch), }; disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager) { Orientation = Orientation.Vertical, Margin = new Border(0, 20, 0, 0), HorizontalAlignment = HorizontalAlignment.Stretch }; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager) { Text = SettingsManager.Get("ChunkRoot"), Enabled = false, HorizontalAlignment = HorizontalAlignment.Stretch, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray) }; mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, Languages.OctoClient.ChangePath); changePath.HorizontalAlignment = HorizontalAlignment.Center; changePath.Height = 40; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); //////////////////////Fullscreen////////////////////// StackPanel fullscreenStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, Margin = new Border(0, 20, 0, 0) }; settingsStack.Controls.Add(fullscreenStack); Label fullscreenTitle = new Label(manager) { Text = Languages.OctoClient.EnableFullscreenOnStartup + ":" }; fullscreenStack.Controls.Add(fullscreenTitle); Checkbox enableFullscreen = new Checkbox(manager) { Checked = bool.Parse(SettingsManager.Get("EnableFullscreen")), HookBrush = new TextureBrush(manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/UI/iconCheck_brown.png", manager.GraphicsDevice), TextureBrushMode.Stretch), }; enableFullscreen.CheckedChanged += (state) => SetFullscreen(state); fullscreenStack.Controls.Add(enableFullscreen); //////////////////////Auflösung////////////////////// StackPanel resolutionStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, Margin = new Border(0, 20, 0, 0) }; settingsStack.Controls.Add(resolutionStack); Label resolutionTitle = new Label(manager) { Text = Languages.OctoClient.Resolution + ":" }; resolutionStack.Controls.Add(resolutionTitle); Textbox resolutionWidthTextbox = new Textbox(manager) { Text = SettingsManager.Get("Width"), Width = 50, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray) }; resolutionWidthTextbox.TextChanged += ResolutionWidthTextbox_TextChanged; resolutionStack.Controls.Add(resolutionWidthTextbox); Label xLabel = new Label(manager) { Text = "x" }; resolutionStack.Controls.Add(xLabel); Textbox resolutionHeightTextbox = new Textbox(manager) { Text = SettingsManager.Get("Height"), Width = 50, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray) }; resolutionHeightTextbox.TextChanged += ResolutionHeightTextbox_TextChanged; resolutionStack.Controls.Add(resolutionHeightTextbox); Label pxLabel = new Label(manager) { Text = Languages.OctoClient.Pixels }; resolutionStack.Controls.Add(pxLabel); #endregion #region BindingsPage TabPage bindingsPage = new TabPage(manager, "Bindings"); tabs.Pages.Add(bindingsPage); ScrollContainer bindingsScroll = new ScrollContainer(manager); bindingsPage.Controls.Add(bindingsScroll); StackPanel bindingsStack = new StackPanel(manager) { Orientation = Orientation.Vertical, Padding = new Border(20, 20, 20, 20), Width = 650 }; bindingsScroll.Content = bindingsStack; //////////////////////////////KeyBindings//////////////////////////////////////////// var bindings = game.KeyMapper.GetBindings(); foreach (var binding in bindings) { StackPanel bindingStack = new StackPanel(manager) { Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Stretch, Height = 35 }; Label lbl = new Label(manager) { Text = binding.DisplayName, Width = 480 }; Label bindingKeyLabel = new Label(manager) { Text = binding.Keys.First().ToString(), HorizontalAlignment = HorizontalAlignment.Right, Width = 90, Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray), Tag = new object[] { binding.Id, binding.Keys.First() } }; bindingKeyLabel.LeftMouseClick += BindingKeyLabel_LeftMouseClick; bindingStack.Controls.Add(lbl); bindingStack.Controls.Add(bindingKeyLabel); bindingsStack.Controls.Add(bindingStack); } #endregion ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, Languages.OctoClient.RestartGameToApplyChanges); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => Program.Restart(); exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }
public SimulationComponent(OctoGame game, IExtensionResolver extensionResolver, IResourceManager resourceManager) : base(game) { Service = game.Service; this.extensionResolver = extensionResolver; this.resourceManager = resourceManager; }
public CameraComponent(OctoGame game) : base(game) { player = game.Player; }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = (OctoGame)manager.Game; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.Options; SetDefaultBackground(); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager); settingsStack.Orientation = Orientation.Vertical; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); settingsStack.Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); settingsStack.Padding = new Border(20, 20, 20, 20); settingsStack.Width = 500; Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = SettingsManager.Get("Viewrange"); rangeTitle = new Label(manager); rangeTitle.Text = Languages.OctoClient.Viewrange + ": " + viewrange; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager); viewrangeSlider.HorizontalAlignment = HorizontalAlignment.Stretch; viewrangeSlider.Height = 20; viewrangeSlider.Range = 9; viewrangeSlider.Value = int.Parse(viewrange) - 1; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager); persistenceStack.Orientation = Orientation.Horizontal; persistenceStack.Margin = new Border(0, 10, 0, 0); settingsStack.Controls.Add(persistenceStack); persistenceTitle = new Label(manager); persistenceTitle.Text = Languages.OctoClient.DisablePersistence + ":"; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager); disablePersistence.Checked = bool.Parse(SettingsManager.Get("DisablePersistence")); disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager); mapPathStack.Orientation = Orientation.Horizontal; mapPathStack.Margin = new Border(0, 10, 0, 0); mapPathStack.HorizontalAlignment = HorizontalAlignment.Stretch; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager); // mapPath.HorizontalAlignment = HorizontalAlignment.Stretch; mapPath.Text = SettingsManager.Get("ChunkRoot"); mapPath.Enabled = false; mapPath.Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray); mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, Languages.OctoClient.ChangePath); changePath.Height = 31; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, Languages.OctoClient.RestartGameToApplyChanges); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => Program.Restart(); exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = (OctoGame)manager.Game; Padding = new Border(0, 0, 0, 0); Title = "Options"; ////////////////////////////////////////////Background//////////////////////////////////////////// Image background = new Image(manager); background.Texture = Manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/background_notext.png", Manager.GraphicsDevice); background.VerticalAlignment = VerticalAlignment.Stretch; background.HorizontalAlignment = HorizontalAlignment.Stretch; Controls.Add(background); ////////////////////////////////////////////Back Button//////////////////////////////////////////// Button backButton = Button.TextButton(manager, "Back"); backButton.VerticalAlignment = VerticalAlignment.Top; backButton.HorizontalAlignment = HorizontalAlignment.Left; backButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; backButton.Margin = new Border(10, 10, 10, 10); Controls.Add(backButton); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager); settingsStack.Orientation = Orientation.Vertical; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); settingsStack.Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); settingsStack.Padding = new Border(20, 20, 20, 20); Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = ConfigurationManager.AppSettings["Viewrange"]; rangeTitle = new Label(manager); rangeTitle.Text = "Viewrange: " + viewrange; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager); viewrangeSlider.HorizontalAlignment = HorizontalAlignment.Stretch; viewrangeSlider.Height = 20; viewrangeSlider.Range = 9; viewrangeSlider.Value = int.Parse(viewrange) -1; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager); persistenceStack.Orientation = Orientation.Horizontal; persistenceStack.Margin = new Border(0, 10, 0, 0); settingsStack.Controls.Add(persistenceStack); persistenceTitle = new Label(manager); persistenceTitle.Text = "Disable persistence:"; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager); disablePersistence.Checked = bool.Parse(ConfigurationManager.AppSettings["DisablePersistence"]); disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager); mapPathStack.Orientation = Orientation.Horizontal; mapPathStack.Margin = new Border(0, 10, 0, 0); mapPathStack.HorizontalAlignment = HorizontalAlignment.Stretch; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager); // mapPath.HorizontalAlignment = HorizontalAlignment.Stretch; mapPath.Text = ConfigurationManager.AppSettings["ChunkRoot"]; mapPath.Enabled = false; mapPath.Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray); mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, "Change Path"); changePath.Height = 31; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); //////////////////////Delete Map////////////////////// deleteButton = Button.TextButton(manager, "Delete Map"); deleteButton.HorizontalAlignment = HorizontalAlignment.Stretch; deleteButton.Margin = new Border(0, 10, 0, 0); deleteButton.LeftMouseClick += (s, e) => deleteMap(); settingsStack.Controls.Add(deleteButton); ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, "Restart game to apply changes"); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => { Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location); game.Exit(); }; exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }
public OptionsScreen(ScreenComponent manager) : base(manager) { game = (OctoGame)manager.Game; Padding = new Border(0, 0, 0, 0); Title = Languages.OctoClient.Options; ////////////////////////////////////////////Background//////////////////////////////////////////// Image background = new Image(manager); background.Texture = Manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/background_notext.png", Manager.GraphicsDevice); background.VerticalAlignment = VerticalAlignment.Stretch; background.HorizontalAlignment = HorizontalAlignment.Stretch; Controls.Add(background); ////////////////////////////////////////////Back Button//////////////////////////////////////////// Button backButton = Button.TextButton(manager, Languages.OctoClient.Back); backButton.VerticalAlignment = VerticalAlignment.Top; backButton.HorizontalAlignment = HorizontalAlignment.Left; backButton.LeftMouseClick += (s, e) => { manager.NavigateBack(); }; backButton.Margin = new Border(10, 10, 10, 10); Controls.Add(backButton); ////////////////////////////////////////////Settings Stack//////////////////////////////////////////// StackPanel settingsStack = new StackPanel(manager); settingsStack.Orientation = Orientation.Vertical; Texture2D panelBackground = manager.Content.LoadTexture2DFromFile("./Assets/OctoAwesome.Client/panel.png", manager.GraphicsDevice); settingsStack.Background = NineTileBrush.FromSingleTexture(panelBackground, 30, 30); settingsStack.Padding = new Border(20, 20, 20, 20); Controls.Add(settingsStack); //////////////////////Viewrange////////////////////// string viewrange = ConfigurationManager.AppSettings["Viewrange"]; rangeTitle = new Label(manager); rangeTitle.Text = Languages.OctoClient.Viewrange + ": " + viewrange; settingsStack.Controls.Add(rangeTitle); Slider viewrangeSlider = new Slider(manager); viewrangeSlider.HorizontalAlignment = HorizontalAlignment.Stretch; viewrangeSlider.Height = 20; viewrangeSlider.Range = 9; viewrangeSlider.Value = int.Parse(viewrange) - 1; viewrangeSlider.ValueChanged += (value) => SetViewrange(value + 1); settingsStack.Controls.Add(viewrangeSlider); //////////////////////Persistence////////////////////// StackPanel persistenceStack = new StackPanel(manager); persistenceStack.Orientation = Orientation.Horizontal; persistenceStack.Margin = new Border(0, 10, 0, 0); settingsStack.Controls.Add(persistenceStack); persistenceTitle = new Label(manager); persistenceTitle.Text = Languages.OctoClient.DisablePersistence + ":"; persistenceStack.Controls.Add(persistenceTitle); Checkbox disablePersistence = new Checkbox(manager); disablePersistence.Checked = bool.Parse(ConfigurationManager.AppSettings["DisablePersistence"]); disablePersistence.CheckedChanged += (state) => SetPersistence(state); persistenceStack.Controls.Add(disablePersistence); //////////////////////Map Path////////////////////// StackPanel mapPathStack = new StackPanel(manager); mapPathStack.Orientation = Orientation.Horizontal; mapPathStack.Margin = new Border(0, 10, 0, 0); mapPathStack.HorizontalAlignment = HorizontalAlignment.Stretch; settingsStack.Controls.Add(mapPathStack); mapPath = new Textbox(manager); // mapPath.HorizontalAlignment = HorizontalAlignment.Stretch; mapPath.Text = ConfigurationManager.AppSettings["ChunkRoot"]; mapPath.Enabled = false; mapPath.Background = new BorderBrush(Color.LightGray, LineType.Solid, Color.Gray); mapPathStack.Controls.Add(mapPath); Button changePath = Button.TextButton(manager, Languages.OctoClient.ChangePath); changePath.Height = 31; changePath.LeftMouseClick += (s, e) => ChangePath(); mapPathStack.Controls.Add(changePath); //////////////////////Delete Map////////////////////// deleteButton = Button.TextButton(manager, Languages.OctoClient.DeleteMap); deleteButton.HorizontalAlignment = HorizontalAlignment.Stretch; deleteButton.Margin = new Border(0, 10, 0, 0); deleteButton.LeftMouseClick += (s, e) => deleteMap(); settingsStack.Controls.Add(deleteButton); ////////////////////////////////////////////Restart Button//////////////////////////////////////////// exitButton = Button.TextButton(manager, Languages.OctoClient.RestartGameToApplyChanges); exitButton.VerticalAlignment = VerticalAlignment.Top; exitButton.HorizontalAlignment = HorizontalAlignment.Right; exitButton.Enabled = false; exitButton.Visible = false; exitButton.LeftMouseClick += (s, e) => { Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location); game.Exit(); }; exitButton.Margin = new Border(10, 10, 10, 10); Controls.Add(exitButton); }