Merge branch 'GUI_gr' into Development

This commit is contained in:
SergoDobro 2024-08-15 17:20:10 +03:00
commit 8a9867eb44
12 changed files with 226 additions and 17 deletions

View file

@ -59,8 +59,8 @@ namespace MonogameLibrary.UI.Base
{
keyboardState = Keyboard.GetState();
mouseState = Mouse.GetState();
mouseState = new MouseState((int)(mouseState.X*(float)resolutionInGame.X/resolution.X),
(int)(mouseState.Y * (float)resolutionInGame.Y / resolution.Y), mouseState.ScrollWheelValue, mouseState.LeftButton, mouseState.MiddleButton, mouseState.RightButton, mouseState.XButton1, mouseState.XButton2);
//mouseState = new MouseState((int)(mouseState.X*(float)resolutionInGame.X/resolution.X),
// (int)(mouseState.Y * (float)resolutionInGame.Y / resolution.Y), mouseState.ScrollWheelValue, mouseState.LeftButton, mouseState.MiddleButton, mouseState.RightButton, mouseState.XButton1, mouseState.XButton2);
}
catch
{

View file

@ -13,14 +13,21 @@
#---------------------------------- Content ---------------------------------#
#begin Font/Font.spritefont
#begin Fonts/Font.spritefont
/importer:FontDescriptionImporter
/processor:FontDescriptionProcessor
/processorParam:PremultiplyAlpha=True
/processorParam:TextureFormat=Compressed
/build:Font/Font.spritefont
/build:Fonts/Font.spritefont
#begin Texture/GUI/MenuBackground.jpg
#begin Fonts/Font2.spritefont
/importer:FontDescriptionImporter
/processor:FontDescriptionProcessor
/processorParam:PremultiplyAlpha=True
/processorParam:TextureFormat=Compressed
/build:Fonts/Font2.spritefont
#begin Textures/GUI/MenuBackground.jpg
/importer:TextureImporter
/processor:TextureProcessor
/processorParam:ColorKeyColor=255,0,255,255
@ -30,5 +37,5 @@
/processorParam:ResizeToPowerOfTwo=False
/processorParam:MakeSquare=False
/processorParam:TextureFormat=Color
/build:Texture/GUI/MenuBackground.jpg
/build:Textures/GUI/MenuBackground.jpg

Binary file not shown.

View file

@ -17,7 +17,7 @@ with.
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
<Size>12</Size>
<Size>100</Size>
<!--
Spacing is a float value, measured in pixels. Modify this value to change

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>CarltineRegular-K7z5l.ttf</FontName>
<!--
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
<Size>15</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>Regular</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

Before

Width:  |  Height:  |  Size: 592 KiB

After

Width:  |  Height:  |  Size: 592 KiB

View file

@ -41,7 +41,7 @@ public abstract class AbstractGUI
public virtual void Update(GameTime gameTime)
{
Manager.Update(gameTime);
}
public virtual void Draw(SpriteBatch spriteBatch)

View file

@ -1,6 +1,72 @@
namespace ZoFo.GameCore.GUI;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using MonogameLibrary.UI.Elements;
using static System.String;
using ZoFo.GameCore.GameManagers;
namespace ZoFo.GameCore.GUI;
public class DebugHUD
{
private SpriteFont _spriteFont;
private Dictionary<string, string> _text = new();
private List<string> _log = new();
public void Initialize()
{
}
public void LoadContent()
{
_spriteFont = AppManager.Instance.Content.Load<SpriteFont>("Fonts\\Font2");
}
public void Update(GameTime gameTime)
{
}
public void Draw(SpriteBatch spriteBatch)
{
var keysString = Join("\n", _text.Select(el => el.Key + ": " + el.Value).ToList());
spriteBatch.Begin();
spriteBatch.DrawString(
_spriteFont,
keysString,
new Vector2(10, 10),
Color.Cyan,
0,
Vector2.Zero,
1,
SpriteEffects.None,
0
);
spriteBatch.DrawString(
_spriteFont,
Join("\n", _log),
new Vector2(10, 10 + _spriteFont.MeasureString(keysString).Y),
Color.Green,
0,
Vector2.Zero,
1,
SpriteEffects.None,
0
);
spriteBatch.End();
}
public void Set(string key, string value)
{
_text[key] = value;
}
public void Log(string value)
{
_log.Add(value);
if (_log.Count > 30)
{
_log.RemoveAt(0);
}
}
}

View file

@ -15,19 +15,68 @@ namespace ZoFo.GameCore.GUI;
public class MainMenuGUI : AbstractGUI
{
DrawableUIElement menuBackground;
private DrawableUIElement menuBackground;
Color mainBackgroundColor = Color.White;
protected override void CreateUI()
{
int width = AppManager.Instance.CurentScreenResolution.X;
int height = AppManager.Instance.CurentScreenResolution.Y;
menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), textureName = "Texture\\GUI\\MenuBackground" };
menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = mainBackgroundColor, textureName = "Textures\\GUI\\MenuBackground" };
Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content);
Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 5, (int)(width / 4), (int)(height / 20)), text = "ZoFo", fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font"});
Button playButton = new Button(Manager)
{
rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + height / 20 + height / 40, (int)(width / 5), (int)(height / 20)),
text = "Play",
scale = 0.2f,
fontColor = Color.White,
mainColor = Color.Gray,
fontName = "Fonts\\Font"
};
playButton.LeftButtonPressed += () =>
{
};
Elements.Add(playButton);
Button optionButton = new Button(Manager)
{
rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 2, (int)(width / 5), (int)(height / 20)),
text = "Options",
scale = 0.2f,
fontColor = Color.White,
mainColor = Color.Gray,
fontName = "Fonts\\Font"
};
optionButton.LeftButtonPressed += () =>
{
};
Elements.Add(optionButton);
Button exitButton = new Button(Manager)
{
rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 3, (int)(width / 5), (int)(height / 20)),
text = "Exit",
scale = 0.2f,
fontColor = Color.White,
mainColor = Color.Gray,
fontName = "Fonts\\Font"
};
exitButton.LeftButtonPressed += () =>
{
AppManager.Instance.Exit();
};
Elements.Add(exitButton);
}
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
}
}

