diff --git a/DangerousD/Content/Content.mgcb b/DangerousD/Content/Content.mgcb index 75c67b0..5a0551a 100644 --- a/DangerousD/Content/Content.mgcb +++ b/DangerousD/Content/Content.mgcb @@ -27,12 +27,12 @@ /processorParam:TextureFormat=Compressed /build:Font_25.spritefont -#begin Font_30.spritefont +#begin Font2.spritefont /importer:FontDescriptionImporter /processor:FontDescriptionProcessor /processorParam:PremultiplyAlpha=True /processorParam:TextureFormat=Compressed -/build:Font_30.spritefont +/build:Font2.spritefont #begin wall.jpg /importer:TextureImporter diff --git a/DangerousD/Content/Font2.spritefont b/DangerousD/Content/Font2.spritefont new file mode 100644 index 0000000..03b6450 --- /dev/null +++ b/DangerousD/Content/Font2.spritefont @@ -0,0 +1,60 @@ + + + + + + + Josefin Sans + + + 100 + + + 0 + + + true + + + + + + + + + + + + ~ + + + + diff --git a/DangerousD/GameCore/GUI/LoginGUI.cs b/DangerousD/GameCore/GUI/LoginGUI.cs new file mode 100644 index 0000000..16d64d4 --- /dev/null +++ b/DangerousD/GameCore/GUI/LoginGUI.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; + +using MonogameLibrary.UI.Elements; +using MonogameLibrary.UI.Enums; + +namespace DangerousD.GameCore.GUI +{ + class LoginGUI : AbstractGui + { + protected override void CreateUI() + { + int screenWidth = AppManager.Instance.resolution.X; + int screenHeight = AppManager.Instance.resolution.Y; + + Elements.Add(new Label(Manager) { + rectangle = new Rectangle(screenWidth / 2 - 250, screenHeight / 6 - 50, 500, 100), + text = "Login", + scale = 0.8f, + fontColor = Color.White, + mainColor = Color.Transparent, + fontName = "font2" + }); + + // TextBox-ы + { + TextBox loginTextBox = new TextBox(Manager) + { + rectangle = new Rectangle(screenWidth / 2 - 125, screenHeight / 6 * 2 - 20, 250, 40), + text = "NickName", + scale = 0.16f, + fontColor = Color.Gray, + fontName = "font2", + textAligment = TextAligment.Left + }; + loginTextBox.TextChanged += input => { + if (loginTextBox.fontColor == Color.Gray) + { + loginTextBox.text = ""; loginTextBox.fontColor = Color.Black; + } + }; + + TextBox passwordTextBox = new TextBox(Manager) + { + rectangle = new Rectangle(screenWidth / 2 - 125, screenHeight / 6 * 3 - 40, 250, 40), + text = "Password", + scale = 0.16f, + fontColor = Color.Gray, + fontName = "font2", + textAligment = TextAligment.Left + }; + passwordTextBox.TextChanged += input => { + if (passwordTextBox.fontColor == Color.Gray) + { + passwordTextBox.text = ""; passwordTextBox.fontColor = Color.Black; + } + }; + } + + // Кнопки + { + Button logButton = new Button(Manager) { + rectangle = new Rectangle(screenWidth / 4 + 50, screenHeight / 6 * 4, 100, 50), + text = "LogIn", + scale = 0.2f, + fontColor = Color.Black, + fontName = "font2" + }; + logButton.LeftButtonPressed += () => { + AppManager.Instance.ChangeGameState(GameState.Lobby); + }; + + Button regButton = new Button(Manager) + { + rectangle = new Rectangle(screenWidth / 4 * 2 + 50, screenHeight / 6 * 4, 100, 50), + text = "Reg", + scale = 0.2f, + fontColor = Color.Black, + fontName = "font2" + }; + regButton.LeftButtonPressed += GoToRegWebServer; + + Button backButton = new Button(Manager) + { + rectangle = new Rectangle(screenWidth / 20, screenHeight / 15, 50, 50), + text = "<-", + scale = 0.3f, + fontColor = Color.Black, + fontName = "font2" + }; + backButton.LeftButtonPressed += () => { + AppManager.Instance.ChangeGameState(GameState.Menu); + }; + } + } + + private void GoToRegWebServer() + { + // TODO + } + } +} diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs index 4bcd14b..0a162d5 100644 --- a/DangerousD/GameCore/Managers/AppManager.cs +++ b/DangerousD/GameCore/Managers/AppManager.cs @@ -10,16 +10,19 @@ using DangerousD.GameCore.Graphics; namespace DangerousD.GameCore { - public enum GameState { Menu, Options, Lobby, Game } + public enum GameState { Menu, Options, Lobby, Game, Login } public class AppManager : Game { public static AppManager Instance { get; private set; } private GraphicsDeviceManager _graphics; private SpriteBatch _spriteBatch; + public Point resolution; GameState gameState; IDrawableObject MenuGUI; IDrawableObject OptionsGUI; + IDrawableObject LoginGUI; IDrawableObject LobbyGUI; + public GameManager GameManager { get; private set; } public AnimationBuilder AnimationBuilder { get; private set; } = new AnimationBuilder(); public AppManager() @@ -30,14 +33,17 @@ namespace DangerousD.GameCore IsMouseVisible = true; TargetElapsedTime = TimeSpan.FromMilliseconds(1000 / 30); + resolution = new Point(_graphics.PreferredBackBufferWidth, _graphics.PreferredBackBufferHeight); GameManager = new GameManager(); - gameState = GameState.Menu; + gameState = GameState.Login; MenuGUI = new MenuGUI(); + LoginGUI = new LoginGUI(); } protected override void Initialize() { MenuGUI.Initialize(GraphicsDevice); + LoginGUI.Initialize(GraphicsDevice); base.Initialize(); } @@ -45,6 +51,7 @@ namespace DangerousD.GameCore { _spriteBatch = new SpriteBatch(GraphicsDevice); MenuGUI.LoadContent(); + LoginGUI.LoadContent(); } protected override void Update(GameTime gameTime) @@ -60,6 +67,9 @@ namespace DangerousD.GameCore case GameState.Options: OptionsGUI.Update(gameTime); break; + case GameState.Login: + LoginGUI.Update(gameTime); + break; case GameState.Lobby: LobbyGUI.Update(gameTime); break; @@ -85,6 +95,9 @@ namespace DangerousD.GameCore case GameState.Options: OptionsGUI.Draw(_spriteBatch); break; + case GameState.Login: + LoginGUI.Draw(_spriteBatch); + break; case GameState.Lobby: LobbyGUI.Draw(_spriteBatch); break; diff --git a/MonogameLibrary/UI/Base/DrawableTextedUiElement.cs b/MonogameLibrary/UI/Base/DrawableTextedUiElement.cs index 2a45c2c..0d64052 100644 --- a/MonogameLibrary/UI/Base/DrawableTextedUiElement.cs +++ b/MonogameLibrary/UI/Base/DrawableTextedUiElement.cs @@ -57,11 +57,11 @@ namespace MonogameLibrary.UI.Base spriteBatch.DrawString(spriteFont, text, pos, fontColor, 0, Vector2.Zero, scale, SpriteEffects.None, 0); } - else if (textAligment == TextAligment.Center) + else if (textAligment == TextAligment.Left) { Vector2 pos = rectangle.Location.ToVector2(); pos.Y += (int)((rectangle.Height - measured.Y) / 2); - pos.X += (int)(2 * scale); + pos.X += (int)(2 * scale + rectangle.Width / 20); spriteBatch.DrawString(spriteFont, text, pos, fontColor, 0, Vector2.Zero, scale, SpriteEffects.None, 0); } diff --git a/MonogameLibrary/UI/Base/DrawableUIElement.cs b/MonogameLibrary/UI/Base/DrawableUIElement.cs index b751308..54a0db5 100644 --- a/MonogameLibrary/UI/Base/DrawableUIElement.cs +++ b/MonogameLibrary/UI/Base/DrawableUIElement.cs @@ -30,7 +30,7 @@ namespace MonogameLibrary.UI.Base if (textureName == "") { texture = new Texture2D(Manager.GraphicsDevice, 1, 1); - texture.SetData(new Color[] { Color.White }); + texture.SetData(new Color[] { mainColor }); } else { @@ -41,7 +41,7 @@ namespace MonogameLibrary.UI.Base catch { texture = new Texture2D(Manager.GraphicsDevice, 1, 1); - texture.SetData(new Color[] { Color.White }); + texture.SetData(new Color[] { mainColor }); } } }