Merge branch 'main' into FrankBalls

This commit is contained in:
Kaktus200020 2023-08-18 15:11:17 +03:00
commit 19685a26d9
22 changed files with 540 additions and 86 deletions

View file

@ -200,6 +200,13 @@
/processorParam:TextureFormat=Color /processorParam:TextureFormat=Color
/build:PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png /build:PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png
#begin PixelFont.spritefont
/importer:FontDescriptionImporter
/processor:FontDescriptionProcessor
/processorParam:PremultiplyAlpha=True
/processorParam:TextureFormat=Compressed
/build:PixelFont.spritefont
#begin playerAnimation.png #begin playerAnimation.png
/importer:TextureImporter /importer:TextureImporter
/processor:TextureProcessor /processor:TextureProcessor

View file

@ -0,0 +1,64 @@
<?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>PublicPixel-z84yD.ttf</FontName>
<!--
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
<Size>12</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>
<CharacterRegion>
<Start>&#1072;</Start>
<End>&#1103;</End>
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>

Binary file not shown.

View file

@ -0,0 +1 @@
{"id":"playerShootUpLeft","textureName":"playerAnimation","startSpriteRectangle":{"X":267,"Y":34,"Width":24,"Height":32},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":1,"isCycle":true,"offset":"0, 0"}

View file

@ -0,0 +1 @@
{"id":"playerShootUpRight","textureName":"playerAnimation","startSpriteRectangle":{"X":267,"Y":1,"Width":24,"Height":32},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":1,"isCycle":true,"offset":"0, 0"}

View file

@ -1,8 +1,14 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Xml;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base; using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
namespace DangerousD.GameCore.GUI; namespace DangerousD.GameCore.GUI;
@ -10,6 +16,10 @@ public abstract class AbstractGui : IDrawableObject
{ {
protected UIManager Manager = new(); protected UIManager Manager = new();
protected List<DrawableUIElement> Elements = new(); protected List<DrawableUIElement> Elements = new();
private List<DrawableUIElement> ActiveElements;
protected DrawableUIElement SelectedElement;
private bool isStartedPrint = false;
private bool isPressed = false;
public AbstractGui() public AbstractGui()
{ {
@ -21,6 +31,16 @@ public abstract class AbstractGui : IDrawableObject
{ {
Manager.Initialize(AppManager.Instance.GraphicsDevice); Manager.Initialize(AppManager.Instance.GraphicsDevice);
CreateUI(); CreateUI();
ActiveElements = new List<DrawableUIElement>();
foreach (var element in Elements)
{
if (CheckOnBadElements(element))
{
ActiveElements.Add(element);
}
}
if (ActiveElements.Count > 0) { SelectedElement = ActiveElements.First(); }
} }
public virtual void LoadContent() public virtual void LoadContent()
@ -30,11 +50,163 @@ public abstract class AbstractGui : IDrawableObject
public virtual void Update(GameTime gameTime) public virtual void Update(GameTime gameTime)
{ {
string state = AppManager.Instance.InputManager.currentControlsState;
if (ActiveElements.Count != 0)
{
if (state == "Gamepad")
{
GamePadState gamePadState = GamePad.GetState(0);
GamepadInput(gamePadState);
}
else if (state == "Keyboard" || state == "Mouse")
{
KeyboardState keyBoardState = Keyboard.GetState();
KeyBoardInput(keyBoardState);
}
}
Manager.Update(gameTime); Manager.Update(gameTime);
if (SelectedElement is not null)
{
if (SelectedElement is Button)
{
(SelectedElement as Button).hoverState = MonogameLibrary.UI.Enums.HoverState.Hovering;
}
if (SelectedElement is ButtonText)
{
(SelectedElement as ButtonText).hoverState = MonogameLibrary.UI.Enums.HoverState.Hovering;
}
if (SelectedElement is TextBox)
{
TextBox box = (TextBox)SelectedElement;
box.hoverState = MonogameLibrary.UI.Enums.HoverState.Hovering;
if (isStartedPrint)
{
box.SelectIt();
}
}
}
} }
public virtual void Draw(SpriteBatch spriteBatch) public virtual void Draw(SpriteBatch spriteBatch)
{ {
Manager.Draw(spriteBatch); Manager.Draw(spriteBatch);
} }
protected virtual void GamepadInput(GamePadState gamePadState)
{
if (gamePadState.DPad.Up == ButtonState.Pressed && !isPressed)
{
isPressed = true;
ChangeSelectedElement(-1);
Debug.WriteLine("switch");
}
else if (gamePadState.DPad.Down == ButtonState.Pressed && !isPressed)
{
isPressed = true;
ChangeSelectedElement(1);
}
else if (gamePadState.Buttons.A == ButtonState.Pressed && !isPressed)
{
isPressed = true;
if (SelectedElement is Button)
{
Button button = SelectedElement as Button;
button.CallLeftBtnEvent();
}
else if (SelectedElement is TextBox)
{
TextBox textBox = SelectedElement as TextBox;
isStartedPrint = true;
}
}
else if (isPressed && (gamePadState.Buttons.A == ButtonState.Released &&
gamePadState.DPad.Down == ButtonState.Released &&
gamePadState.DPad.Up == ButtonState.Released))
{
isPressed = false;
}
}
protected virtual void KeyBoardInput(KeyboardState keyboardState)
{
if (keyboardState.IsKeyDown(Keys.Up) && !isPressed)
{
isPressed = true;
isStartedPrint = false;
ChangeSelectedElement(-1);
}
else if (keyboardState.IsKeyDown(Keys.Down) && !isPressed)
{
isPressed = true;
isStartedPrint = false;
ChangeSelectedElement(1);
}
else if (keyboardState.IsKeyDown(Keys.Enter) && !isPressed)
{
isPressed = true;
if (SelectedElement is Button)
{
Button button = SelectedElement as Button;
button.CallLeftBtnEvent();
}
else if (SelectedElement is TextBox)
{
TextBox textBox = SelectedElement as TextBox;
isStartedPrint = true;
}
}
else if (isPressed && (keyboardState.IsKeyUp(Keys.Enter) &&
keyboardState.IsKeyUp(Keys.Down) &&
keyboardState.IsKeyUp(Keys.Up)))
{
isPressed = false;
}
}
private void ChangeSelectedElement(int x) // Меняет выбранный элемент
{
for (int i = 0; i < ActiveElements.Count; i++)
{
if (ActiveElements[i] == SelectedElement)
{
if (i + x >= ActiveElements.Count)
{
SelectedElement = ActiveElements.First();
return;
}
else
{
if (i + x < 0)
{
SelectedElement = ActiveElements.Last();
return;
}
else
{
SelectedElement = ActiveElements[i + x];
return;
}
}
}
}
}
private bool CheckOnBadElements(DrawableUIElement element)
{
if (element is Button)
{
return true;
}
else if (element is ButtonText)
{
return true;
}
else if (element is TextBox)
{
return true;
}
else return false;
}
} }

View file

@ -13,17 +13,29 @@ internal class DeathGUI : AbstractGui
{ {
int wigth = AppManager.Instance.inGameResolution.X; int wigth = AppManager.Instance.inGameResolution.X;
int height = AppManager.Instance.inGameResolution.Y; int height = AppManager.Instance.inGameResolution.Y;
float scaler = AppManager.Instance.resolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "deathBackground" }; var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "deathBackground" };
Elements.Add(menuBackground); Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content); 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 - 80, 50, 50), text = "You died", 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 }); 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" }; 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); Elements.Add(butMenu);
butMenu.LeftButtonPressed += () => butMenu.LeftButtonPressed += () =>
{ {
AppManager.Instance.ChangeGameState(GameState.Menu); AppManager.Instance.ChangeGameState(GameState.Menu);
}; };
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;
}
}
} }
public override void Update(GameTime gameTime) public override void Update(GameTime gameTime)

