DangerousD/DangerousD/GameCore/GUI/LoginGUI.cs
2023-08-18 17:07:28 +03:00

171 lines
6.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
using DangerousD.GameCore.Managers;
using MonogameLibrary.UI.Base;
using System.Diagnostics;
using MonogameLibrary.UI.Elements;
using MonogameLibrary.UI.Enums;
namespace DangerousD.GameCore.GUI
{
class LoginGUI : AbstractGui
{
private string username;
private string password;
public string Username { get => username; }
public string Password { get => password; }
protected override void CreateUI()
{
int screenWidth = AppManager.Instance.inGameResolution.X;
int screenHeight = AppManager.Instance.inGameResolution.Y;
float scaler = AppManager.Instance.inGameResolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
var loginBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, screenWidth, screenHeight), textureName = "menuFon2" };
Elements.Add(loginBackground);
loginBackground.LoadTexture(AppManager.Instance.Content);
Elements.Add(new Label(Manager) {
rectangle = new Rectangle(screenWidth / 2 - (int)(250 * 2.4), screenHeight / 6 - 100, (int)(500 * 2.4), (int)(100 * 2.4)),
text = "Login",
scale = 1.7f,
fontColor = Color.White,
mainColor = Color.Transparent,
fontName = "ButtonFont"
});
Button backButton = new Button(Manager)
{
rectangle = new Rectangle(screenWidth / 20, screenHeight / 15, (int)(40 * 2.4), (int)(40 * 2.4)),
fontColor = Color.Black,
fontName = "font2",
textureName = "textboxbackground1-1"
};
backButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Menu);
};
Elements.Add(backButton);
// TextBox-ы
{
TextBox loginTextBox = new TextBox(Manager)
{
rectangle = new Rectangle(screenWidth / 2 - (int)(125 * 2.4), screenHeight / 6 * 2 - 20, (int)(250 * 2.4), (int)(40 * 2.4)),
text = "NickName",
scale = 0.33f,
fontColor = Color.Gray,
fontName = "Font2",
textAligment = TextAligment.Left,
textureName = "textboxbackground6-1"
};
Elements.Add(loginTextBox);
loginTextBox.LoadTexture(AppManager.Instance.Content);
loginTextBox.TextChanged += input => {
if (loginTextBox.fontColor == Color.Gray)
{
loginTextBox.text = ""; loginTextBox.fontColor = Color.Black;
}
};
loginTextBox.StopChanging += input => {
if (input.Length == 0)
{
loginTextBox.text = "NickName";
loginTextBox.fontColor = Color.Gray;
}
};
Elements.Add(loginTextBox);
TextBox passwordTextBox = new TextBox(Manager)
{
rectangle = new Rectangle(screenWidth / 2 - (int)(125 * 2.4), screenHeight / 6 * 3 - 40, (int)(250 * 2.4), (int)(40 * 2.4)),
text = "Password",
scale = 0.33f,
fontColor = Color.Gray,
fontName = "font2",
textAligment = TextAligment.Left,
textureName = "textboxbackground6-1"
};
Elements.Add(passwordTextBox);
passwordTextBox.LoadTexture(AppManager.Instance.Content);
passwordTextBox.TextChanged += input => {
if (passwordTextBox.fontColor == Color.Gray)
{
passwordTextBox.text = ""; passwordTextBox.fontColor = Color.Black;
}
};
passwordTextBox.StopChanging += input => {
if (input.Length == 0)
{
passwordTextBox.text = "Password";
passwordTextBox.fontColor = Color.Gray;
}
};
Elements.Add(passwordTextBox);
}
// Кнопки
{
Button logButton = new Button(Manager) {
rectangle = new Rectangle(screenWidth / 4 + (int)(50 * 2.4), screenHeight / 6 * 3 + 100, (int)(100 * 2.4), (int)(50 * 2.4)),
text = "LogIn",
scale = 0.6f,
fontColor = Color.White,
fontName = "ButtonFont",
textureName = "textboxbackground2-1"
};
Elements.Add(logButton);
logButton.LeftButtonPressed += () => {
if (CheckUser())
{
AppManager.Instance.ChangeGameState(GameState.Lobby);
}
};
Elements.Add(logButton);
Button regButton = new Button(Manager)
{
rectangle = new Rectangle(screenWidth / 4 * 2 + (int)(50 * 2.4), screenHeight / 6 * 3 + 100, (int)(100 * 2.4), (int)(50 * 2.4)),
text = "Reg",
scale = 0.6f,
fontColor = Color.White,
fontName = "ButtonFont",
textureName = "textboxbackground2-1"
};
Elements.Add(regButton);
regButton.LeftButtonPressed += GoToRegWebServer;
Elements.Add(regButton);
}
foreach (var item in Elements)
{
item.rectangle.X = (int)(scaler * item.rectangle.X);
item.rectangle.Y = (int)(scaler * item.rectangle.Y);
item.rectangle.Width = (int)(scaler * item.rectangle.Width);
item.rectangle.Height = (int)(scaler * item.rectangle.Height);
if (item is DrawableTextedUiElement)
{
(item as DrawableTextedUiElement).scale *= scaler;
}
}
}
private void GoToRegWebServer()
{
// TODO
}
private bool CheckUser()
{
return true;
}
}
}