View file

@ -11,6 +11,7 @@ using Microsoft.Xna.Framework.Input;
using ZoFo.GameCore.GameManagers.ItemManager;
using ZoFo.GameCore.GUI;
using static System.Collections.Specialized.BitVector32;
using MonogameLibrary.UI.Base;
namespace ZoFo.GameCore.GameManagers
{
@ -21,9 +22,11 @@ namespace ZoFo.GameCore.GameManagers
private SpriteBatch _spriteBatch;
public static AppManager Instance { get; private set; }
public GameState gamestate;
public AbstractGUI currentGUI;
public DebugHUD debugHud;
public Point CurentScreenResolution = new Point(1920, 1080);
public Client client;
public Server server;
@ -41,19 +44,27 @@ namespace ZoFo.GameCore.GameManagers
public AppManager()
{
_graphics = new GraphicsDeviceManager(this);
SetResolution(CurentScreenResolution.X, CurentScreenResolution.Y);
FulscrreenSwitch();
Content.RootDirectory = "Content";
IsMouseVisible = true;
Instance = this;
InputManager = new InputManager();
currentGUI = new MainMenuGUI();
debugHud = new DebugHUD();
}
protected override void Initialize()
{
currentGUI.Initialize();
debugHud.Initialize();
@ -63,7 +74,8 @@ namespace ZoFo.GameCore.GameManagers
protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
debugHud.LoadContent();
currentGUI.LoadContent();
@ -75,6 +87,8 @@ namespace ZoFo.GameCore.GameManagers
Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit();
debugHud.Set("key", "value");
InputManager.Update();
currentGUI.Update(gameTime);
switch (gamestate)
@ -100,6 +114,8 @@ namespace ZoFo.GameCore.GameManagers
GraphicsDevice.Clear(Color.CornflowerBlue);
debugHud.Draw(_spriteBatch);
currentGUI.Draw(_spriteBatch);
switch (gamestate)
{
@ -127,5 +143,16 @@ namespace ZoFo.GameCore.GameManagers
{
//TODO
}
public void SetResolution(int x, int y)
{
_graphics.PreferredBackBufferWidth = x;
_graphics.PreferredBackBufferHeight = y;
}
public void FulscrreenSwitch()
{
_graphics.IsFullScreen = !_graphics.IsFullScreen;
}
}
}

View file

@ -27,7 +27,7 @@
<ProjectReference Include="..\MonogameLibrary\MonogameLibrary.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Content\Texture\GUI\" />
<Folder Include="Content\Textures\GUI\" />
</ItemGroup>
<Target Name="RestoreDotnetTools" BeforeTargets="Restore">
<Message Text="Restoring dotnet tools" Importance="High" />