View file

@ -6,34 +6,80 @@ using System.Xml.Linq;
using DangerousD.GameCore.Managers; using DangerousD.GameCore.Managers;
using DangerousD.GameCore; using DangerousD.GameCore;
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.Xna.Framework.Graphics;
using static System.Formats.Asn1.AsnWriter;
using static System.Net.Mime.MediaTypeNames;
namespace DangerousD.GameCore.GUI namespace DangerousD.GameCore.GUI
{ {
public class HUD : AbstractGui public class HUD : IDrawableObject
{ {
List<Rect> rects = new List<Rect> { };
int wigth = AppManager.Instance.inGameResolution.X; int wigth = AppManager.Instance.inGameResolution.X;
int height = AppManager.Instance.inGameResolution.Y; int height = AppManager.Instance.inGameResolution.Y;
protected override void CreateUI() float scaler = AppManager.Instance.resolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
{ Texture2D texture;
DrawableUIElement background = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), mainColor = Color.Transparent }; SpriteFont spriteFont;
Elements.Add(background);
Rect rect = new Rect(Manager) { rectangle = new Rectangle(wigth / 35, height / 35, 120, 70), mainColor = Color.DarkRed };
Elements.Add(rect);
Label label = new Label(Manager) { rectangle = new Rectangle(wigth / 34, height / 30, 120, 20), text = "ammout", fontName = "font2", scale = 0.2f, mainColor = Color.Transparent, fontColor = Color.Black };
Elements.Add(label);
} public void Draw(SpriteBatch spriteBatch)
public override void Update(GameTime gameTime) {
{ spriteBatch.Begin();
rects.Clear(); spriteBatch.Draw(texture, new Rectangle(wigth / 35 - 2, height / 35 - 2, 120 + 2, 70 + 2), Color.DarkRed);
for (int i = 0; i < AppManager.Instance.GameManager.GetPlayer1.Bullets; i++) spriteBatch.DrawString(spriteFont, "AMMO", new Vector2(wigth / 34 + 4, height / 30 - 6), Color.Gray, 0, Vector2.Zero, 1.8f, SpriteEffects.None, 0);
spriteBatch.DrawString(spriteFont, "AMMO", new Vector2(wigth / 34 + 1, height / 30 - 6), Color.White, 0, Vector2.Zero, 1.8f, SpriteEffects.None, 0);
for (int i = 1; i < 6; i++)
{ {
rects.Add(new Rect(Manager) { rectangle = new Rectangle(wigth / 29 + i * 13, height / 17, 5, 20), mainColor = Color.Yellow }); if (i <= AppManager.Instance.GameManager.players[0].Bullets)
rects[i].LoadTexture(AppManager.Instance.Content); {
spriteBatch.Draw(texture, new Rectangle(wigth / 30 + i * 13 + 2, height / 17 + 4, 5, 20), new Color(0.8f, 0.8f, 0, 1f));
spriteBatch.Draw(texture, new Rectangle(wigth / 30 + i * 13, height / 17 + 4, 5, 20), Color.Yellow);
}
else
{
spriteBatch.Draw(texture, new Rectangle(wigth / 30 + i * 13, height / 17 + 4, 7, 20), new Color(0.2f, 0.2f, 0, 1f));
}
} }
base.Update(gameTime); spriteBatch.End();
}
public void Initialize()
{
}
public void LoadContent()
{
texture = new Texture2D(AppManager.Instance.GraphicsDevice, 1, 1);
texture.SetData<Color>(new Color[] { Color.White });
spriteFont = AppManager.Instance.Content.Load<SpriteFont>("PixelFont");
}
public void Update(GameTime gameTime)
{
} }
} }
//public class HUD1 : AbstractGui
//{
//
// protected override void CreateUI()
// {
// DrawableUIElement background = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), mainColor = Color.Transparent };
// Elements.Add(background);
// Rect rect = new Rect(Manager) { rectangle = new Rectangle(wigth / 35, height / 35, 120, 70), mainColor = Color.DarkRed };
// Elements.Add(rect);
// Label label = new Label(Manager) { rectangle = new Rectangle(wigth / 34, height / 30, 120, 20), text = "ammout", fontName = "font2", scale = 0.2f, mainColor = Color.Transparent, fontColor = Color.Black };
// Elements.Add(label);
// }
// public override void Update(GameTime gameTime)
// {
//
// rects.Clear();
// for (int i = 0; i < ammout; i++)
// {
// rects.Add(new Rect(Manager) { rectangle = new Rectangle(wigth / 29 + i * 13, height / 17, 5, 20), mainColor = Color.Yellow });
// rects[i].LoadTexture(AppManager.Instance.Content);
// }
// base.Update(gameTime);
// }
//}
} }

