diff --git a/DangerousD/Content/Content.mgcb b/DangerousD/Content/Content.mgcb index 6729fe5..87478e5 100644 --- a/DangerousD/Content/Content.mgcb +++ b/DangerousD/Content/Content.mgcb @@ -45,12 +45,61 @@ /processorParam:TextureFormat=Compressed /build:ButtonFont.spritefont + #begin DoomTestSong.mp3 /importer:Mp3Importer /processor:SoundEffectProcessor /processorParam:Quality=Best /build:DoomTestSong.mp3 +#begin checkboxs_off-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_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 deathBackground.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:deathBackground.jpg + #begin Font_25.spritefont /importer:FontDescriptionImporter /processor:FontDescriptionProcessor @@ -84,7 +133,6 @@ /processorParam:TextureFormat=Color /build:menuFon.jpg -#begin MonstersAnimations.png #begin menuFon.jpg /importer:TextureImporter /processor:TextureProcessor @@ -133,6 +181,90 @@ /processorParam:TextureFormat=Color /build:tiles.png +#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 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 wall.jpg /importer:TextureImporter /processor:TextureProcessor 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/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/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/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..49d25f2 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 { @@ -59,25 +63,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 +91,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..b086967 --- /dev/null +++ b/DangerousD/GameCore/GUI/OptionsGUI.cs @@ -0,0 +1,73 @@ +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) + }; + + 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/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 3379b3c..d5bf99c 100644 --- a/DangerousD/GameCore/Managers/AppManager.cs +++ b/DangerousD/GameCore/Managers/AppManager.cs @@ -13,8 +13,8 @@ using DangerousD.GameCore.Managers; 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; } @@ -23,13 +23,13 @@ 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(1920, 1080); 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 GameManager GameManager { get; private set; } = new(); public AnimationBuilder AnimationBuilder { get; private set; } = new AnimationBuilder(); @@ -37,6 +37,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"; @@ -53,11 +55,13 @@ 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(); UIManager.resolution = resolution; UIManager.resolutionInGame = inGameResolution; } @@ -67,7 +71,11 @@ namespace DangerousD.GameCore AnimationBuilder.LoadAnimations(); MenuGUI.Initialize(); LoginGUI.Initialize(); + + OptionsGUI.Initialize(); + LobbyGUI.Initialize(); + DeathGUI.Initialize(); base.Initialize(); } @@ -76,7 +84,9 @@ namespace DangerousD.GameCore _spriteBatch = new SpriteBatch(GraphicsDevice); 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(); @@ -91,6 +101,7 @@ namespace DangerousD.GameCore InputManager.Update(); SoundManager.Update(); + switch (gameState) { case GameState.Menu: @@ -105,6 +116,9 @@ namespace DangerousD.GameCore case GameState.Lobby: LobbyGUI.Update(gameTime); break; + case GameState.Death: + DeathGUI.Update(gameTime); + break; case GameState.Game: GameManager.Update(gameTime); break; @@ -134,6 +148,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); @@ -167,7 +184,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/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/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