diff --git a/DangerousD/Content/animations/WolfMoveLeft b/DangerousD/Content/animations/WolfMoveLeft index 924a49c..74a3dd0 100644 --- a/DangerousD/Content/animations/WolfMoveLeft +++ b/DangerousD/Content/animations/WolfMoveLeft @@ -1 +1 @@ -{"id":"WolfMoveLeft","textureName":"MonstersAnimations","startSpriteRectangle":{"X":1,"Y":292,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":4,"isCycle":true,"offset":"0, 0"} +{"id":"WolfMoveLeft","textureName":"MonstersAnimations","startSpriteRectangle":{"X":1,"Y":291,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":4,"isCycle":true,"offset":"0, 0"} diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/CoreEnemy.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/CoreEnemy.cs index 8950202..22ea566 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/CoreEnemy.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/CoreEnemy.cs @@ -13,12 +13,13 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities public abstract class CoreEnemy : LivingEntity { protected int monster_health; - protected int monster_speed; + protected float monster_speed = 2; protected string name; protected bool isAlive = true; - protected bool isAttack; - protected int leftBoarder; - protected int rightBoarder; + protected bool isAttack = false; + protected bool isGoRight; + protected int leftBoarder = 0; + protected int rightBoarder = 700; public CoreEnemy(Vector2 position) : base(position) { @@ -32,6 +33,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities public abstract void Death(); public abstract void Attack(); + public abstract void Attack(GameTime gameTime); public abstract void Move(GameTime gameTime); @@ -44,5 +46,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities isAlive = false; } } + + public abstract void Target(); } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FlameSkull.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FlameSkull.cs index cd00606..37d5dde 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FlameSkull.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FlameSkull.cs @@ -18,10 +18,21 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters Height = 40; monster_speed = 3; name = "Skull"; + acceleration = Vector2.Zero; } protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "FlameSkullMoveRight" , "FlameSkullMoveLeft"}, "FlameSkullMoveRight"); + public override void Update(GameTime gameTime) + { + if (!isAttack) + { + Move(gameTime); + } + + base.Update(gameTime); + } + public override void Attack() { @@ -33,6 +44,34 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } public override void Move(GameTime gameTime) + { + if (isGoRight) + { + if (GraphicsComponent.GetCurrentAnimation != "FlameSkullMoveRight") + { + GraphicsComponent.StartAnimation("FlameSkullMoveRight"); + } + velocity.X = monster_speed; + } + else + { + if (GraphicsComponent.GetCurrentAnimation != "FlameSkullMoveLeft") + { + GraphicsComponent.StartAnimation("FlameSkullMoveLeft"); + } + velocity.X = -monster_speed; + } + if (Pos.X >= rightBoarder) + { + isGoRight = false; + } + else if (Pos.X <= leftBoarder) + { + isGoRight = true; + } + } + + public override void Attack(GameTime gameTime) { } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Frank.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Frank.cs index 48e1dcf..a89db93 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Frank.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Frank.cs @@ -12,21 +12,24 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters { internal class Frank : CoreEnemy { - private bool isGoRight = false; - private int leftBoarder; - private int rightBoarder; - public Frank(Vector2 position) : base(position) { + isGoRight = false; Width = 112; Height = 160; leftBoarder = 50; - rightBoarder = 500; + rightBoarder = 300; GraphicsComponent.StartAnimation("FrankMoveLeft"); - monster_speed = 1; + monster_speed = 2; name = "Frank"; } - protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "FrankMoveRight", "FrankMoveLeft" }, "FrankMoveRight"); + protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "FrankMoveRight", "FrankMoveLeft" }, "FrankMoveLeft"); + + public override void Update(GameTime gameTime) + { + Move(gameTime); + base.Update(gameTime); + } public override void Attack() { @@ -40,14 +43,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Move(GameTime gameTime) { - var player = AppManager.Instance.GameManager.players[0]; - if (player.Pos.X - _pos.X <= 20 || player.Pos.X - _pos.X <= -20) - { - player.Death(name); - } - if (isGoRight) - { + { if (GraphicsComponent.GetCurrentAnimation != "FrankMoveRight") { GraphicsComponent.StartAnimation("FrankMoveRight"); @@ -62,6 +59,19 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } velocity.X = -monster_speed; } + if (Pos.X >= rightBoarder) + { + isGoRight = false; + } + else if (Pos.X <= leftBoarder) + { + isGoRight = true; + } + } + + public override void Attack(GameTime gameTime) + { + } } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FrankBalls.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FrankBalls.cs index 81a0907..f483bd8 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FrankBalls.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/FrankBalls.cs @@ -42,5 +42,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters { } + + public override void Attack(GameTime gameTime) + { + + } } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Ghost.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Ghost.cs index 1e47e99..55227cc 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Ghost.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Ghost.cs @@ -12,16 +12,28 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters { public Ghost(Vector2 position) : base(position) { - monster_speed = 1; + isGoRight = true; + monster_speed = 3; name = "Ghost"; Width = 48; Height = 62; GraphicsComponent.StartAnimation("GhostSpawn"); + acceleration = Vector2.Zero; } protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "GhostMoveRight", "GhostMoveLeft", "GhostSpawn", "GhostAttack" }, "GhostMoveRight"); + public override void Update(GameTime gameTime) + { + if (!isAttack) + { + Move(gameTime); + } + + base.Update(gameTime); + } + public override void Attack() { @@ -33,6 +45,38 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } public override void Move(GameTime gameTime) + { + if (isGoRight) + { + if (GraphicsComponent.GetCurrentAnimation != "GhostMoveRight") + { + GraphicsComponent.StartAnimation("GhostMoveRight"); + } + velocity.X = monster_speed; + } + else + { + if (GraphicsComponent.GetCurrentAnimation != "GhostMoveLeft") + { + GraphicsComponent.StartAnimation("GhostMoveLeft"); + } + velocity.X = -monster_speed; + } + if (Pos.X >= rightBoarder) + { + isGoRight = false; + } + else if (Pos.X <= leftBoarder) + { + isGoRight = true; + } + if (true) + { + + } + } + + public override void Attack(GameTime gameTime) { } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Hunchman.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Hunchman.cs index cc6ecd5..9fd28e1 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Hunchman.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Hunchman.cs @@ -23,6 +23,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } + public override void Attack(GameTime gameTime) + { + + } + public override void Death() { diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/HunchmanDagger.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/HunchmanDagger.cs index 9e616ed..3adaf50 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/HunchmanDagger.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/HunchmanDagger.cs @@ -27,6 +27,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } + public override void Attack(GameTime gameTime) + { + + } + public override void Death() { diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs index cf33f30..ff5a2d5 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs @@ -27,7 +27,12 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Attack() { - throw new NotImplementedException(); + + } + + public override void Attack(GameTime gameTime) + { + } public override void Death() diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs index 09a3928..ebcc548 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs @@ -39,9 +39,14 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters currentTime++; } + public override void Attack(GameTime gameTime) + { + + } + public override void Death() { - throw new NotImplementedException(); + } public override void Move(GameTime gameTime) diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Slime.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Slime.cs index 9f3f936..68ae286 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Slime.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Slime.cs @@ -25,6 +25,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } + public override void Attack(GameTime gameTime) + { + + } + public override void Death() { diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Spider.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Spider.cs index 91c2aa7..4920189 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Spider.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Spider.cs @@ -28,7 +28,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters Height = 24; delay = 0; webLength = 0; - monster_speed = 1; + monster_speed = 2; acceleration = Vector2.Zero; } @@ -36,6 +36,29 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Update(GameTime gameTime) { + if (!isAttack) + { + Move(gameTime); + } + else + { + Attack(gameTime); + } + + base.Update(gameTime); + } + /// + /// НИЧЕГО НЕ ДЕЛАЕТ! НУЖЕН ДЛЯ ПЕРЕОПРЕДЕЛЕНИЯ + /// + public override void Attack() + { + } + /// + /// Атака паука РАБОЧАЯ + /// + /// + public override void Attack(GameTime gameTime) + { //48 72 if (isDownUp) { Width = 48; @@ -73,12 +96,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters Height = 24; } } - - base.Update(gameTime); - } - public override void Attack() - { //48 72 - } public override void Draw(SpriteBatch spriteBatch) @@ -101,7 +118,32 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Move(GameTime gameTime) { - + if (isGoRight) + { + if (GraphicsComponent.GetCurrentAnimation != "SpiderMoveRight") + { + GraphicsComponent.StartAnimation("SpiderMoveRight"); + } + velocity.X = monster_speed; + } + else + { + if (GraphicsComponent.GetCurrentAnimation != "SpiderMoveLeft") + { + GraphicsComponent.StartAnimation("SpiderMoveLeft"); + } + velocity.X = -monster_speed; + } + if (Pos.X >= rightBoarder) + { + isGoRight = false; + } + else if (Pos.X <= leftBoarder) + { + isGoRight = true; + } } + + } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SpiderWeb.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SpiderWeb.cs index d91ccaf..766c30d 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SpiderWeb.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SpiderWeb.cs @@ -28,6 +28,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } + public override void Attack(GameTime gameTime) + { + + } + public override void Death() { diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Werewolf.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Werewolf.cs index 9d5acb8..88d904e 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Werewolf.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Werewolf.cs @@ -15,13 +15,23 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public Werewolf(Vector2 position) : base(position) { name = "Wolf"; - monster_speed = 1; + monster_speed = 4; Width = 78; Height = 96; } protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "WolfMoveRight", "WolfMoveLeft", "WolfJumpRight", "WolfJumpLeft" }, "WolfMoveRight"); + public override void Update(GameTime gameTime) + { + if (!isAttack) + { + Move(gameTime); + } + + base.Update(gameTime); + } + public override void Attack() { @@ -34,7 +44,34 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Move(GameTime gameTime) { + if (isGoRight) + { + if (GraphicsComponent.GetCurrentAnimation != "WolfMoveRight") + { + GraphicsComponent.StartAnimation("WolfMoveRight"); + } + velocity.X = monster_speed; + } + else + { + if (GraphicsComponent.GetCurrentAnimation != "WolfMoveLeft") + { + GraphicsComponent.StartAnimation("WolfMoveLeft"); + } + velocity.X = -monster_speed; + } + if (Pos.X >= rightBoarder) + { + isGoRight = false; + } + else if (Pos.X <= leftBoarder) + { + isGoRight = true; + } + } + public override void Attack(GameTime gameTime) + { } } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs index a0d80a6..305a3fe 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs @@ -107,5 +107,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } base.OnCollision(gameObject); } + + public override void Attack(GameTime gameTime) + { + throw new NotImplementedException(); + } } } diff --git a/DangerousD/GameCore/Levels/Level1.cs b/DangerousD/GameCore/Levels/Level1.cs index b60565b..29f1a6e 100644 --- a/DangerousD/GameCore/Levels/Level1.cs +++ b/DangerousD/GameCore/Levels/Level1.cs @@ -12,15 +12,13 @@ namespace DangerousD.GameCore.Levels { new Player(new Vector2(80,0)); var Zombie = new Zombie(new Vector2(140, 128)); - var Frank = new Frank(new Vector2(384, 128)); + var Frank = new Frank(new Vector2(300, 0)); var Spider = new Spider(new Vector2(112, 0)); var FlameSkull = new FlameSkull(new Vector2(512, 0)); var Werewolf = new Werewolf(new Vector2(640, 0)); - var Ghost = new Ghost(new Vector2(730, 0)); - var Frank = new Frank(new Vector2(100, 64)); + var Ghost = new Ghost(new Vector2(300, 0)); var FrankBalls = new FrankBalls(new Vector2(Frank.Pos.X, Frank.Pos.Y)); - var Zombie = new Zombie(new Vector2(300, 64)); var SilasHand = new SilasHands(new Vector2(200,64)); var SilasMaster = new SilasMaster(new Vector2(400, 64)); diff --git a/DangerousD/GameCore/Managers/GameManager.cs b/DangerousD/GameCore/Managers/GameManager.cs index 2784a84..ca74fed 100644 --- a/DangerousD/GameCore/Managers/GameManager.cs +++ b/DangerousD/GameCore/Managers/GameManager.cs @@ -21,7 +21,6 @@ namespace DangerousD.GameCore public List players; public List otherObjects = new(); - public List GetAllGameObjects { get; private set; } public Player GetPlayer1 { get; private set; } public GameManager() { diff --git a/DangerousD/GameCore/Managers/PhysicsManager.cs b/DangerousD/GameCore/Managers/PhysicsManager.cs index a4598de..f068e48 100644 --- a/DangerousD/GameCore/Managers/PhysicsManager.cs +++ b/DangerousD/GameCore/Managers/PhysicsManager.cs @@ -170,6 +170,7 @@ namespace DangerousD.GameCore.Managers return null; } + public GameObject RayCast(LivingEntity entity1, Vector2 targetCast) { Rectangle rectangle;