View file

@ -25,6 +25,7 @@ namespace DangerousD.GameCore.GUI
{ {
int screenWidth = AppManager.Instance.inGameResolution.X; int screenWidth = AppManager.Instance.inGameResolution.X;
int screenHeight = AppManager.Instance.inGameResolution.Y; int screenHeight = AppManager.Instance.inGameResolution.Y;
float scaler = AppManager.Instance.resolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
var lobbyBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, screenWidth, screenHeight), textureName = "menuFon3" }; var lobbyBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, screenWidth, screenHeight), textureName = "menuFon3" };
Elements.Add(lobbyBackground); Elements.Add(lobbyBackground);
@ -51,6 +52,7 @@ namespace DangerousD.GameCore.GUI
textureName = "textboxbackground6-1" textureName = "textboxbackground6-1"
}; };
Elements.Add(searchBarTextBox);
searchBarTextBox.TextChanged += input => { searchBarTextBox.TextChanged += input => {
if (searchBarTextBox.fontColor == Color.Gray) if (searchBarTextBox.fontColor == Color.Gray)
{ {
@ -73,6 +75,7 @@ namespace DangerousD.GameCore.GUI
fontName = "font2", fontName = "font2",
textureName = "textboxbackground1-1" textureName = "textboxbackground1-1"
}; };
Elements.Add(backButton);
backButton.LeftButtonPressed += () => { backButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Menu); AppManager.Instance.ChangeGameState(GameState.Menu);
}; };
@ -86,6 +89,7 @@ namespace DangerousD.GameCore.GUI
fontName = "buttonFont", fontName = "buttonFont",
textureName = "textboxbackground2-1" textureName = "textboxbackground2-1"
}; };
Elements.Add(hostButton);
hostButton.LeftButtonPressed += () => { hostButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Game); AppManager.Instance.ChangeGameState(GameState.Game);
AppManager.Instance.NetworkManager.HostInit(AppManager.Instance.IpAddress); AppManager.Instance.NetworkManager.HostInit(AppManager.Instance.IpAddress);
@ -101,6 +105,7 @@ namespace DangerousD.GameCore.GUI
fontName = "buttonFont", fontName = "buttonFont",
textureName = "textboxbackground2-1" textureName = "textboxbackground2-1"
}; };
Elements.Add(refreshButton);
refreshButton.LeftButtonPressed += () => { refreshButton.LeftButtonPressed += () => {
}; };
@ -114,6 +119,7 @@ namespace DangerousD.GameCore.GUI
fontName = "buttonFont", fontName = "buttonFont",
textureName = "textboxbackground2-1" textureName = "textboxbackground2-1"
}; };
Elements.Add(joinSelectedButton);
joinSelectedButton.LeftButtonPressed += () => { joinSelectedButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Game); AppManager.Instance.ChangeGameState(GameState.Game);
AppManager.Instance.NetworkManager.ClientInit(AppManager.Instance.IpAddress); AppManager.Instance.NetworkManager.ClientInit(AppManager.Instance.IpAddress);
@ -127,10 +133,25 @@ namespace DangerousD.GameCore.GUI
fontName = "buttonFont", fontName = "buttonFont",
textureName = "textboxbackground2-1" textureName = "textboxbackground2-1"
}; };
Elements.Add(joinByIpButton);
joinByIpButton.LeftButtonPressed += () => { joinByIpButton.LeftButtonPressed += () => {
AppManager.Instance.NetworkManager.ClientInit(searchBarTextBox.text); AppManager.Instance.NetworkManager.ClientInit(searchBarTextBox.text);
}; };
} }
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;
}
}
} }
} }
} }

View file

@ -26,6 +26,7 @@ namespace DangerousD.GameCore.GUI
{ {
int screenWidth = AppManager.Instance.inGameResolution.X; int screenWidth = AppManager.Instance.inGameResolution.X;
int screenHeight = AppManager.Instance.inGameResolution.Y; int screenHeight = AppManager.Instance.inGameResolution.Y;
float scaler = AppManager.Instance.resolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
var loginBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, screenWidth, screenHeight), textureName = "menuFon2" }; var loginBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, screenWidth, screenHeight), textureName = "menuFon2" };
Elements.Add(loginBackground); Elements.Add(loginBackground);
@ -40,6 +41,19 @@ namespace DangerousD.GameCore.GUI
fontName = "ButtonFont" 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-ы
{ {
TextBox loginTextBox = new TextBox(Manager) TextBox loginTextBox = new TextBox(Manager)
@ -53,6 +67,7 @@ namespace DangerousD.GameCore.GUI
textureName = "textboxbackground6-1" textureName = "textboxbackground6-1"
}; };
Elements.Add(loginTextBox);
loginTextBox.LoadTexture(AppManager.Instance.Content); loginTextBox.LoadTexture(AppManager.Instance.Content);
loginTextBox.TextChanged += input => { loginTextBox.TextChanged += input => {
if (loginTextBox.fontColor == Color.Gray) if (loginTextBox.fontColor == Color.Gray)
@ -67,6 +82,7 @@ namespace DangerousD.GameCore.GUI
loginTextBox.fontColor = Color.Gray; loginTextBox.fontColor = Color.Gray;
} }
}; };
Elements.Add(loginTextBox);
TextBox passwordTextBox = new TextBox(Manager) TextBox passwordTextBox = new TextBox(Manager)
{ {
@ -78,6 +94,7 @@ namespace DangerousD.GameCore.GUI
textAligment = TextAligment.Left, textAligment = TextAligment.Left,
textureName = "textboxbackground6-1" textureName = "textboxbackground6-1"
}; };
Elements.Add(passwordTextBox);
passwordTextBox.LoadTexture(AppManager.Instance.Content); passwordTextBox.LoadTexture(AppManager.Instance.Content);
passwordTextBox.TextChanged += input => { passwordTextBox.TextChanged += input => {
if (passwordTextBox.fontColor == Color.Gray) if (passwordTextBox.fontColor == Color.Gray)
@ -92,6 +109,7 @@ namespace DangerousD.GameCore.GUI
passwordTextBox.fontColor = Color.Gray; passwordTextBox.fontColor = Color.Gray;
} }
}; };
Elements.Add(passwordTextBox);
} }
// Кнопки // Кнопки
@ -104,12 +122,14 @@ namespace DangerousD.GameCore.GUI
fontName = "ButtonFont", fontName = "ButtonFont",
textureName = "textboxbackground2-1" textureName = "textboxbackground2-1"
}; };
Elements.Add(logButton);
logButton.LeftButtonPressed += () => { logButton.LeftButtonPressed += () => {
if (CheckUser()) if (CheckUser())
{ {
AppManager.Instance.ChangeGameState(GameState.Lobby); AppManager.Instance.ChangeGameState(GameState.Lobby);
} }
}; };
Elements.Add(logButton);
Button regButton = new Button(Manager) Button regButton = new Button(Manager)
{ {
@ -120,20 +140,22 @@ namespace DangerousD.GameCore.GUI
fontName = "ButtonFont", fontName = "ButtonFont",
textureName = "textboxbackground2-1" textureName = "textboxbackground2-1"
}; };
Elements.Add(regButton);
regButton.LeftButtonPressed += GoToRegWebServer; regButton.LeftButtonPressed += GoToRegWebServer;
Elements.Add(regButton);
Button backButton = new Button(Manager)
}
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)
{ {
rectangle = new Rectangle(screenWidth / 20, screenHeight / 15, (int)(40 * 2.4), (int)(40 * 2.4)), (item as DrawableTextedUiElement).scale *= scaler;
text = "<-", }
scale = 0.72f,
fontColor = Color.Black,
fontName = "font2",
textureName = "textboxbackground1-1"
};
backButton.LeftButtonPressed += () => {
AppManager.Instance.ChangeGameState(GameState.Menu);
};
} }
} }

View file

@ -22,9 +22,10 @@ internal class MenuGUI : AbstractGui
List<Vector2> BigLetterPositions = new List<Vector2>(); List<Vector2> BigLetterPositions = new List<Vector2>();
protected override void CreateUI() protected override void CreateUI()
{ {
int wigth = AppManager.Instance.inGameResolution.X; int wigth = AppManager.Instance.inGameHUDHelperResolution.X;
int height = AppManager.Instance.inGameResolution.Y; int height = AppManager.Instance.inGameHUDHelperResolution.Y;
float scaler = AppManager.Instance.resolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "menuFon" }; var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "menuFon" };
Elements.Add(menuBackground); Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content); menuBackground.LoadTexture(AppManager.Instance.Content);
@ -50,6 +51,7 @@ internal class MenuGUI : AbstractGui
{ {
AppManager.Instance.ChangeGameState(GameState.Game); AppManager.Instance.ChangeGameState(GameState.Game);
AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.SinglePlayer); AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.SinglePlayer);
}; };
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" }; 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" };
@ -57,7 +59,7 @@ internal class MenuGUI : AbstractGui
Elements.Add(butMulti); Elements.Add(butMulti);
butMulti.LeftButtonPressed += () => butMulti.LeftButtonPressed += () =>
{ {
AppManager.Instance.ChangeGameState(GameState.Login); AppManager.Instance.ChangeGameState(GameState.Login);
}; };
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" }; 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); Elements.Add(butOption);
@ -72,6 +74,18 @@ internal class MenuGUI : AbstractGui
{ {
AppManager.Instance.Exit(); AppManager.Instance.Exit();
}; };
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;
}
}
} }

