Merge branch 'main' into particlesBranch
This commit is contained in:
commit
b30a8515d2
8 changed files with 120 additions and 33 deletions
|
@ -29,7 +29,8 @@ namespace DangerousD.GameCore.GameObjects.Entities
|
||||||
Player player = (Player)gameObject;
|
Player player = (Player)gameObject;
|
||||||
if (player.isUping)
|
if (player.isUping)
|
||||||
{
|
{
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
//тут спавн лута
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,13 @@ namespace DangerousD.GameCore
|
||||||
{
|
{
|
||||||
GraphicsComponent.DrawAnimation(Rectangle, spriteBatch);
|
GraphicsComponent.DrawAnimation(Rectangle, spriteBatch);
|
||||||
//debug
|
//debug
|
||||||
//wdaspriteBatch.Draw(debugTexture,new Rectangle(Rectangle.X-GraphicsComponent.CameraPosition.X,Rectangle.Y-GraphicsComponent.CameraPosition.Y,Rectangle.Width,Rectangle.Height), Color.White);
|
if (AppManager.Instance.InputManager.CollisionsCheat)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(debugTexture,
|
||||||
|
new Rectangle(Rectangle.X - GraphicsComponent.CameraPosition.X,
|
||||||
|
Rectangle.Y - GraphicsComponent.CameraPosition.Y, Rectangle.Width, Rectangle.Height),
|
||||||
|
Color.White);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
if (AppManager.Instance.GameManager.players[0].IsAlive)
|
if (AppManager.Instance.GameManager.players[0].IsAlive)
|
||||||
{
|
{
|
||||||
Attack();
|
Attack();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
base.OnCollision(gameObject);
|
base.OnCollision(gameObject);
|
||||||
|
|
|
@ -12,29 +12,58 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
public class Particle : LivingEntity
|
public class Particle : LivingEntity
|
||||||
{
|
{
|
||||||
int delay;
|
int delay;
|
||||||
|
bool isFall;
|
||||||
public Particle(Vector2 position) : base(position)
|
public Particle(Vector2 position) : base(position)
|
||||||
{
|
{
|
||||||
Width = 14;
|
Width = 14;
|
||||||
Height = 14;
|
Height = 14;
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
velocity = new Vector2(random.Next(3, 15), random.Next(3,30));
|
velocity = new Vector2(random.Next(-6, 6), random.Next(-8,4));
|
||||||
acceleration.Y = 10;
|
acceleration.Y = 10;
|
||||||
delay = 100;
|
delay = 100;
|
||||||
|
isFall = false;
|
||||||
|
isOnGround = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "GibsMoveLeftBottom", "GibsMoveLeftTop", "GibsMoveRightBottom", "GibsMoveRightTop" }, "GibsMoveRightTop");
|
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "GibsMoveLeftBottom", "GibsMoveLeftTop", "GibsMoveRightBottom", "GibsMoveRightTop", "GibsNotMove" }, "GibsMoveRightTop");
|
||||||
public override void Update(GameTime gameTime)
|
public override void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
|
|
||||||
delay--;
|
delay--;
|
||||||
if (velocity.X > 0)
|
if (delay<=80)
|
||||||
{
|
{
|
||||||
velocity.X--;
|
velocity.X=0;
|
||||||
}
|
}
|
||||||
if(velocity.Y<=0)
|
if(isOnGround)
|
||||||
{
|
{
|
||||||
GraphicsComponent.StartAnimation("GipsNoMove");
|
GraphicsComponent.StartAnimation("GibsNotMove");
|
||||||
|
Width = 16;
|
||||||
|
Height = 5;
|
||||||
|
isFall=true;
|
||||||
|
|
||||||
; }
|
; }
|
||||||
|
|
||||||
|
else if(!isFall)
|
||||||
|
{
|
||||||
|
Width = 14;
|
||||||
|
Height= 14;
|
||||||
|
if (velocity.Y<0 && velocity.X>0)
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("GibsMoveRightTop");
|
||||||
|
}
|
||||||
|
else if (velocity.Y < 0 && velocity.X < 0)
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("GibsMoveLeftTop");
|
||||||
|
}
|
||||||
|
else if (velocity.Y > 0 && velocity.X > 0)
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("GibsMoveRightBottom");
|
||||||
|
}
|
||||||
|
else if (velocity.Y > 0 && velocity.X < 0)
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("GibsMoveLeftBottom");
|
||||||
|
}
|
||||||
|
}
|
||||||
if(delay<=0)
|
if(delay<=0)
|
||||||
{
|
{
|
||||||
AppManager.Instance.GameManager.Remove(this);
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
|
|
@ -27,7 +27,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
private bool isAttacked = false;
|
private bool isAttacked = false;
|
||||||
private bool isShooting = false;
|
private bool isShooting = false;
|
||||||
public GameObject objectAttack;
|
public GameObject objectAttack;
|
||||||
public bool isInvincible;
|
|
||||||
private int bullets;
|
private int bullets;
|
||||||
public bool FallingThroughPlatform = false;
|
public bool FallingThroughPlatform = false;
|
||||||
public bool isUping = false;
|
public bool isUping = false;
|
||||||
|
@ -94,6 +93,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
}
|
}
|
||||||
public void Death(string monsterName)
|
public void Death(string monsterName)
|
||||||
{
|
{
|
||||||
|
if (AppManager.Instance.InputManager.InvincibilityCheat)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
isAttacked = true;
|
isAttacked = true;
|
||||||
if(monsterName == "Zombie")
|
if(monsterName == "Zombie")
|
||||||
{
|
{
|
||||||
|
@ -185,10 +188,9 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
if (isOnGround && FallingThroughPlatform)
|
if (isOnGround && FallingThroughPlatform)
|
||||||
{
|
{
|
||||||
FallingThroughPlatform = false;
|
FallingThroughPlatform = false;
|
||||||
AppManager.Instance.DebugHUD.Log("not falling");
|
|
||||||
}
|
}
|
||||||
GraphicsComponent.SetCameraPosition(Pos);
|
GraphicsComponent.SetCameraPosition(Pos);
|
||||||
if (!isAttacked || isInvincible)
|
if (!isAttacked || AppManager.Instance.InputManager.InvincibilityCheat)
|
||||||
{
|
{
|
||||||
if (!isShooting)
|
if (!isShooting)
|
||||||
{
|
{
|
||||||
|
@ -254,7 +256,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
{
|
{
|
||||||
FallingThroughPlatform = true;
|
FallingThroughPlatform = true;
|
||||||
isOnGround = false;
|
isOnGround = false;
|
||||||
AppManager.Instance.DebugHUD.Log("FallingThroughPlatform");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -237,23 +237,25 @@ namespace DangerousD.GameCore.Graphics
|
||||||
public static void SetCameraPosition(Vector2 playerPosition)
|
public static void SetCameraPosition(Vector2 playerPosition)
|
||||||
{
|
{
|
||||||
CameraPosition = (playerPosition).ToPoint();
|
CameraPosition = (playerPosition).ToPoint();
|
||||||
CameraPosition.X -= 300;
|
CameraPosition.X -= 200;
|
||||||
CameraPosition.Y -= 200;
|
CameraPosition.Y -= 120;
|
||||||
if (CameraPosition.X < AppManager.Instance.GameManager.CameraBorder.X)
|
|
||||||
{
|
|
||||||
CameraPosition.X = (int)AppManager.Instance.GameManager.CameraBorder.X;
|
|
||||||
}
|
|
||||||
if (CameraPosition.X > AppManager.Instance.GameManager.CameraBorder.Y - 460)
|
if (CameraPosition.X > AppManager.Instance.GameManager.CameraBorder.Y - 460)
|
||||||
{
|
{
|
||||||
CameraPosition.X = (int)AppManager.Instance.GameManager.CameraBorder.Y - 460;
|
CameraPosition.X = (int)AppManager.Instance.GameManager.CameraBorder.Y - 460;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CameraPosition.Y < AppManager.Instance.GameManager.CameraBorder.Z)
|
if (CameraPosition.Y < AppManager.Instance.GameManager.CameraBorder.Z)
|
||||||
{
|
{
|
||||||
CameraPosition.Y = (int)AppManager.Instance.GameManager.CameraBorder.Z;
|
CameraPosition.Y = (int)AppManager.Instance.GameManager.CameraBorder.Z;
|
||||||
}
|
}
|
||||||
if (CameraPosition.Y > AppManager.Instance.GameManager.CameraBorder.W - 470)
|
if (CameraPosition.X < AppManager.Instance.GameManager.CameraBorder.X)
|
||||||
{
|
{
|
||||||
CameraPosition.Y = (int)AppManager.Instance.GameManager.CameraBorder.W - 470;
|
CameraPosition.X = (int)AppManager.Instance.GameManager.CameraBorder.X;
|
||||||
|
}
|
||||||
|
if (CameraPosition.Y > AppManager.Instance.GameManager.CameraBorder.W - 240)
|
||||||
|
{
|
||||||
|
CameraPosition.Y = (int)AppManager.Instance.GameManager.CameraBorder.W - 240;
|
||||||
}
|
}
|
||||||
AppManager.Instance.DebugHUD.Set("CameraPosition", $"{CameraPosition.X}, {CameraPosition.Y}");
|
AppManager.Instance.DebugHUD.Set("CameraPosition", $"{CameraPosition.X}, {CameraPosition.Y}");
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,12 @@ using System.Diagnostics;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace DangerousD.GameCore
|
namespace DangerousD.GameCore
|
||||||
{
|
{
|
||||||
public enum ScopeState { Up, Middle, Down }
|
public enum ScopeState { Up, Middle, Down }
|
||||||
public enum ControlsState { Gamepad, Keyboard, Mouse }
|
public enum ControlsState { Gamepad, Keyboard }
|
||||||
public class InputManager
|
public class InputManager
|
||||||
{
|
{
|
||||||
public delegate void Delegat();
|
public delegate void Delegat();
|
||||||
|
@ -21,31 +22,77 @@ namespace DangerousD.GameCore
|
||||||
Vector2 vectorMovementDirection;
|
Vector2 vectorMovementDirection;
|
||||||
ScopeState scopeState; // Положение оружия. Up, Middle, Down.
|
ScopeState scopeState; // Положение оружия. Up, Middle, Down.
|
||||||
ControlsState controlsState;
|
ControlsState controlsState;
|
||||||
|
private bool _overrideControls = false;
|
||||||
|
private bool _cheatsEnabled = false;
|
||||||
|
public bool InvincibilityCheat { get; private set; } = false;
|
||||||
|
public bool CollisionsCheat { get; private set; } = false;
|
||||||
|
|
||||||
private bool isJumpDown; // Блокирует физическое нажатие прыжка и спуска
|
private bool isJumpDown; // Блокирует физическое нажатие прыжка и спуска
|
||||||
private bool isShoot;
|
private bool isShoot;
|
||||||
|
|
||||||
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()
|
||||||
{
|
{
|
||||||
this.isJumpDown = false;
|
this.isJumpDown = false;
|
||||||
this.isShoot = false;
|
this.isShoot = false;
|
||||||
scopeState = ScopeState.Middle;
|
scopeState = ScopeState.Middle;
|
||||||
controlsState= ControlsState.Mouse;
|
controlsState= ControlsState.Keyboard;
|
||||||
vectorMovementDirection = new Vector2(0, 0);
|
vectorMovementDirection = new Vector2(0, 0);
|
||||||
}
|
}
|
||||||
public void SetState(ControlsState controlsStates)
|
|
||||||
{
|
|
||||||
currentControlsState = controlsStates.ToString();
|
|
||||||
}
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
// Работа с GamePad
|
|
||||||
if (GamePad.GetState(0).IsConnected)
|
if (GamePad.GetState(0).IsConnected)
|
||||||
{
|
{
|
||||||
|
GamePadState gamepadState = GamePad.GetState(0);
|
||||||
|
if (gamepadState.Triggers.Left >= 0.9 && gamepadState.Triggers.Right >= 0.9)
|
||||||
|
{
|
||||||
|
_cheatsEnabled = true;
|
||||||
|
}
|
||||||
|
if (_cheatsEnabled)
|
||||||
|
{
|
||||||
|
if (gamepadState.Buttons.Y == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
InvincibilityCheat = true;
|
||||||
|
}
|
||||||
|
if (gamepadState.Buttons.B == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CollisionsCheat = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var keyboardState = Keyboard.GetState();
|
||||||
|
if (keyboardState.IsKeyDown(Keys.LeftShift) && keyboardState.IsKeyDown(Keys.RightShift))
|
||||||
|
{
|
||||||
|
_cheatsEnabled = true;
|
||||||
|
}
|
||||||
|
if (_cheatsEnabled)
|
||||||
|
{
|
||||||
|
if (keyboardState.IsKeyDown(Keys.I))
|
||||||
|
{
|
||||||
|
InvincibilityCheat = true;
|
||||||
|
}
|
||||||
|
if (keyboardState.IsKeyDown(Keys.C))
|
||||||
|
{
|
||||||
|
CollisionsCheat = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_cheatsEnabled)
|
||||||
|
{
|
||||||
|
AppManager.Instance.DebugHUD.Set("cheats", _cheatsEnabled.ToString());
|
||||||
|
AppManager.Instance.DebugHUD.Set("invincible", InvincibilityCheat.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Работа с GamePad
|
||||||
|
if (_overrideControls ? controlsState == ControlsState.Gamepad : GamePad.GetState(0).IsConnected)
|
||||||
|
{
|
||||||
|
controlsState = ControlsState.Gamepad;
|
||||||
|
|
||||||
// Обработка гейм-пада. Задает Vector2 vectorMovementDirection являющийся вектором отклонения левого стика.
|
// Обработка гейм-пада. Задает Vector2 vectorMovementDirection являющийся вектором отклонения левого стика.
|
||||||
GamePadState gamePadState = GamePad.GetState(0);
|
GamePadState gamePadState = GamePad.GetState(0);
|
||||||
vectorMovementDirection = gamePadState.ThumbSticks.Left;
|
vectorMovementDirection = gamePadState.ThumbSticks.Left;
|
||||||
|
@ -93,12 +140,12 @@ namespace DangerousD.GameCore
|
||||||
{
|
{
|
||||||
isShoot = false;
|
isShoot = false;
|
||||||
}
|
}
|
||||||
SetState(ControlsState.Gamepad);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Работа с KeyBoard
|
// Работа с KeyBoard
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
controlsState = ControlsState.Keyboard;
|
||||||
KeyboardState keyBoardState = Keyboard.GetState(); // Состояние клавиатуры
|
KeyboardState keyBoardState = Keyboard.GetState(); // Состояние клавиатуры
|
||||||
|
|
||||||
// Обработка движения вправо-влево. Меняет у вектора vectorMovementDirection значение X на -1/0/1.
|
// Обработка движения вправо-влево. Меняет у вектора vectorMovementDirection значение X на -1/0/1.
|
||||||
|
|
|
@ -179,11 +179,11 @@ namespace DangerousD.GameCore
|
||||||
}
|
}
|
||||||
if (item.Pos.Y < CameraBorder.Z)
|
if (item.Pos.Y < CameraBorder.Z)
|
||||||
{
|
{
|
||||||
CameraBorder.Z = item.Pos.X;
|
CameraBorder.Z = item.Pos.Y;
|
||||||
}
|
}
|
||||||
if (item.Pos.Y > CameraBorder.W)
|
if (item.Pos.Y > CameraBorder.W)
|
||||||
{
|
{
|
||||||
CameraBorder.W = item.Pos.X;
|
CameraBorder.W = item.Pos.Y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue