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 });
}
}
}