diff --git a/DangerousD/Content/Content.mgcb b/DangerousD/Content/Content.mgcb
index 6729fe5..713c20a 100644
--- a/DangerousD/Content/Content.mgcb
+++ b/DangerousD/Content/Content.mgcb
@@ -14,7 +14,14 @@
#---------------------------------- Content ---------------------------------#
-#begin MonstersAnimations.png
+#begin ButtonFont.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:ButtonFont.spritefont
+
+#begin checkboxs_off-on.png
/importer:TextureImporter
/processor:TextureProcessor
/processorParam:ColorKeyColor=255,0,255,255
@@ -24,7 +31,31 @@
/processorParam:ResizeToPowerOfTwo=False
/processorParam:MakeSquare=False
/processorParam:TextureFormat=Color
-/build:MonstersAnimations.png
+/build:checkboxs_off-on.png
+
+#begin checkboxs_off.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:checkboxs_off.png
+
+#begin checkboxs_on.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:checkboxs_on.png
#begin deathAnimation.png
/importer:TextureImporter
@@ -38,12 +69,17 @@
/processorParam:TextureFormat=Color
/build:deathAnimation.png
-#begin ButtonFont.spritefont
-/importer:FontDescriptionImporter
-/processor:FontDescriptionProcessor
+#begin deathBackground.jpg
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
/processorParam:PremultiplyAlpha=True
-/processorParam:TextureFormat=Compressed
-/build:ButtonFont.spritefont
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:deathBackground.jpg
#begin DoomTestSong.mp3
/importer:Mp3Importer
@@ -51,6 +87,13 @@
/processorParam:Quality=Best
/build:DoomTestSong.mp3
+#begin Font_12.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:Font_12.spritefont
+
#begin Font_25.spritefont
/importer:FontDescriptionImporter
/processor:FontDescriptionProcessor
@@ -84,19 +127,6 @@
/processorParam:TextureFormat=Color
/build:menuFon.jpg
-#begin MonstersAnimations.png
-#begin menuFon.jpg
-/importer:TextureImporter
-/processor:TextureProcessor
-/processorParam:ColorKeyColor=255,0,255,255
-/processorParam:ColorKeyEnabled=True
-/processorParam:GenerateMipmaps=False
-/processorParam:PremultiplyAlpha=True
-/processorParam:ResizeToPowerOfTwo=False
-/processorParam:MakeSquare=False
-/processorParam:TextureFormat=Color
-/build:menuFon.jpg
-
#begin MenuFon2.jpg
/importer:TextureImporter
/processor:TextureProcessor
@@ -121,6 +151,114 @@
/processorParam:TextureFormat=Color
/build:menuFon3.jpg
+#begin MonstersAnimations.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:MonstersAnimations.png
+
+#begin optionsBackground.jpg
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:optionsBackground.jpg
+
+#begin PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png
+
+#begin slider.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:slider.png
+
+#begin sliderBackground.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:sliderBackground.png
+
+#begin textboxbackground1-1.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:textboxbackground1-1.png
+
+#begin textboxbackground2-1.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:textboxbackground2-1.png
+
+#begin textboxbackground2,5-1.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:textboxbackground2,5-1.png
+
+#begin textboxbackground6-1.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:textboxbackground6-1.png
+
#begin tiles.png
/importer:TextureImporter
/processor:TextureProcessor
diff --git a/DangerousD/Content/Font_12.spritefont b/DangerousD/Content/Font_12.spritefont
new file mode 100644
index 0000000..4cffaf7
--- /dev/null
+++ b/DangerousD/Content/Font_12.spritefont
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ Arial
+
+
+ 12
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+ а
+ я
+
+
+
+
diff --git a/DangerousD/Content/checkboxs_off-on.png b/DangerousD/Content/checkboxs_off-on.png
new file mode 100644
index 0000000..7786bbb
Binary files /dev/null and b/DangerousD/Content/checkboxs_off-on.png differ
diff --git a/DangerousD/Content/checkboxs_off.png b/DangerousD/Content/checkboxs_off.png
new file mode 100644
index 0000000..45d755e
Binary files /dev/null and b/DangerousD/Content/checkboxs_off.png differ
diff --git a/DangerousD/Content/checkboxs_on.png b/DangerousD/Content/checkboxs_on.png
new file mode 100644
index 0000000..bc5b0c1
Binary files /dev/null and b/DangerousD/Content/checkboxs_on.png differ
diff --git a/DangerousD/Content/deathBackground.jpg b/DangerousD/Content/deathBackground.jpg
new file mode 100644
index 0000000..d8c4062
Binary files /dev/null and b/DangerousD/Content/deathBackground.jpg differ
diff --git a/DangerousD/Content/lvl.tmx b/DangerousD/Content/lvl.tmx
index b81ea88..271b1e5 100644
--- a/DangerousD/Content/lvl.tmx
+++ b/DangerousD/Content/lvl.tmx
@@ -752,7 +752,7 @@
-
diff --git a/DangerousD/Content/menuFon.jpg b/DangerousD/Content/menuFon.jpg
index 4f49988..c95f8fa 100644
Binary files a/DangerousD/Content/menuFon.jpg and b/DangerousD/Content/menuFon.jpg differ
diff --git a/DangerousD/Content/optionsBackground.jpg b/DangerousD/Content/optionsBackground.jpg
new file mode 100644
index 0000000..dd87cd7
Binary files /dev/null and b/DangerousD/Content/optionsBackground.jpg differ
diff --git a/DangerousD/Content/slider.png b/DangerousD/Content/slider.png
new file mode 100644
index 0000000..624b533
Binary files /dev/null and b/DangerousD/Content/slider.png differ
diff --git a/DangerousD/Content/sliderBackground.png b/DangerousD/Content/sliderBackground.png
new file mode 100644
index 0000000..8560739
Binary files /dev/null and b/DangerousD/Content/sliderBackground.png differ
diff --git a/DangerousD/Content/textboxbackground1-1.png b/DangerousD/Content/textboxbackground1-1.png
new file mode 100644
index 0000000..90219bf
Binary files /dev/null and b/DangerousD/Content/textboxbackground1-1.png differ
diff --git a/DangerousD/Content/textboxbackground2,5-1.png b/DangerousD/Content/textboxbackground2,5-1.png
new file mode 100644
index 0000000..8494c3e
Binary files /dev/null and b/DangerousD/Content/textboxbackground2,5-1.png differ
diff --git a/DangerousD/Content/textboxbackground2-1.png b/DangerousD/Content/textboxbackground2-1.png
new file mode 100644
index 0000000..a50c11f
Binary files /dev/null and b/DangerousD/Content/textboxbackground2-1.png differ
diff --git a/DangerousD/Content/textboxbackground6-1.png b/DangerousD/Content/textboxbackground6-1.png
new file mode 100644
index 0000000..70f1d97
Binary files /dev/null and b/DangerousD/Content/textboxbackground6-1.png differ
diff --git a/DangerousD/GameCore/GUI/DeathGUI.cs b/DangerousD/GameCore/GUI/DeathGUI.cs
new file mode 100644
index 0000000..5754efa
--- /dev/null
+++ b/DangerousD/GameCore/GUI/DeathGUI.cs
@@ -0,0 +1,33 @@
+using DangerousD.GameCore.Managers;
+using Microsoft.Xna.Framework;
+using MonogameLibrary.UI.Base;
+using MonogameLibrary.UI.Elements;
+using System.Diagnostics;
+using System.Runtime.Serialization;
+
+namespace DangerousD.GameCore.GUI;
+
+internal class DeathGUI : AbstractGui
+{
+ protected override void CreateUI()
+ {
+ int wigth = AppManager.Instance.inGameResolution.X;
+ int height = AppManager.Instance.inGameResolution.Y;
+ var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "deathBackground" };
+ Elements.Add(menuBackground);
+ menuBackground.LoadTexture(AppManager.Instance.Content);
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle((wigth - 50) / 2, (height - 50) / 2 - 80, 50, 50), text = "You death", mainColor = Color.Transparent, scale = 0.7f, fontName = "ButtonFont", fontColor = Color.White });
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle((wigth - 50) / 2, (height - 50) / 2, 50, 50), text = $"Score = {0}", mainColor = Color.Transparent, scale = 0.7f, fontName = "ButtonFont", fontColor = Color.White });
+ var butMenu = new ButtonText(Manager) { rectangle = new Rectangle((wigth - 300) / 2, (height - 50) / 2 + 80, 300, 50), text = "Back to menu", scale = 0.7f, fontName = "ButtonFont" };
+ Elements.Add(butMenu);
+ butMenu.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.ChangeGameState(GameState.Menu);
+ };
+ }
+
+ public override void Update(GameTime gameTime)
+ {
+ base.Update(gameTime);
+ }
+}
\ No newline at end of file
diff --git a/DangerousD/GameCore/GUI/DebugHUD.cs b/DangerousD/GameCore/GUI/DebugHUD.cs
new file mode 100644
index 0000000..c37626e
--- /dev/null
+++ b/DangerousD/GameCore/GUI/DebugHUD.cs
@@ -0,0 +1,50 @@
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Elements;
+using static System.String;
+
+namespace DangerousD.GameCore.GUI
+{
+ public class DebugHUD : IDrawableObject
+ {
+ private SpriteFont _spriteFont;
+ private Dictionary _text = new();
+
+ public void Initialize()
+ {
+ }
+
+ public void LoadContent()
+ {
+ _spriteFont = AppManager.Instance.Content.Load("Font_12");
+ }
+
+ public void Update(GameTime gameTime)
+ {
+ }
+
+ public void Draw(SpriteBatch spriteBatch)
+ {
+ spriteBatch.Begin();
+ spriteBatch.DrawString(
+ _spriteFont,
+ Join(",", _text.Select(el => el.Key + ": " + el.Value).ToList()),
+ new Vector2(10, 10),
+ Color.Cyan,
+ 0,
+ Vector2.Zero,
+ 1,
+ SpriteEffects.None,
+ 0
+ );
+ spriteBatch.End();
+ }
+
+ public void Set(string key, string value)
+ {
+ _text[key] = value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/DangerousD/GameCore/GUI/HUD.cs b/DangerousD/GameCore/GUI/HUD.cs
new file mode 100644
index 0000000..092829a
--- /dev/null
+++ b/DangerousD/GameCore/GUI/HUD.cs
@@ -0,0 +1,43 @@
+using System;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Elements;
+
+namespace DangerousD.GameCore.GUI
+{
+ public class HUD : IDrawableObject
+ {
+
+
+ public HUD()
+ {
+ }
+
+ public void Draw(SpriteBatch spriteBatch)
+ {
+ ;
+ }
+
+ public void Initialize(GraphicsDevice graphicsDevice)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Initialize()
+ {
+ throw new NotImplementedException();
+ }
+
+ public void LoadContent()
+ {
+ var content = AppManager.Instance.Content;
+
+ }
+
+ public void Update(GameTime gameTime)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
+
diff --git a/DangerousD/GameCore/GUI/LobbyGUI.cs b/DangerousD/GameCore/GUI/LobbyGUI.cs
index 41aaeeb..9136760 100644
--- a/DangerousD/GameCore/GUI/LobbyGUI.cs
+++ b/DangerousD/GameCore/GUI/LobbyGUI.cs
@@ -11,6 +11,7 @@ using DangerousD.GameCore.Managers;
using MonogameLibrary.UI.Base;
using System.Diagnostics;
using DangerousD.GameCore.Network;
+using System.Xml.Linq;
namespace DangerousD.GameCore.GUI
{
@@ -30,8 +31,11 @@ namespace DangerousD.GameCore.GUI
lobbyBackground.LoadTexture(AppManager.Instance.Content);
// CheckBoxs
- Elements.Add(new Label(Manager) { rectangle = new Rectangle(screenWidth / 30 * 2, screenHeight / 30 * 5,
- screenWidth / 30 * 26, screenHeight / 15 * 10) });
+ var lobby = new Label(Manager) { rectangle = new Rectangle(screenWidth / 30 * 2, screenHeight / 30 * 5,
+ screenWidth / 30 * 26, screenHeight / 15 * 10), textureName = "textboxbackground2,5-1" };
+ Elements.Add(lobby);
+ lobby.LoadTexture(AppManager.Instance.Content);
+
// Buttons and ip textbox
{
@@ -41,9 +45,10 @@ namespace DangerousD.GameCore.GUI
screenWidth / 30 * 10, screenHeight / 30 * 3),
text = "ip",
scale = 0.16f,
- fontColor = Color.Gray,
+ fontColor = Color.Black,
fontName = "font2",
- textAligment = TextAligment.Left
+ textAligment = TextAligment.Left,
+ textureName = "textboxbackground6-1"
};
searchBarTextBox.TextChanged += input => {
@@ -59,25 +64,27 @@ namespace DangerousD.GameCore.GUI
searchBarTextBox.text = "ip";
}
};
- Button backButton = new ButtonText(Manager)
+ Button backButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 30, screenHeight / 30, 60, 50),
+ rectangle = new Rectangle(screenWidth / 30, screenHeight / 30, (int)(40 * 2.4), (int)(40 * 2.4)),
text = "<-",
- scale = 0.3f,
+ scale = 0.72f,
fontColor = Color.Black,
- fontName = "font2"
+ fontName = "font2",
+ textureName = "textboxbackground1-1"
};
backButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Menu);
};
- Button hostButton = new ButtonText(Manager)
+ Button hostButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 30, screenHeight / 15 * 13, 120, 50),
+ rectangle = new Rectangle(screenWidth / 30, screenHeight / 15 * 13, (int)(120 * 2.4), (int)(50 * 2.4)),
text = "Host",
- scale = 0.2f,
- fontColor = Color.Black,
- fontName = "font2"
+ scale = 0.48f,
+ fontColor = Color.DarkBlue,
+ fontName = "buttonFont",
+ textureName = "textboxbackground2-1"
};
hostButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Game);
@@ -85,37 +92,40 @@ namespace DangerousD.GameCore.GUI
};
- Button refreshButton = new ButtonText(Manager)
+ Button refreshButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 30 * 6, screenHeight / 15 * 13, 120, 50),
+ rectangle = new Rectangle(screenWidth / 30 * 6, screenHeight / 15 * 13, (int)(120 * 2.4), (int)(50 * 2.4)),
text = "Refresh",
- scale = 0.2f,
- fontColor = Color.Black,
- fontName = "font2"
+ scale = 0.48f,
+ fontColor = Color.DarkBlue,
+ fontName = "buttonFont",
+ textureName = "textboxbackground2-1"
};
refreshButton.LeftButtonPressed += () => {
};
- Button joinSelectedButton = new ButtonText(Manager)
+ Button joinSelectedButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 30 * 25, screenHeight / 15 * 13, 120, 50),
+ rectangle = new Rectangle(screenWidth / 30 * 25, screenHeight / 15 * 13, (int)(120 * 2.4), (int)(50 * 2.4)),
text = "Join",
- scale = 0.2f,
- fontColor = Color.Black,
- fontName = "font2"
+ scale = 0.48f,
+ fontColor = Color.DarkBlue,
+ fontName = "buttonFont",
+ textureName = "textboxbackground2-1"
};
joinSelectedButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Game);
AppManager.Instance.NetworkManager.ClientInit(AppManager.Instance.IpAddress);
};
- Button joinByIpButton = new ButtonText(Manager)
+ Button joinByIpButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 30 * 25, screenHeight / 30, 120, 50),
+ rectangle = new Rectangle(screenWidth / 30 * 25, screenHeight / 30, (int)(120 * 2.4), (int)(50 * 2.4)),
text = "JoinByIp",
- scale = 0.2f,
- fontColor = Color.Black,
- fontName = "font2"
+ scale = 0.48f,
+ fontColor = Color.DarkBlue,
+ fontName = "buttonFont",
+ textureName = "textboxbackground2-1"
};
joinByIpButton.LeftButtonPressed += () => {
AppManager.Instance.NetworkManager.ClientInit(searchBarTextBox.text);
diff --git a/DangerousD/GameCore/GUI/LoginGUI.cs b/DangerousD/GameCore/GUI/LoginGUI.cs
index a81284f..37a62eb 100644
--- a/DangerousD/GameCore/GUI/LoginGUI.cs
+++ b/DangerousD/GameCore/GUI/LoginGUI.cs
@@ -32,9 +32,9 @@ namespace DangerousD.GameCore.GUI
loginBackground.LoadTexture(AppManager.Instance.Content);
Elements.Add(new Label(Manager) {
- rectangle = new Rectangle(screenWidth / 2 - 250, screenHeight / 6 - 50, 500, 100),
+ rectangle = new Rectangle(screenWidth / 2 - (int)(250 * 2.4), screenHeight / 6 - 100, (int)(500 * 2.4), (int)(100 * 2.4)),
text = "Login",
- scale = 0.8f,
+ scale = 1.7f,
fontColor = Color.White,
mainColor = Color.Transparent,
fontName = "ButtonFont"
@@ -44,13 +44,16 @@ namespace DangerousD.GameCore.GUI
{
TextBox loginTextBox = new TextBox(Manager)
{
- rectangle = new Rectangle(screenWidth / 2 - 125, screenHeight / 6 * 2 - 20, 250, 40),
+ 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.16f,
+ scale = 0.33f,
fontColor = Color.Gray,
fontName = "Font2",
- textAligment = TextAligment.Left
+ textAligment = TextAligment.Left,
+ textureName = "textboxbackground6-1"
+
};
+ loginTextBox.LoadTexture(AppManager.Instance.Content);
loginTextBox.TextChanged += input => {
if (loginTextBox.fontColor == Color.Gray)
{
@@ -67,13 +70,15 @@ namespace DangerousD.GameCore.GUI
TextBox passwordTextBox = new TextBox(Manager)
{
- rectangle = new Rectangle(screenWidth / 2 - 125, screenHeight / 6 * 3 - 40, 250, 40),
+ 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.16f,
+ scale = 0.33f,
fontColor = Color.Gray,
fontName = "font2",
- textAligment = TextAligment.Left
+ textAligment = TextAligment.Left,
+ textureName = "textboxbackground6-1"
};
+ passwordTextBox.LoadTexture(AppManager.Instance.Content);
passwordTextBox.TextChanged += input => {
if (passwordTextBox.fontColor == Color.Gray)
{
@@ -91,12 +96,13 @@ namespace DangerousD.GameCore.GUI
// Кнопки
{
- Button logButton = new ButtonText(Manager) {
- rectangle = new Rectangle(screenWidth / 4 + 50, screenHeight / 6 * 4, 100, 50),
+ 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.2f,
- fontColor = Color.Black,
- fontName = "font2"
+ scale = 0.6f,
+ fontColor = Color.White,
+ fontName = "ButtonFont",
+ textureName = "textboxbackground2-1"
};
logButton.LeftButtonPressed += () => {
if (CheckUser())
@@ -105,23 +111,25 @@ namespace DangerousD.GameCore.GUI
}
};
- Button regButton = new ButtonText(Manager)
+ Button regButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 4 * 2 + 50, screenHeight / 6 * 4, 100, 50),
+ 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.2f,
- fontColor = Color.Black,
- fontName = "font2"
+ scale = 0.6f,
+ fontColor = Color.White,
+ fontName = "ButtonFont",
+ textureName = "textboxbackground2-1"
};
regButton.LeftButtonPressed += GoToRegWebServer;
- Button backButton = new ButtonText(Manager)
+ Button backButton = new Button(Manager)
{
- rectangle = new Rectangle(screenWidth / 20, screenHeight / 15, 50, 50),
+ rectangle = new Rectangle(screenWidth / 20, screenHeight / 15, (int)(40 * 2.4), (int)(40 * 2.4)),
text = "<-",
- scale = 0.3f,
+ scale = 0.72f,
fontColor = Color.Black,
- fontName = "font2"
+ fontName = "font2",
+ textureName = "textboxbackground1-1"
};
backButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Menu);
diff --git a/DangerousD/GameCore/GUI/MenuGUI.cs b/DangerousD/GameCore/GUI/MenuGUI.cs
index b1ac08d..82170b1 100644
--- a/DangerousD/GameCore/GUI/MenuGUI.cs
+++ b/DangerousD/GameCore/GUI/MenuGUI.cs
@@ -2,6 +2,7 @@
using Microsoft.Xna.Framework;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
+using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.Serialization;
@@ -9,47 +10,50 @@ namespace DangerousD.GameCore.GUI;
internal class MenuGUI : AbstractGui
{
+ int selected = 0;
protected override void CreateUI()
{
+ int wigth = AppManager.Instance.inGameResolution.X;
+ int height = AppManager.Instance.inGameResolution.Y;
-
- int wigth = AppManager.Instance.Window.ClientBounds.Width;
- int height = AppManager.Instance.Window.ClientBounds.Height;
var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "menuFon" };
Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content);
- int TopMenu = 0;
+
Color[] colors = new Color[] { new Color(64, 53, 51), new Color(84, 58, 52),
new Color(170, 101, 63), new Color(254, 208, 116), new Color(252, 231, 124) };
for (int i = 0; i < colors.Length; i++)
- Elements.Add(new Label(Manager) { rectangle = new Rectangle((wigth - 50) / 2 - 60, 60, 50, 50), text = "Dangerous", mainColor = Color.Transparent, scale = 1-0.05f*i*i/10, fontName = "Font2", fontColor = colors[i] });
-
- int dx = 100;
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle((wigth - 50) / 2 - 60, 200, 50, 50), text = "Dangerous", mainColor = Color.Transparent, scale = 1.35f - 0.05f * i * i / 10, fontName = "Font2", fontColor = colors[i] });
+
+ int dx = 50;
Color[] colors2 = new Color[] { new Color(64, 53, 51), new Color(84, 58, 52),
new Color(170, 101, 63), new Color(254, 208, 116), new Color(252, 231, 124) };
for (int i = 0; i < colors2.Length; i++)
- Elements.Add(new Label(Manager) { rectangle = new Rectangle((wigth - 50) / 2 + 250 + dx-i*i, 90 - i * i/5, 50, 50), text = "D", mainColor = Color.Transparent, scale = 1.3f - 0.05f * i * i / 5, fontName = "Font2", fontColor = colors2[i] });
-
- var butSingle = new ButtonText(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 130, 300, 50), text = "Singleplayer", fontName = "ButtonFont" };
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle((wigth - 50) / 2 + 480 + dx - i * i, 260 - i * i / 5, 50, 50), text = "D", mainColor = Color.Transparent, scale = 2.15f - 0.05f * i * i / 5, fontName = "Font2", fontColor = colors2[i] });
+
+ var butSingle = new ButtonText(Manager) { rectangle = new Rectangle((wigth - (int)(300 * 2.4)) / 2, 350, (int)(300 * 2.4), (int)(50 * 2.4)), text = "Singleplayer", scale = 1.2f, fontName = "ButtonFont" };
Elements.Add(butSingle);
butSingle.LeftButtonPressed += () =>
{
AppManager.Instance.ChangeGameState(GameState.Game);
AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.SinglePlayer);
};
- var butMulti = new ButtonText(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 190, 300, 50), text = "Multiplayer", fontName = "ButtonFont" };
+
+ var butMulti = new ButtonText(Manager) { rectangle = new Rectangle((wigth - (int)(300 * 2.4)) / 2, 470, (int)(300 * 2.4), (int)(50 * 2.4)), text = "Multiplayer", scale = 1.2f, fontName = "ButtonFont" };
+
Elements.Add(butMulti);
butMulti.LeftButtonPressed += () =>
{
AppManager.Instance.ChangeGameState(GameState.Login);
};
- var butOption = new ButtonText(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 250, 300, 50), text = "Option", fontName = "ButtonFont" };
+ var butOption = new ButtonText(Manager) { rectangle = new Rectangle((wigth - (int)(160 * 2.4)) / 2, 590, (int)(160 * 2.4), (int)(50 * 2.4)), text = "Option", scale = 1.2f, fontName = "ButtonFont" };
Elements.Add(butOption);
butOption.LeftButtonPressed += () =>
{
// открытие настроек
+ AppManager.Instance.ChangeGameState(GameState.Options);
};
- var butExit = new ButtonText(Manager) { rectangle = new Rectangle((wigth - 300) / 2, 310, 300, 50), text = "Exit", fontName = "ButtonFont" };
+ var butExit = new ButtonText(Manager) { rectangle = new Rectangle((wigth - (int)(110 * 2.4)) / 2, 710, (int)(110 * 2.4), (int)(50 * 2.4)), text = "Exit", scale = 1.2f, fontName = "ButtonFont" };
Elements.Add(butExit);
butExit.LeftButtonPressed += () =>
{
diff --git a/DangerousD/GameCore/GUI/OptionsGUI.cs b/DangerousD/GameCore/GUI/OptionsGUI.cs
new file mode 100644
index 0000000..2236613
--- /dev/null
+++ b/DangerousD/GameCore/GUI/OptionsGUI.cs
@@ -0,0 +1,75 @@
+using System;
+using Microsoft.Xna.Framework;
+using MonogameLibrary.UI.Base;
+using MonogameLibrary.UI.Elements;
+using System.Xml.Linq;
+using DangerousD.GameCore.Managers;
+using DangerousD.GameCore;
+
+namespace DangerousD.GameCore.GUI
+{
+ public class OptionsGUI : AbstractGui
+ {
+ int selectedGUI = 0;
+ protected override void CreateUI()
+ {
+ int wigth = AppManager.Instance.inGameResolution.X;
+ int height = AppManager.Instance.inGameResolution.Y;
+ var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "optionsBackground" };
+ Elements.Add(menuBackground);
+ menuBackground.LoadTexture(AppManager.Instance.Content);
+
+ var slider = new Slider(Manager)
+ {
+ MinValue = 0,
+ MaxValue = 1,
+ rectangle = new Rectangle(wigth / 2 + 220, 275, (int)(100 * 2.4), 40),
+ indentation = 5,
+ textureName = "sliderBackground"
+ };
+
+ var cB = new CheckBox(Manager);
+ cB.rectangle = new Rectangle(wigth / 2 + 440, 405, (int)(40 * 2.4), (int)(40 * 2.4));
+ cB.Checked += (newCheckState) =>
+ {
+ SettingsManager sM = new SettingsManager();
+ };
+ cB.LoadTexture(AppManager.Instance.Content);
+
+ var checkBox = new CheckBox(Manager);
+ checkBox.rectangle = new Rectangle(wigth / 2 + 360, 540, (int)(40 * 2.4), (int)(40 * 2.4));
+ checkBox.Checked += (newCheckState) =>
+ {
+ SettingsManager sM = new SettingsManager();
+ };
+ checkBox.LoadTexture(AppManager.Instance.Content);
+
+ Label lblOptions = new Label(Manager)
+ { fontName = "buttonFont", scale = 1.2f, text = "Options", fontColor = Color.White, rectangle = new Rectangle((wigth - 50) / 2, 40, 50, 50), mainColor = Color.Transparent };
+ Elements.Add(lblOptions);
+
+ Label lblValue = new Label(Manager)
+ { fontName = "buttonFont", scale = 1f, text = "Volume", fontColor = Color.White, rectangle = new Rectangle((wigth - 50) / 2, 250, 50, 50), mainColor = Color.Transparent };
+ Elements.Add(lblValue);
+
+ Label lblIsFullScreen = new Label(Manager)
+ { fontName = "buttonFont", scale = 1f, text = "Full Screen", fontColor = Color.White, rectangle = new Rectangle((wigth - 50) / 2, 580, 50, 50), mainColor = Color.Transparent };
+ Elements.Add(lblOptions);
+
+ Label lblSwitchMode = new Label(Manager)
+ { fontName = "buttonFont", scale = 1f, text = "Left/Right Mode", fontColor = Color.White, rectangle = new Rectangle((wigth - 50) / 2, 415, 50, 50), mainColor = Color.Transparent };
+ Elements.Add(lblSwitchMode);
+
+ Button bTExit = new Button(Manager)
+ { fontName = "Font2", scale = 0.72f, text = "<-", rectangle = new Rectangle(wigth / 30, height / 30, (int)(40 * 2.4), (int)(40 * 2.4)), textureName = "textboxbackground1-1" };
+ Elements.Add(bTExit);
+ bTExit.LeftButtonPressed += () => {
+ AppManager.Instance.ChangeGameState(GameState.Menu);
+ };
+ }
+ public override void Update(GameTime gameTime)
+ {
+ base.Update(gameTime);
+ }
+ }
+}
\ No newline at end of file
diff --git a/DangerousD/GameCore/GameObjects/IDrawableObject.cs b/DangerousD/GameCore/GameObjects/IDrawableObject.cs
index 1d9ca5c..42d8320 100644
--- a/DangerousD/GameCore/GameObjects/IDrawableObject.cs
+++ b/DangerousD/GameCore/GameObjects/IDrawableObject.cs
@@ -4,7 +4,7 @@ using Microsoft.Xna.Framework.Graphics;
namespace DangerousD.GameCore.GUI
{
- interface IDrawableObject
+ public interface IDrawableObject
{
void Initialize();
void LoadContent();
diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs
index 6928f40..2304490 100644
--- a/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs
+++ b/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs
@@ -26,8 +26,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
public Player(Vector2 position) : base(position)
{
- Width = 32;
- Height = 64;
+ Width = 16;
+ Height = 32;
AppManager.Instance.InputManager.ShootEvent += Shoot;
@@ -82,7 +82,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
}
public void AnimationJump()
{
- velocity.Y = -30;
+ velocity.Y = -11;
isJump = true;
// здесь будет анимация
}
@@ -106,25 +106,29 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
public void Move(GameTime gameTime)
{
float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
- if (Keyboard.GetState().IsKeyDown(Keys.D))
+ if (AppManager.Instance.InputManager.VectorMovementDirection.X==1)
{
- if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveRight")
+ if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveRight")//идёт направо
{
GraphicsComponent.StartAnimation("ZombieMoveRight");
}
- velocity.X = 10;
+ velocity.X = 5;
}
- else if (Keyboard.GetState().IsKeyDown(Keys.A))
+ else if (AppManager.Instance.InputManager.VectorMovementDirection.X == -1)//идёт налево
{
if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveLeft")
{
GraphicsComponent.StartAnimation("ZombieMoveLeft");
}
- velocity.X = -10;
+ velocity.X = -5;
}
- if (Keyboard.GetState().IsKeyDown(Keys.Space) && !isJump)
+ else if(AppManager.Instance.InputManager.VectorMovementDirection.X == 0)//стоит
{
- AnimationJump();
+ if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveLeft")
+ {
+ GraphicsComponent.StartAnimation("ZombieMoveLeft");
+ }
+ velocity.X = 0;
}
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer)
{
@@ -134,7 +138,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
}
public void MoveDown()
{
-
+ velocity.Y = -11;
+ isJump = true;
}
}
diff --git a/DangerousD/GameCore/InputManager.cs b/DangerousD/GameCore/InputManager.cs
index 803bd6e..c171d6b 100644
--- a/DangerousD/GameCore/InputManager.cs
+++ b/DangerousD/GameCore/InputManager.cs
@@ -10,6 +10,7 @@ using System.Runtime.InteropServices;
namespace DangerousD.GameCore
{
public enum ScopeState { Up, Middle, Down }
+ public enum ControlsState { Gamepad, Keyboard, Mouse }
public class InputManager
{
public delegate void Delegat();
@@ -19,26 +20,32 @@ namespace DangerousD.GameCore
Vector2 vectorMovementDirection;
ScopeState scopeState; // Положение оружия. Up, Middle, Down.
+ ControlsState controlsState;
private bool isJumpDown; // Блокирует физическое нажатие прыжка и спуска
private bool isShoot;
public Vector2 VectorMovementDirection { get => vectorMovementDirection; }
public ScopeState ScopeState { get => scopeState; }
+ public string currentControlsState = "";
public InputManager()
{
this.isJumpDown = false;
this.isShoot = false;
scopeState = ScopeState.Middle;
+ controlsState= ControlsState.Mouse;
vectorMovementDirection = new Vector2(0, 0);
}
-
+ public void SetState(ControlsState controlsStates)
+ {
+ currentControlsState = controlsStates.ToString();
+ }
public void Update()
{
// Работа с GamePad
if (GamePad.GetState(0).IsConnected)
- {
+ {
// Обработка гейм-пада. Задает Vector2 vectorMovementDirection являющийся вектором отклонения левого стика.
GamePadState gamePadState = GamePad.GetState(0);
vectorMovementDirection = gamePadState.ThumbSticks.Left;
@@ -86,6 +93,7 @@ namespace DangerousD.GameCore
{
isShoot = false;
}
+ SetState(ControlsState.Gamepad);
}
// Работа с KeyBoard
diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs
index cac4d30..372dab9 100644
--- a/DangerousD/GameCore/Managers/AppManager.cs
+++ b/DangerousD/GameCore/Managers/AppManager.cs
@@ -15,8 +15,8 @@ using DangerousD.GameCore.GameObjects;
namespace DangerousD.GameCore
{
- public enum GameState { Menu, Options, Lobby, Game, Login, GameOver }
public enum MultiPlayerStatus { SinglePlayer, Host, Client }
+ public enum GameState { Menu, Options, Lobby, Game, Login, Death }
public class AppManager : Game
{
public static AppManager Instance { get; private set; }
@@ -26,13 +26,14 @@ namespace DangerousD.GameCore
private SpriteBatch _spriteBatch;
public GameState gameState { get; private set; }
public MultiPlayerStatus multiPlayerStatus { get; private set; } = MultiPlayerStatus.SinglePlayer;
+ public Point resolution = new Point(1920, 1080);
+ public Point inGameResolution = new Point(1366, 768);
IDrawableObject MenuGUI;
IDrawableObject OptionsGUI;
IDrawableObject LoginGUI;
IDrawableObject LobbyGUI;
- public Point resolution = new Point(1920, 1080);
- public Point inGameResolution = new Point(800, 480);
- private RenderTarget2D renderTarget;
+ IDrawableObject DeathGUI;
+ public DebugHUD DebugHUD;
public GameManager GameManager { get; private set; } = new();
public AnimationBuilder AnimationBuilder { get; private set; } = new AnimationBuilder();
@@ -40,6 +41,8 @@ namespace DangerousD.GameCore
public InputManager InputManager { get; private set; } = new InputManager();
public SoundManager SoundManager { get; private set; } = new SoundManager();
public SettingsManager SettingsManager { get; private set; } = new SettingsManager();
+
+ private RenderTarget2D renderTarget;
public AppManager()
{
Content.RootDirectory = "Content";
@@ -56,11 +59,14 @@ namespace DangerousD.GameCore
resolution = SettingsManager.Resolution;
_graphics.PreferredBackBufferWidth = resolution.X;
_graphics.PreferredBackBufferHeight = resolution.Y;
- // _graphics.IsFullScreen = true;
+ _graphics.IsFullScreen = true;
gameState = GameState.Menu;
MenuGUI = new MenuGUI();
LoginGUI = new LoginGUI();
+ OptionsGUI = new OptionsGUI();
LobbyGUI = new LobbyGUI();
+ DeathGUI = new DeathGUI();
+ DebugHUD = new DebugHUD();
UIManager.resolution = resolution;
UIManager.resolutionInGame = inGameResolution;
}
@@ -70,16 +76,24 @@ namespace DangerousD.GameCore
AnimationBuilder.LoadAnimations();
MenuGUI.Initialize();
LoginGUI.Initialize();
+
+ DebugHUD.Initialize();
+ OptionsGUI.Initialize();
+
LobbyGUI.Initialize();
+ DeathGUI.Initialize();
base.Initialize();
}
protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
+ DebugHUD.LoadContent();
MenuGUI.LoadContent();
LoginGUI.LoadContent();
+ OptionsGUI.LoadContent();
LobbyGUI.LoadContent();
+ DeathGUI.LoadContent();
GameObject.debugTexture = new Texture2D(GraphicsDevice, 1, 1);
GameObject.debugTexture.SetData(new Color[] { new Color(1, 0,0,0.25f) });
SoundManager.LoadSounds();
@@ -94,6 +108,7 @@ namespace DangerousD.GameCore
InputManager.Update();
SoundManager.Update();
+
switch (gameState)
{
case GameState.Menu:
@@ -108,12 +123,16 @@ namespace DangerousD.GameCore
case GameState.Lobby:
LobbyGUI.Update(gameTime);
break;
+ case GameState.Death:
+ DeathGUI.Update(gameTime);
+ break;
case GameState.Game:
GameManager.Update(gameTime);
break;
default:
break;
}
+ DebugHUD.Update(gameTime);
base.Update(gameTime);
}
@@ -137,6 +156,9 @@ namespace DangerousD.GameCore
case GameState.Lobby:
LobbyGUI.Draw(_spriteBatch);
break;
+ case GameState.Death:
+ DeathGUI.Draw(_spriteBatch);
+ break;
case GameState.Game:
_spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp);
GameManager.Draw(_spriteBatch);
@@ -151,6 +173,7 @@ namespace DangerousD.GameCore
_spriteBatch.End();
+ DebugHUD.Draw(_spriteBatch);
base.Draw(gameTime);
}
@@ -170,7 +193,7 @@ namespace DangerousD.GameCore
case GameState.Game:
GameManager.mapManager.LoadLevel("lvl");
break;
- case GameState.GameOver:
+ case GameState.Death:
break;
default:
throw new ArgumentOutOfRangeException();
diff --git a/DangerousD/GameCore/Managers/PhysicsManager.cs b/DangerousD/GameCore/Managers/PhysicsManager.cs
index 980d7b3..7e257e0 100644
--- a/DangerousD/GameCore/Managers/PhysicsManager.cs
+++ b/DangerousD/GameCore/Managers/PhysicsManager.cs
@@ -20,9 +20,9 @@ namespace DangerousD.GameCore.Managers
item.velocity = item.velocity + item.acceleration * delta;
}
- CheckCollisions(livingEntities, mapObjects);
- OnCollision(entities, livingEntities);
- OnCollision(livingEntities);
+ CheckCollisionsLE_MO(livingEntities, mapObjects);
+ CheckCollisionsE_LE(entities, livingEntities);
+ CheckCollisionsLE_LE(livingEntities);
//entities dont move
//Living entities dont move
@@ -33,29 +33,27 @@ namespace DangerousD.GameCore.Managers
//OnCollision
}
- public void CheckCollisions(List livingEntities,
+ private void CheckCollisionsLE_MO(List livingEntities,
List mapObjects)
{
- LivingEntity currentEntity;
- Rectangle oldRect;
- for (int i = 0; i < livingEntities.Count; i++)
+ foreach (var currentEntity in livingEntities)
{
- currentEntity = livingEntities[i];
- oldRect = currentEntity.Rectangle;
+ Rectangle oldRect = currentEntity.Rectangle;
bool isXNormalise = true;
bool isYNormalise = true;
oldRect.Offset((int)currentEntity.velocity.X, 0);
- for (int j = 0; j < mapObjects.Count; j++)
+ foreach (var mapObject in mapObjects)
{
- if (Math.Abs(mapObjects[i].Pos.X - currentEntity.Pos.X) < 550 && Math.Abs(mapObjects[i].Pos.Y - currentEntity.Pos.Y) < 550)
+ if (
+ Math.Abs(mapObject.Pos.X - currentEntity.Pos.X) < 550
+ && Math.Abs(mapObject.Pos.Y - currentEntity.Pos.Y) < 550
+ && oldRect.Intersects(mapObject.Rectangle)
+ )
{
- if (oldRect.Intersects(mapObjects[j].Rectangle))
- {
- isXNormalise = false;
- oldRect.Offset(-(int)currentEntity.velocity.X, 0);
- break;
- }
+ isXNormalise = false;
+ oldRect.Offset(-(int)currentEntity.velocity.X, 0);
+ break;
}
}
if (!isXNormalise)
@@ -63,10 +61,9 @@ namespace DangerousD.GameCore.Managers
oldRect.Offset(0, (int)currentEntity.velocity.Y);
- for (int j = 0; j < mapObjects.Count; j++)
+ foreach (var mapObject in mapObjects)
{
-
- if (oldRect.Intersects(mapObjects[j].Rectangle))
+ if (oldRect.Intersects(mapObject.Rectangle))
{
isYNormalise = false;
oldRect.Offset(0, -(int)currentEntity.velocity.Y);
@@ -79,22 +76,21 @@ namespace DangerousD.GameCore.Managers
}
}
- public void OnCollision(List entities, List livingEntities)
+ private void CheckCollisionsE_LE(List entities, List livingEntities)
{
- for (int i = 0; i < entities.Count; i++)
+ foreach (var entity in entities)
{
- for (int j = 0; j < livingEntities.Count; j++)
+ foreach (var livingEntity in livingEntities)
{
- if (livingEntities[j].Rectangle.Intersects(entities[i].Rectangle))
+ if (livingEntity.Rectangle.Intersects(entity.Rectangle))
{
- livingEntities[j].OnCollision(entities[i]);
- entities[i].OnCollision(livingEntities[j]);
+ livingEntity.OnCollision(entity);
+ entity.OnCollision(livingEntity);
}
}
}
-
}
- public void OnCollision(List livingEntities)
+ private void CheckCollisionsLE_LE(List livingEntities)
{
for (int i = 0; i < livingEntities.Count; i++)
{
diff --git a/MonogameLibrary/UI/Base/UIManager.cs b/MonogameLibrary/UI/Base/UIManager.cs
index f8c1178..d37416d 100644
--- a/MonogameLibrary/UI/Base/UIManager.cs
+++ b/MonogameLibrary/UI/Base/UIManager.cs
@@ -11,11 +11,13 @@ using static System.Net.Mime.MediaTypeNames;
namespace MonogameLibrary.UI.Base
{
+ public enum InputState { GamePad, Keyboard, Mouse }
public class UIManager
{
Dictionary> layerCollection = new();
public GraphicsDevice GraphicsDevice { get; private set; }
public SpriteFont BaseFont { get; private set; }
+ public InputState inputState = InputState.Mouse;
public void Initialize(GraphicsDevice graphicsDevice)
{
GraphicsDevice = graphicsDevice;
@@ -29,6 +31,7 @@ namespace MonogameLibrary.UI.Base
static MouseState mouseState, prevmouseState;
static KeyboardState keyboardState;
public static Point resolutionInGame, resolution;
+
public void LoadContent(ContentManager content, string font)
{
diff --git a/MonogameLibrary/UI/Elements/Button.cs b/MonogameLibrary/UI/Elements/Button.cs
index a61c485..cf7d5ce 100644
--- a/MonogameLibrary/UI/Elements/Button.cs
+++ b/MonogameLibrary/UI/Elements/Button.cs
@@ -24,6 +24,7 @@ namespace MonogameLibrary.UI.Elements
public virtual bool InteractUpdate(MouseState mouseState, MouseState prevmouseState)
{
+ //if (Manager.)
if (rectangle.Intersects(new Rectangle(mouseState.Position, Point.Zero)))
{
if (mouseState.LeftButton == ButtonState.Pressed || mouseState.RightButton == ButtonState.Pressed)
diff --git a/MonogameLibrary/UI/Elements/CheckBox.cs b/MonogameLibrary/UI/Elements/CheckBox.cs
index 76f552d..e2e9c04 100644
--- a/MonogameLibrary/UI/Elements/CheckBox.cs
+++ b/MonogameLibrary/UI/Elements/CheckBox.cs
@@ -1,4 +1,5 @@
using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
@@ -15,6 +16,9 @@ namespace MonogameLibrary.UI.Elements
public CheckBox(UIManager manager, int layerIndex = 0) : base(manager, layerIndex)
{
}
+ private Texture2D texture1;
+ private Texture2D texture2;
+ private Texture2D texture3;
public delegate void OnCheck(bool checkState);
public event OnCheck? Checked;
private bool isChecked;
@@ -42,25 +46,33 @@ namespace MonogameLibrary.UI.Elements
}
return false;
}
+
+ public override void LoadTexture(ContentManager content)
+ {
+ texture1 = content.Load("checkboxs_off");
+ texture2 = content.Load("checkboxs_off-on");
+ texture3 = content.Load("checkboxs_on");
+ base.LoadTexture(content);
+ }
public override void Draw(SpriteBatch _spriteBatch)
{
if (isChecked)
{
if (hoverState == HoverState.None)
- _spriteBatch.Draw(texture, rectangle, new Color(124, 255, 0));
+ _spriteBatch.Draw(texture3, rectangle, Color.White);
else if (hoverState == HoverState.Hovering)
- _spriteBatch.Draw(texture, rectangle, new Color(124, 215, 0));
+ _spriteBatch.Draw(texture3, rectangle, Color.White);
else
- _spriteBatch.Draw(texture, rectangle, new Color(124, 175, 0));
+ _spriteBatch.Draw(texture2, rectangle, Color.White );
}
else
{
if (hoverState == HoverState.None)
- _spriteBatch.Draw(texture, rectangle, new Color(255, 20, 0));
+ _spriteBatch.Draw(texture1, rectangle, Color.White);
else if (hoverState == HoverState.Hovering)
- _spriteBatch.Draw(texture, rectangle, new Color(215, 20, 0));
+ _spriteBatch.Draw(texture2, rectangle, Color.White);
else
- _spriteBatch.Draw(texture, rectangle, new Color(175, 20, 0));
+ _spriteBatch.Draw(texture2, rectangle, Color.White);
}
DrawText(_spriteBatch);
}
diff --git a/MonogameLibrary/UI/Elements/Slider.cs b/MonogameLibrary/UI/Elements/Slider.cs
index 7888d70..8db7152 100644
--- a/MonogameLibrary/UI/Elements/Slider.cs
+++ b/MonogameLibrary/UI/Elements/Slider.cs
@@ -1,4 +1,5 @@
using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
@@ -17,7 +18,9 @@ namespace MonogameLibrary.UI.Elements
}
public delegate void OnSliderChanges(float value);
public event OnSliderChanges? SliderChanged;
+ public int indentation = 5;
+ Texture2D texture2;
public Rectangle sliderRect = new Rectangle(0, 0, 30, 30);
private float sliderValue = 0;
private float minValue = 0, maxValue = 1;
@@ -50,6 +53,13 @@ namespace MonogameLibrary.UI.Elements
sliderState = SliderState.None;
return false;
}
+
+ public override void LoadTexture(ContentManager content)
+ {
+ texture2 = content.Load("slider");
+ base.LoadTexture(content);
+ }
+
public void SetValue(float setvalue)
{
sliderValue = setvalue;
@@ -60,14 +70,14 @@ namespace MonogameLibrary.UI.Elements
{
base.Draw(_spriteBatch);
sliderRect.Location = rectangle.Location;
- sliderRect.X += (int)(sliderValue * (rectangle.Width - sliderRect.Width));
+ sliderRect.X += (int)(sliderValue * (rectangle.Width - sliderRect.Width - indentation * 2) + indentation);
sliderRect.Y -= sliderRect.Height / 2 - rectangle.Height / 2;
if (sliderState == SliderState.Moving)
- _spriteBatch.Draw(texture, sliderRect, Color.DarkRed);
+ _spriteBatch.Draw(texture2, sliderRect, Color.DarkRed);
else if(sliderState == SliderState.HoveringOverSliderButton)
- _spriteBatch.Draw(texture, sliderRect, new Color(200,0,0));
+ _spriteBatch.Draw(texture2, sliderRect, new Color(200,0 ,0));
else
- _spriteBatch.Draw(texture, sliderRect, Color.Red);
+ _spriteBatch.Draw(texture2, sliderRect, Color.Red);
DrawText(_spriteBatch);
}
}
diff --git a/MonogameLibrary/UI/Elements/TextBox.cs b/MonogameLibrary/UI/Elements/TextBox.cs
index c5c7b56..3649692 100644
--- a/MonogameLibrary/UI/Elements/TextBox.cs
+++ b/MonogameLibrary/UI/Elements/TextBox.cs
@@ -93,7 +93,7 @@ namespace MonogameLibrary.UI.Elements
_spriteBatch.Draw(texture, rectangle, new Color(211, 211, 211));
else
_spriteBatch.Draw(texture, rectangle, new Color(112, 128, 144));
- DrawText(_spriteBatch);
+ DrawText(_spriteBatch);
}
}
diff --git a/gitignore b/gitignore
new file mode 100644
index 0000000..e69de29