View file

@ -13,10 +13,11 @@ namespace DangerousD.GameCore.GUI
int selectedGUI = 0; int selectedGUI = 0;
protected override void CreateUI() protected override void CreateUI()
{ {
int wigth = AppManager.Instance.inGameResolution.X; int wigth = AppManager.Instance.inGameHUDHelperResolution.X;
int height = AppManager.Instance.inGameResolution.Y; int height = AppManager.Instance.inGameHUDHelperResolution.Y;
float scaler = AppManager.Instance.resolution.Y / (float)AppManager.Instance.inGameHUDHelperResolution.Y;
var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "optionsBackground" }; var menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, wigth, height), textureName = "optionsBackground" };
Elements.Add(menuBackground); //Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content); menuBackground.LoadTexture(AppManager.Instance.Content);
var slider = new Slider(Manager) var slider = new Slider(Manager)
@ -27,6 +28,8 @@ namespace DangerousD.GameCore.GUI
indentation = 5, indentation = 5,
textureName = "sliderBackground" textureName = "sliderBackground"
}; };
//Elements.Add(slider);
//AppManager.Instance.SettingsManager.SetMainVolume(slider.GetSliderValue);
var cB = new CheckBox(Manager); var cB = new CheckBox(Manager);
cB.rectangle = new Rectangle(wigth / 2 + 440, 405, (int)(40 * 2.4), (int)(40 * 2.4)); cB.rectangle = new Rectangle(wigth / 2 + 440, 405, (int)(40 * 2.4), (int)(40 * 2.4));
@ -35,26 +38,28 @@ namespace DangerousD.GameCore.GUI
SettingsManager sM = new SettingsManager(); SettingsManager sM = new SettingsManager();
}; };
cB.LoadTexture(AppManager.Instance.Content); cB.LoadTexture(AppManager.Instance.Content);
Elements.Add(cB);
var checkBox = new CheckBox(Manager); var checkBox = new CheckBox(Manager);
checkBox.rectangle = new Rectangle(wigth / 2 + 360, 540, (int)(40 * 2.4), (int)(40 * 2.4)); checkBox.rectangle = new Rectangle(wigth / 2 + 360, 540, (int)(40 * 2.4), (int)(40 * 2.4));
checkBox.Checked += (newCheckState) => checkBox.Checked += (newCheckState) =>
{ {
SettingsManager sM = new SettingsManager(); AppManager.Instance.SettingsManager.SetIsFullScreen(newCheckState);
}; };
checkBox.LoadTexture(AppManager.Instance.Content); checkBox.LoadTexture(AppManager.Instance.Content);
Elements.Add(checkBox);
Label lblOptions = new Label(Manager) 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 }; { 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); Elements.Add(lblOptions);
Label lblValue = new Label(Manager) 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 }; { fontName = "buttonFont", scale = 1f , text = "Volume", fontColor = Color.White, rectangle = new Rectangle((wigth - 50) / 2, 250, 50, 50), mainColor = Color.Transparent };
Elements.Add(lblValue); Elements.Add(lblValue);
Label lblIsFullScreen = new Label(Manager) 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 }; { 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); Elements.Add(lblIsFullScreen);
Label lblSwitchMode = new Label(Manager) 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 }; { fontName = "buttonFont", scale = 1f, text = "Left/Right Mode", fontColor = Color.White, rectangle = new Rectangle((wigth - 50) / 2, 415, 50, 50), mainColor = Color.Transparent };
@ -67,6 +72,26 @@ namespace DangerousD.GameCore.GUI
{ {
AppManager.Instance.ChangeGameState(GameState.Menu); AppManager.Instance.ChangeGameState(GameState.Menu);
}; };
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;
}
}
slider.rectangle.X = (int)(scaler * slider.rectangle.X);
slider.rectangle.Y = (int)(scaler * slider.rectangle.Y);
//slider.rectangle.Width = (int)(scaler * slider.rectangle.Width);
//slider.rectangle.Height = (int)(scaler * slider.rectangle.Height);
if (slider is DrawableTextedUiElement)
{
(slider as DrawableTextedUiElement).scale *= scaler;
}
} }
public override void Update(GameTime gameTime) public override void Update(GameTime gameTime)
{ {

View file

@ -8,6 +8,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using DangerousD.GameCore.Managers; using DangerousD.GameCore.Managers;
using DangerousD.GameCore.GameObjects;
namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
{ {
@ -24,7 +25,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
{ {
Width = 24; Width = 24;
Height = 40; Height = 40;
monster_speed = 3; monster_speed = 2;
name = "Zombie"; name = "Zombie";
monster_health = 2; monster_health = 2;
leftBorder = (int)position.X - 100; leftBorder = (int)position.X - 100;
@ -133,7 +134,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
public void Target() public void Target()
{ {
if (AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X - 50, (int)Pos.Y, Width + 100, Height), typeof(Player)).Count > 0) if (AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X - 50, (int)Pos.Y, Width + 200, Height), typeof(Player)).Count > 0)
{ {
if(isGoRight && this._pos.X <= AppManager.Instance.GameManager.players[0].Pos.X) if(isGoRight && this._pos.X <= AppManager.Instance.GameManager.players[0].Pos.X)
{ {
@ -183,5 +184,5 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
Death(); Death();
} }
} }
}
} }
}

View file

@ -73,7 +73,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
public bool IsAlive { get { return isAlive; } } public bool IsAlive { get { return isAlive; } }
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft", protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
"playerJumpRight" , "playerJumpLeft", "playerShootLeft", "playerShootRight", "playerReload", "smokeAfterShoot"}, "playerReload"); "playerJumpRight" , "playerJumpLeft", "playerShootLeft", "playerShootRight", "playerReload", "smokeAfterShoot", "playerShootUpRight", "playerShootUpLeft"}, "playerReload");
public void Attack() public void Attack()
{ {
@ -101,7 +101,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
return; return;
} }
isAttacked = true; isAttacked = true;
if(monsterName == "Zombie") if (monsterName == "Zombie")
{ {
AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName); AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName);
deathRectangle.Gr.actionOfAnimationEnd += (a) => deathRectangle.Gr.actionOfAnimationEnd += (a) =>
@ -112,7 +112,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
} }
}; };
} }
else if(monsterName == "Spider") else if (monsterName == "Spider")
{ {
AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName); AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName);
deathRectangle.Gr.actionOfAnimationEnd += (a) => deathRectangle.Gr.actionOfAnimationEnd += (a) =>
@ -187,7 +187,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
FallingThroughPlatform = false; FallingThroughPlatform = false;
} }
GraphicsComponent.SetCameraPosition(Pos); GraphicsComponent.SetCameraPosition(Pos);
if (!isAttacked || AppManager.Instance.InputManager.InvincibilityCheat) if (!isAttacked || AppManager.Instance.InputManager.InvincibilityCheat)
{ {
if (!isShooting) if (!isShooting)
{ {
@ -230,7 +230,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
} }
else if (AppManager.Instance.InputManager.VectorMovementDirection.X == 0)//стоит else if (AppManager.Instance.InputManager.VectorMovementDirection.X == 0)//стоит
{ {
if(bullets < 5) if (bullets < 5)
{ {
if (GraphicsComponent.GetCurrentAnimation != "playerReload") if (GraphicsComponent.GetCurrentAnimation != "playerReload")
{ {
@ -239,11 +239,31 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
} }
else if (isRight) else if (isRight)
{ {
GraphicsComponent.StartAnimation("playerRightStay"); if (isUping)
{
if (GraphicsComponent.GetCurrentAnimation != "playerShootUpRight")
{
GraphicsComponent.StartAnimation("playerShootUpRight");
}
}
else
{
GraphicsComponent.StartAnimation("playerRightStay");
}
} }
else if (!isRight) else if (!isRight)
{ {
GraphicsComponent.StartAnimation("playerStayLeft"); if (isUping)
{
if (GraphicsComponent.GetCurrentAnimation != "playerShootUpLeft")
{
GraphicsComponent.StartAnimation("playerShootUpLeft");
}
}
else
{
GraphicsComponent.StartAnimation("playerStayLeft");
}
} }
} }
} }
@ -258,5 +278,14 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
FallingThroughPlatform = true; FallingThroughPlatform = true;
isOnGround = false; isOnGround = false;
} }
public class Bullet : GameObjects.LivingEntity
{
public Bullet(Vector2 position) : base(position)
{
}
protected override GraphicsComponent GraphicsComponent { get; } = new("ZombieMoveLeft");
}
} }
} }

View file

@ -1,4 +1,6 @@
using Microsoft.Xna.Framework; using DangerousD.GameCore.GameObjects.LivingEntities;
using DangerousD.GameCore.Network;
using Microsoft.Xna.Framework;
namespace DangerousD.GameCore.GameObjects; namespace DangerousD.GameCore.GameObjects;
@ -15,6 +17,14 @@ public abstract class LivingEntity : Entity
public override void SetPosition(Vector2 position) public override void SetPosition(Vector2 position)
{ {
_pos = position; _pos = position;
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer)
{
NetworkTask task = new NetworkTask(id, _pos);
if (this is Player || AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host)
{
AppManager.Instance.NetworkTasks.Add(task);
}
}
} //TODO befrend targetpos and physics engine } //TODO befrend targetpos and physics engine

View file

@ -1,4 +1,6 @@
using DangerousD.GameCore.Managers; using DangerousD.GameCore.GameObjects;
using DangerousD.GameCore.GameObjects.LivingEntities;
using DangerousD.GameCore.Managers;
using DangerousD.GameCore.Network; using DangerousD.GameCore.Network;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Content;
@ -107,13 +109,13 @@ namespace DangerousD.GameCore.Graphics
public void StartAnimation(string startedanimationId) public void StartAnimation(string startedanimationId)
{ {
if (startedanimationId == "playerShootRight" && parentId == 17) if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer)
{
string a = "2";
}
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer && startedanimationId != GetCurrentAnimation)
{ {
LivingEntity entity = AppManager.Instance.GameManager.livingEntities.Find(x => x.id == parentId);
if (((entity is Player) || AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host) && startedanimationId != GetCurrentAnimation)
{
AppManager.Instance.NetworkTasks.Add(new NetworkTask(parentId, startedanimationId, Vector2.Zero)); AppManager.Instance.NetworkTasks.Add(new NetworkTask(parentId, startedanimationId, Vector2.Zero));
}
} }
currentFrame = 0; currentFrame = 0;
currentAnimation = animations.Find(x => x.Id == startedanimationId); currentAnimation = animations.Find(x => x.Id == startedanimationId);

View file

@ -32,6 +32,7 @@ namespace DangerousD.GameCore
public Vector2 VectorMovementDirection { get => vectorMovementDirection; } public Vector2 VectorMovementDirection { get => vectorMovementDirection; }
public ScopeState ScopeState { get => scopeState; } public ScopeState ScopeState { get => scopeState; }
public string currentControlsState;
public InputManager() public InputManager()
{ {
@ -205,7 +206,12 @@ namespace DangerousD.GameCore
{ {
isShoot = false; isShoot = false;
} }
SetState(ControlsState.Keyboard);
} }
} }
public void SetState(ControlsState controlsState)
{
currentControlsState = controlsState.ToString();
}
} }
} }

View file

@ -17,7 +17,7 @@ using System.Threading.Tasks;
namespace DangerousD.GameCore namespace DangerousD.GameCore
{ {
public enum MultiPlayerStatus { SinglePlayer, Host, Client } public enum MultiPlayerStatus { SinglePlayer, Host, Client }
public enum GameState { Menu, Options, Lobby, Game, Login, Death, HUD, public enum GameState { Menu, Options, Lobby, Game, Login, Death,
GameOver GameOver
} }
public class AppManager : Game public class AppManager : Game
@ -28,15 +28,17 @@ namespace DangerousD.GameCore
private SpriteBatch _spriteBatch; private SpriteBatch _spriteBatch;
public GameState gameState { get; private set; } public GameState gameState { get; private set; }
public MultiPlayerStatus multiPlayerStatus { get; private set; } = MultiPlayerStatus.SinglePlayer; public MultiPlayerStatus multiPlayerStatus { get; private set; } = MultiPlayerStatus.SinglePlayer;
public Point resolution = new Point(1920, 1080); public Point resolution;
public Point inGameResolution = new Point(1920, 1080); public Point inGameResolution = new Point(1920, 1080);
public Point inGameHUDHelperResolution = new Point(1920, 1080);
IDrawableObject MenuGUI; IDrawableObject MenuGUI;
IDrawableObject OptionsGUI; IDrawableObject OptionsGUI;
IDrawableObject LoginGUI; IDrawableObject LoginGUI;
IDrawableObject LobbyGUI; IDrawableObject LobbyGUI;
IDrawableObject DeathGUI; IDrawableObject DeathGUI;
IDrawableObject HUD; //IDrawableObject HUD;
public DebugHUD DebugHUD; public DebugHUD DebugHUD;
public HUD HUD;
public List<NetworkTask> NetworkTasks = new List<NetworkTask>(); public List<NetworkTask> NetworkTasks = new List<NetworkTask>();
public GameManager GameManager { get; private set; } = new(); public GameManager GameManager { get; private set; } = new();
@ -61,9 +63,7 @@ namespace DangerousD.GameCore
NetworkManager.GetReceivingMessages += NetworkSync; NetworkManager.GetReceivingMessages += NetworkSync;
resolution = SettingsManager.Resolution; resolution = SettingsManager.Resolution;
_graphics.PreferredBackBufferWidth = resolution.X;
_graphics.PreferredBackBufferHeight = resolution.Y;
_graphics.IsFullScreen = false;
gameState = GameState.Menu; gameState = GameState.Menu;
MenuGUI = new MenuGUI(); MenuGUI = new MenuGUI();
LoginGUI = new LoginGUI(); LoginGUI = new LoginGUI();
@ -72,8 +72,8 @@ namespace DangerousD.GameCore
DeathGUI = new DeathGUI(); DeathGUI = new DeathGUI();
HUD = new HUD(); HUD = new HUD();
DebugHUD = new DebugHUD(); DebugHUD = new DebugHUD();
UIManager.resolution = resolution; UIManager.resolution = new Point(_graphics.PreferredBackBufferWidth, _graphics.PreferredBackBufferHeight);
UIManager.resolutionInGame = inGameResolution; UIManager.resolutionInGame = resolution;
} }
protected override void Initialize() protected override void Initialize()
@ -104,7 +104,7 @@ namespace DangerousD.GameCore
GameObject.debugTexture.SetData<Color>(new Color[] { new Color(1, 0,0,0.25f) }); GameObject.debugTexture.SetData<Color>(new Color[] { new Color(1, 0,0,0.25f) });
SoundManager.LoadSounds(); SoundManager.LoadSounds();
SoundManager.StartAmbientSound("DoomTestSong"); SoundManager.StartAmbientSound("DoomTestSong");
renderTarget = new RenderTarget2D(GraphicsDevice, inGameResolution.X, inGameResolution.Y); renderTarget = new RenderTarget2D(GraphicsDevice, resolution.X, resolution.Y);
} }
protected override void Update(GameTime gameTime) protected override void Update(GameTime gameTime)
@ -133,10 +133,8 @@ namespace DangerousD.GameCore
case GameState.Death: case GameState.Death:
DeathGUI.Update(gameTime); DeathGUI.Update(gameTime);
break; break;
case GameState.HUD:
HUD.Update(gameTime);
break;
case GameState.Game: case GameState.Game:
HUD.Update(gameTime);
GameManager.Update(gameTime); GameManager.Update(gameTime);
break; break;
default: default:
@ -169,13 +167,11 @@ namespace DangerousD.GameCore
case GameState.Death: case GameState.Death:
DeathGUI.Draw(_spriteBatch); DeathGUI.Draw(_spriteBatch);
break; break;
case GameState.HUD:
HUD.Draw(_spriteBatch);
break;
case GameState.Game: case GameState.Game:
_spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp); _spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp);
GameManager.Draw(_spriteBatch); GameManager.Draw(_spriteBatch);
_spriteBatch.End(); _spriteBatch.End();
HUD.Draw(_spriteBatch);
break; break;
default: default:
break; break;
@ -205,7 +201,7 @@ namespace DangerousD.GameCore
break; break;
case GameState.Game: case GameState.Game:
GameManager.mapManager.LoadLevel("map"); GameManager.mapManager.LoadLevel("lvl");
GameManager.FindBorders(); GameManager.FindBorders();
@ -246,11 +242,6 @@ namespace DangerousD.GameCore
case NetworkTaskOperationEnum.ChangeState: case NetworkTaskOperationEnum.ChangeState:
if (networkTask.objId != GameManager.GetPlayer1.id) if (networkTask.objId != GameManager.GetPlayer1.id)
{ {
List<GraphicsComponent> gcs = new List<GraphicsComponent>();
foreach (var player in GameManager.players)
{
gcs.Add(player.GetGraphicsComponent());
}
LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId); LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId);
if (entity != null) if (entity != null)
{ {
@ -294,5 +285,24 @@ namespace DangerousD.GameCore
{ {
this.multiPlayerStatus = multiPlayerStatus; this.multiPlayerStatus = multiPlayerStatus;
} }
public void SetIsFullScreen(bool fullscrin)
{
DebugHUD?.Set("resX:", SettingsManager.Resolution.X.ToString());
DebugHUD?.Set("resY:", SettingsManager.Resolution.Y.ToString());
DebugHUD?.Set("FullScreen:", _graphics.IsFullScreen.ToString());
if (fullscrin)
{
_graphics.PreferredBackBufferWidth = 1920;
_graphics.PreferredBackBufferHeight = 1080;
}
else
{
_graphics.PreferredBackBufferWidth = SettingsManager.Resolution.X;
_graphics.PreferredBackBufferHeight = SettingsManager.Resolution.Y;
}
UIManager.resolution = new Point(_graphics.PreferredBackBufferWidth, _graphics.PreferredBackBufferHeight);
_graphics.IsFullScreen = fullscrin;
_graphics.ApplyChanges();
}
} }
} }

