add CheckRectangle method and little changes in monsters

This commit is contained in:
N4K 2023-08-17 12:38:48 +03:00
parent 0ad20e3638
commit 55a585eeb0
7 changed files with 36 additions and 4 deletions

View file

@ -13,10 +13,15 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
internal class Frank : CoreEnemy internal class Frank : CoreEnemy
{ {
private bool isGoRight = false; private bool isGoRight = false;
private int leftBoarder;
private int rightBoarder;
public Frank(Vector2 position) : base(position) public Frank(Vector2 position) : base(position)
{ {
Width = 112; Width = 112;
Height = 160; Height = 160;
leftBoarder = 50;
rightBoarder = 500;
GraphicsComponent.StartAnimation("FrankMoveLeft"); GraphicsComponent.StartAnimation("FrankMoveLeft");
monster_speed = 1; monster_speed = 1;
name = "Frank"; name = "Frank";

View file

@ -23,6 +23,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "BallMoveRight" }, "BallMoveRight"); protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "BallMoveRight" }, "BallMoveRight");
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
}
public override void Attack() public override void Attack()
{ {

View file

@ -46,7 +46,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
webLength++; webLength++;
_pos.Y += 25; _pos.Y += 25;
web.Height = webLength * 25; web.Height = webLength * 25;
web.SetPosition(new Vector2(_pos.X + Width / 2 - web.Width / 2, Pos.Y - 25 * webLength)); web.SetPosition(new Vector2(_pos.X + Width / 2 - web.Width / 2 + 2, Pos.Y - 25 * webLength));
delay = 0; delay = 0;
if (webLength == 4) if (webLength == 4)
{ {
@ -59,7 +59,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
webLength--; webLength--;
_pos.Y -= 25; _pos.Y -= 25;
web.Height = webLength * 25; web.Height = webLength * 25;
web.SetPosition(new Vector2(_pos.X + Width / 2 - web.Width / 2, Pos.Y - 25 * webLength)); web.SetPosition(new Vector2(_pos.X + Width / 2 - web.Width / 2 + 2, Pos.Y - 25 * webLength));
delay = 0; delay = 0;
if (webLength == 0) if (webLength == 0)
{ {

View file

@ -16,6 +16,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
int leftBorder; int leftBorder;
int rightBorder; int rightBorder;
bool isAttaking = false; bool isAttaking = false;
public Zombie(Vector2 position) : base(position) public Zombie(Vector2 position) : base(position)
{ {
Width = 72; Width = 72;

View file

@ -11,8 +11,8 @@ namespace DangerousD.GameCore.Levels
public void InitLevel() public void InitLevel()
{ {
new Player(new Vector2(80,0)); new Player(new Vector2(80,0));
var Zombie = new Zombie(new Vector2(140, 128)); //var Zombie = new Zombie(new Vector2(140, 128));
var Frank = new Frank(new Vector2(384, 128)); var Frank = new Frank(new Vector2(384, 0));
var Spider = new Spider(new Vector2(112, 0)); var Spider = new Spider(new Vector2(112, 0));
var FlameSkull = new FlameSkull(new Vector2(512, 0)); var FlameSkull = new FlameSkull(new Vector2(512, 0));

View file

@ -20,9 +20,13 @@ namespace DangerousD.GameCore
public PhysicsManager physicsManager; public PhysicsManager physicsManager;
public List<Player> players; public List<Player> players;
public List<GameObject> otherObjects = new(); public List<GameObject> otherObjects = new();
public List<GameObject> GetAllGameObjects { get; private set; }
public Player GetPlayer1 { get; private set; } public Player GetPlayer1 { get; private set; }
public GameManager() public GameManager()
{ {
GetAllGameObjects = new List<GameObject>();
livingEntities = new List<LivingEntity>(); livingEntities = new List<LivingEntity>();
mapObjects = new List<MapObject>(); mapObjects = new List<MapObject>();
entities = new List<Entity>(); entities = new List<Entity>();
@ -34,6 +38,7 @@ namespace DangerousD.GameCore
internal void Register(GameObject gameObject) internal void Register(GameObject gameObject)
{ {
GetAllGameObjects.Add(gameObject);
if (gameObject is Player) if (gameObject is Player)
{ {
livingEntities.Add(gameObject as LivingEntity); livingEntities.Add(gameObject as LivingEntity);

View file

@ -206,5 +206,21 @@ namespace DangerousD.GameCore.Managers
} }
return null; return null;
} }
public List<GameObject> CheckRectangle(Rectangle rectangle, Type type)
{
var gameObjects = AppManager.Instance.GameManager.GetAllGameObjects;
List<GameObject> intersected = new List<GameObject>();
for (int i = 0; i < gameObjects.Count; i++)
{
if (gameObjects[i].GetType() == type)
{
if (gameObjects[i].Rectangle.Intersects(rectangle))
{
intersected.Add(gameObjects[i]);
}
}
}
return intersected;
}
} }
} }