DangerousD/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Hunchman.cs
2023-08-17 19:21:51 +03:00

137 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DangerousD.GameCore.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Security.Authentication.ExtendedProtection;
using System.Text;
using System.Threading.Tasks;
namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
{
public class Hunchman : CoreEnemy
{
GameManager gameManager;
bool isAttacking;
public Hunchman(Vector2 position) : base(position)
{
Width = 48;
Height = 48;
monster_speed = -2;
monster_health = 1;
name = "HunchMan";
velocity = new Vector2(monster_speed, 0);
gameManager = AppManager.Instance.GameManager;
isAttacking = false;
isAlive = true;
}
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string>
{ "HunchmanMoveLeft", "HunchmanMoveRight", "HunchmanAttackLeft", "HunchmanAttackRight" }, "HunchmanMoveLeft");
public override void Update(GameTime gameTime)
{
// P.S. Всё в классе можешь смело удалять и переписывать с нуля.
gameManager = AppManager.Instance.GameManager;
if (!isAttacking)
{
Attack();
Move(gameTime);
}
else
{
velocity.X = 0;
}
Death();
}
public override void Attack()
{
GameObject gameObject;
foreach (var player in gameManager.players)
{
if (player.Pos.Y + player.Height >= Pos.Y && player.Pos.Y <= Pos.Y + Height)
{
gameObject = gameManager.physicsManager.RayCast(this, player);
if (gameObject is null)
{
isAttacking = true;
GraphicsComponent.StopAnimation();
if (velocity.X > 0)
{
if (GraphicsComponent.GetCurrentAnimation != "HunchmanAttackRight")
{
GraphicsComponent.StartAnimation("HunchmanAttackRight");
}
}
else if (velocity.X < 0)
{
if (GraphicsComponent.GetCurrentAnimation != "HunchmanAttackLeft")
{
GraphicsComponent.StartAnimation("HunchmanAttackLeft");
}
}
}
}
}
}
public override void Attack(GameTime gameTime)
{
}
public override void Death()
{
if (monster_health <= 0)
{
}
}
public override void Move(GameTime gameTime)
{
if (gameManager.physicsManager.RayCast(this, new Vector2(Pos.X + Width + 10, Pos.Y + Height)) is not null)
{
monster_speed *= -1;
}
velocity.X = monster_speed;
if (velocity.X > 0)
{
if (GraphicsComponent.GetCurrentAnimation != "HunchmanMoveRight")
{
GraphicsComponent.StartAnimation("HunchmanMoveRight");
}
}
else if (velocity.X < 0)
{
if (GraphicsComponent.GetCurrentAnimation != "HunchmanMoveLeft")
{
GraphicsComponent.StartAnimation("HunchmanMoveLeft");
}
}
}
public override void OnCollision(GameObject gameObject)
{
monster_speed *= -1;
_pos.X += 5 * monster_speed;
Debug.WriteLine("Collision");
}
public override void Target()
{
throw new NotImplementedException();
}
}
}