diff --git a/DangerousD/Content/Caveat-Bold.ttf b/DangerousD/Content/Caveat-Bold.ttf
new file mode 100644
index 0000000..5b05296
Binary files /dev/null and b/DangerousD/Content/Caveat-Bold.ttf differ
diff --git a/DangerousD/Content/Content.mgcb b/DangerousD/Content/Content.mgcb
index 97afe2e..18f7ea3 100644
--- a/DangerousD/Content/Content.mgcb
+++ b/DangerousD/Content/Content.mgcb
@@ -13,6 +13,27 @@
#---------------------------------- Content ---------------------------------#
+#begin File.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:File.spritefont
+
+#begin Font_25.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:Font_25.spritefont
+
+#begin Font2.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:Font2.spritefont
+
#begin PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png
/importer:TextureImporter
/processor:TextureProcessor
diff --git a/DangerousD/Content/File.spritefont b/DangerousD/Content/File.spritefont
new file mode 100644
index 0000000..e38ede5
--- /dev/null
+++ b/DangerousD/Content/File.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ Handjet-ExtraLight.ttf
+
+
+ 70
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/DangerousD/Content/Font2.spritefont b/DangerousD/Content/Font2.spritefont
new file mode 100644
index 0000000..be5084a
--- /dev/null
+++ b/DangerousD/Content/Font2.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ JosefinSans-Bold.ttf
+
+
+ 100
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/DangerousD/Content/Font_25.spritefont b/DangerousD/Content/Font_25.spritefont
new file mode 100644
index 0000000..7c44e57
--- /dev/null
+++ b/DangerousD/Content/Font_25.spritefont
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ Arial
+
+
+ 25
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+ а
+ я
+
+
+
+
diff --git a/DangerousD/Content/Font_30.spritefont b/DangerousD/Content/Font_30.spritefont
new file mode 100644
index 0000000..0c56f83
--- /dev/null
+++ b/DangerousD/Content/Font_30.spritefont
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ Arial
+
+
+ 30
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+ а
+ я
+
+
+
+
diff --git a/DangerousD/Content/Handjet-ExtraLight.ttf b/DangerousD/Content/Handjet-ExtraLight.ttf
new file mode 100644
index 0000000..feda022
Binary files /dev/null and b/DangerousD/Content/Handjet-ExtraLight.ttf differ
diff --git a/DangerousD/Content/JosefinSans-Bold.ttf b/DangerousD/Content/JosefinSans-Bold.ttf
new file mode 100644
index 0000000..190dce0
Binary files /dev/null and b/DangerousD/Content/JosefinSans-Bold.ttf differ
diff --git a/DangerousD/GameCore/GUI/AbstractGui.cs b/DangerousD/GameCore/GUI/AbstractGui.cs
index 4704620..892cb48 100644
--- a/DangerousD/GameCore/GUI/AbstractGui.cs
+++ b/DangerousD/GameCore/GUI/AbstractGui.cs
@@ -10,22 +10,23 @@ public abstract class AbstractGui : IDrawableObject
{
protected UIManager Manager = new();
protected List Elements = new();
- protected string font;
+
public AbstractGui()
{
}
protected abstract void CreateUI();
-
+ private GraphicsDevice graphicsDevice;
public virtual void Initialize(GraphicsDevice graphicsDevice)
{
- Manager.Initialize(font, graphicsDevice);
+ Manager.Initialize(graphicsDevice);
+ this.graphicsDevice = graphicsDevice;
CreateUI();
}
public virtual void LoadContent()
{
- Manager.LoadContent(AppManager.Instance.Content);
+ Manager.LoadContent(AppManager.Instance.Content, "Font");
}
public virtual void Update(GameTime gameTime)
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/GUI/MenuGUI.cs b/DangerousD/GameCore/GUI/MenuGUI.cs
index 2103562..3aff1be 100644
--- a/DangerousD/GameCore/GUI/MenuGUI.cs
+++ b/DangerousD/GameCore/GUI/MenuGUI.cs
@@ -8,12 +8,31 @@ internal class MenuGUI : AbstractGui
{
protected override void CreateUI()
{
- Elements.Add(new CheckBox(Manager) { rectangle = new Rectangle(10, 10, 50, 50) });
- var but = new Button(Manager) { rectangle = new Rectangle(100, 10, 80, 50) };
- Elements.Add(but);
- but.LeftButtonPressed += () =>
+ int wigth = AppManager.Instance.Window.ClientBounds.Width;
+ int height = AppManager.Instance.Window.ClientBounds.Height;
+ var butSingle = new Button(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 130, 300, 50), text = "Singleplayer", fontName = "File" };
+ Elements.Add(butSingle);
+ butSingle.LeftButtonPressed += () =>
{
AppManager.Instance.ChangeGameState(GameState.Game);
};
+ var butMulti = new Button(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 190, 300, 50), text = "Multiplayer", fontName = "File" };
+ Elements.Add(butMulti);
+ butMulti.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.ChangeGameState(GameState.Login);
+ };
+ var butOption = new Button(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 250, 300, 50), text = "Option", fontName = "File" };
+ Elements.Add(butOption);
+ butOption.LeftButtonPressed += () =>
+ {
+ // открытие настроек
+ };
+ var butExit = new Button(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 310, 300, 50), text = "Exit", fontName = "File" };
+ Elements.Add(butExit);
+ butExit.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.Exit();
+ };
}
-}
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs
index c3c60fb..e45a378 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,22 +33,26 @@ namespace DangerousD.GameCore
IsMouseVisible = true;
TargetElapsedTime = TimeSpan.FromMilliseconds(1000 / 30);
+ resolution = new Point(_graphics.PreferredBackBufferWidth, _graphics.PreferredBackBufferHeight);
GameManager = new GameManager();
gameState = GameState.Menu;
MenuGUI = new MenuGUI();
+ LoginGUI = new LoginGUI();
}
protected override void Initialize()
{
- MenuGUI.Initialize(GraphicsDevice);
AnimationBuilder.LoadAnimations();
+ MenuGUI.Initialize(GraphicsDevice);
+ LoginGUI.Initialize(GraphicsDevice);
base.Initialize();
}
- protected override void LoadContent()
+ protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
MenuGUI.LoadContent();
+ LoginGUI.LoadContent();
}
protected override void Update(GameTime gameTime)
@@ -61,6 +68,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;
@@ -86,6 +96,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;
@@ -110,6 +123,8 @@ namespace DangerousD.GameCore
break;
case GameState.Options:
break;
+ case GameState.Login:
+ break;
case GameState.Lobby:
break;
case GameState.Game:
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 });
}
}
}
diff --git a/MonogameLibrary/UI/Base/UIManager.cs b/MonogameLibrary/UI/Base/UIManager.cs
index 96d72fc..505d012 100644
--- a/MonogameLibrary/UI/Base/UIManager.cs
+++ b/MonogameLibrary/UI/Base/UIManager.cs
@@ -16,16 +16,10 @@ namespace MonogameLibrary.UI.Base
Dictionary> layerCollection = new();
public GraphicsDevice GraphicsDevice { get; private set; }
public SpriteFont BaseFont { get; private set; }
- public void Initialize(string font, GraphicsDevice graphicsDevice)
+ public void Initialize(GraphicsDevice graphicsDevice)
{
GraphicsDevice = graphicsDevice;
- try
- {
- //BaseFont = _content.Load(font);
- }
- catch
- {
- }
+
for (int i = -10; i < 11; i++)
{
layerCollection.Add(i, new List());
@@ -35,8 +29,16 @@ namespace MonogameLibrary.UI.Base
static MouseState mouseState, prevmouseState;
static KeyboardState keyboardState;
- public void LoadContent(ContentManager content)
+ public void LoadContent(ContentManager content, string font)
{
+
+ try
+ {
+ BaseFont = content.Load(font);
+ }
+ catch
+ {
+ }
foreach (var collection in layerCollection)
{
foreach (var item in collection.Value)