Merge pull request #2 from progtime-net/ui2

Ui2 merge. Сделал LoginGUI
This commit is contained in:
gravitymm 2023-08-15 14:38:14 +03:00 committed by GitHub
commit ce23fb4793
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 187 additions and 8 deletions

View file

@ -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

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains an xml description of a font, and will be read by the XNA
Framework Content Pipeline. Follow the comments to customize the appearance
of the font in your game, and to change the characters which are available to draw
with.
-->
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">
<!--
Modify this string to change the font that will be imported.
-->
<FontName>Josefin Sans</FontName>
<!--
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
<Size>100</Size>
<!--
Spacing is a float value, measured in pixels. Modify this value to change
the amount of spacing in between characters.
-->
<Spacing>0</Spacing>
<!--
UseKerning controls the layout of the font. If this value is true, kerning information
will be used when placing characters.
-->
<UseKerning>true</UseKerning>
<!--
Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
and "Bold, Italic", and are case sensitive.
-->
<Style>Bold</Style>
<!--
If you uncomment this line, the default character will be substituted if you draw
or measure text that contains characters which were not included in the font.
-->
<!-- <DefaultCharacter>*</DefaultCharacter> -->
<!--
CharacterRegions control what letters are available in the font. Every
character from Start to End will be built and made available for drawing. The
default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
character set. The characters are ordered according to the Unicode standard.
See the documentation for more information.
-->
<CharacterRegions>
<CharacterRegion>
<Start>&#32;</Start>
<End>&#126;</End>
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>

View file

@ -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
}
}
}

View file

@ -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;

View file

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

View file

@ -30,7 +30,7 @@ namespace MonogameLibrary.UI.Base
if (textureName == "")
{
texture = new Texture2D(Manager.GraphicsDevice, 1, 1);
texture.SetData<Color>(new Color[] { Color.White });
texture.SetData<Color>(new Color[] { mainColor });
}
else
{
@ -41,7 +41,7 @@ namespace MonogameLibrary.UI.Base
catch
{
texture = new Texture2D(Manager.GraphicsDevice, 1, 1);
texture.SetData<Color>(new Color[] { Color.White });
texture.SetData<Color>(new Color[] { mainColor });
}
}
}