View file

@ -149,7 +149,6 @@ namespace DangerousD.GameCore
} }
} }
else else
{ {
for (int i = 0; i < livingEntitiesWithoutPlayers.Count; i++) for (int i = 0; i < livingEntitiesWithoutPlayers.Count; i++)
{ {

View file

@ -27,22 +27,26 @@ namespace DangerousD.GameCore.Managers
public void SetMainVolume(float volume) public void SetMainVolume(float volume)
{ {
settingsContainer.MainVolume = MainVolume; settingsContainer.MainVolume = MainVolume;
///AppManager.Instance.SoundManager. //AppManager.Instance.SoundManager.
} }
public void SetMusicVolume(float volume) public void SetMusicVolume(float volume)
{ {
settingsContainer.MusicVolume = MainVolume; settingsContainer.MusicVolume = MainVolume;
SaveSettings();
} }
public void SetSoundEffectsVolume(float volume) public void SetSoundEffectsVolume(float volume)
{ {
settingsContainer.SoundEffectsVolume = MainVolume; settingsContainer.SoundEffectsVolume = MainVolume;
SaveSettings();
} }
public void SetIsFullScreen(bool isFullScreen) public void SetIsFullScreen(bool isFullScreen)
{ {
settingsContainer.IsFullScreen = isFullScreen; settingsContainer.IsFullScreen = isFullScreen;
AppManager.Instance.SetIsFullScreen(isFullScreen);
SaveSettings();
} }
public void LoadSettings() public void LoadSettings()
{ {

View file

@ -16,7 +16,7 @@ namespace MonogameLibrary.UI.Elements
public delegate void OnButtonPressed(); public delegate void OnButtonPressed();
public event OnButtonPressed? RightButtonPressed; public event OnButtonPressed? RightButtonPressed;
public event OnButtonPressed? LeftButtonPressed; public event OnButtonPressed? LeftButtonPressed;
protected HoverState hoverState = HoverState.None; public HoverState hoverState = HoverState.None;
public Button(UIManager manager, int layerIndex = 0) : base(manager, layerIndex) public Button(UIManager manager, int layerIndex = 0) : base(manager, layerIndex)
{ {
@ -40,7 +40,7 @@ namespace MonogameLibrary.UI.Elements
if (mouseState.LeftButton != prevmouseState.LeftButton) if (mouseState.LeftButton != prevmouseState.LeftButton)
{ {
hoverState = HoverState.Pressing; hoverState = HoverState.Pressing;
LeftButtonPressed?.Invoke(); CallLeftBtnEvent();
return true; return true;
} }
} }
@ -77,5 +77,9 @@ namespace MonogameLibrary.UI.Elements
DrawText(_spriteBatch); DrawText(_spriteBatch);
} }
public void CallLeftBtnEvent()
{
LeftButtonPressed?.Invoke();
}
} }
} }

View file

@ -26,9 +26,13 @@ namespace MonogameLibrary.UI.Elements
public event OnTextChange? StopChanging; public event OnTextChange? StopChanging;
public event OnTextChange? OnEnter; public event OnTextChange? OnEnter;
protected HoverState hoverState = HoverState.None; public HoverState hoverState = HoverState.None;
protected IsSelected isSelected = IsSelected.NotSelected; protected IsSelected isSelected = IsSelected.NotSelected;
public bool shouldEndOnEnter; public bool shouldEndOnEnter;
public void SelectIt()
{
isSelected = IsSelected.Selected;
}
public virtual bool InteractUpdate(MouseState mouseState, MouseState prevmouseState) public virtual bool InteractUpdate(MouseState mouseState, MouseState prevmouseState)
{ {