From ff46f3694abf5f7d0d3e0156410fc298483d3e43 Mon Sep 17 00:00:00 2001 From: bmvolf Date: Wed, 16 Aug 2023 17:21:45 +0300 Subject: [PATCH] added death animation from zombie. zombie can walk between 2 points --- AnimationsFileCreator/Program.cs | 2 +- DangerousD/Content/Content.mgcb | 36 ++++++---- DangerousD/Content/animations/DeathFromZombie | 1 + .../Content/animations/ZombieLeftAttack | 2 +- .../Content/animations/ZombieRightAttack | 2 +- DangerousD/Content/deathAnimation.png | Bin 0 -> 23391 bytes DangerousD/GameCore/GameObjects/GameObject.cs | 2 +- .../LivingEntities/Monsters/Zombie.cs | 66 ++++++++++++------ .../GameObjects/LivingEntities/Player.cs | 11 ++- .../GameObjects/PlayerDeath/DeathRectangle.cs | 32 +++++++++ DangerousD/GameCore/Levels/Level1.cs | 4 +- DangerousD/GameCore/Managers/GameManager.cs | 30 ++++++-- .../GameCore/Managers/PhysicsManager.cs | 8 +-- 13 files changed, 144 insertions(+), 52 deletions(-) create mode 100644 DangerousD/Content/animations/DeathFromZombie create mode 100644 DangerousD/Content/deathAnimation.png create mode 100644 DangerousD/GameCore/GameObjects/PlayerDeath/DeathRectangle.cs diff --git a/AnimationsFileCreator/Program.cs b/AnimationsFileCreator/Program.cs index dc2bf5b..bda2baf 100644 --- a/AnimationsFileCreator/Program.cs +++ b/AnimationsFileCreator/Program.cs @@ -62,7 +62,7 @@ namespace AnimationsFileCreator container.TextureFrameInterval = 1; container.Id = id; string json = JsonConvert.SerializeObject(container); - StreamWriter writer = new StreamWriter(id); + StreamWriter writer = new StreamWriter("../../../../DangerousD/Content/animations/" + id); writer.WriteLine(json); writer.Close(); } diff --git a/DangerousD/Content/Content.mgcb b/DangerousD/Content/Content.mgcb index b5e65dd..ed4246e 100644 --- a/DangerousD/Content/Content.mgcb +++ b/DangerousD/Content/Content.mgcb @@ -13,6 +13,30 @@ #---------------------------------- Content ---------------------------------# +#begin ../../../animation1.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:../../../animation1.png;MonstersAnimations.png + +#begin deathAnimation.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:deathAnimation.png + #begin File.spritefont /importer:FontDescriptionImporter /processor:FontDescriptionProcessor @@ -34,18 +58,6 @@ /processorParam:TextureFormat=Compressed /build:Font2.spritefont -#begin MonstersAnimations.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:MonstersAnimations.png - #begin PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png /importer:TextureImporter /processor:TextureProcessor diff --git a/DangerousD/Content/animations/DeathFromZombie b/DangerousD/Content/animations/DeathFromZombie new file mode 100644 index 0000000..e6174de --- /dev/null +++ b/DangerousD/Content/animations/DeathFromZombie @@ -0,0 +1 @@ +{"id":"DeathFromZombie","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":99,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"} diff --git a/DangerousD/Content/animations/ZombieLeftAttack b/DangerousD/Content/animations/ZombieLeftAttack index 63d7675..cb1466b 100644 --- a/DangerousD/Content/animations/ZombieLeftAttack +++ b/DangerousD/Content/animations/ZombieLeftAttack @@ -1 +1 @@ -{"id":"ZombieLeftAttack","textureName":"MonstersAnimations","startSpriteRectangle":{"X":126,"Y":50,"Width":50,"Height":40},"frameSecond":[{"Item1":0,"Item2":25}],"textureFrameInterval":1,"framesCount":3,"isCycle":false,"offset":"16, 0"} +{"id":"ZombieLeftAttack","textureName":"MonstersAnimations","startSpriteRectangle":{"X":126,"Y":50,"Width":50,"Height":40},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":3,"isCycle":false,"offset":"16, 0"} diff --git a/DangerousD/Content/animations/ZombieRightAttack b/DangerousD/Content/animations/ZombieRightAttack index 2a48da2..7da67ee 100644 --- a/DangerousD/Content/animations/ZombieRightAttack +++ b/DangerousD/Content/animations/ZombieRightAttack @@ -1 +1 @@ -{"id":"ZombieRightAttack","textureName":"MonstersAnimations","startSpriteRectangle":{"X":126,"Y":9,"Width":50,"Height":40},"frameSecond":[{"Item1":0,"Item2":25}],"textureFrameInterval":1,"framesCount":3,"isCycle":false,"offset":"16, 0"} +{"id":"ZombieRightAttack","textureName":"MonstersAnimations","startSpriteRectangle":{"X":126,"Y":9,"Width":50,"Height":40},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":3,"isCycle":false,"offset":"16, 0"} diff --git a/DangerousD/Content/deathAnimation.png b/DangerousD/Content/deathAnimation.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb4a52db46469a9dd62b44221a64897aa802204 GIT binary patch literal 23391 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 q+D&sf6)cz { "ZombieMoveRight", "ZombieMoveLeft", "ZombieRightAttack", "ZombieLeftAttack" }, "ZombieMoveLeft"); public override void Update(GameTime gameTime) { - if (AppManager.Instance.GameManager.GetPlayer1.Pos.X>Pos.X) - isGoRight = true; - else - isGoRight = false; - Move(gameTime); - - if(Pos.X + 20 <= AppManager.Instance.GameManager.GetPlayer1.Pos.X || Pos.X - 20 >= AppManager.Instance.GameManager.GetPlayer1.Pos.X) + if (!isAttaking) { - Attack(); - AppManager.Instance.GameManager.GetPlayer1.Death(name); + Move(gameTime); } base.Update(gameTime); @@ -46,16 +39,22 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Attack() { + velocity.X = 0; + isAttaking = true; if (isGoRight) { - GraphicsComponent.StopAnimation(); - GraphicsComponent.StartAnimation("ZombieRightAttack"); + if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveRight") + { + GraphicsComponent.StartAnimation("ZombieAttackRight"); + } AppManager.Instance.GameManager.players[0].Death(name); } else if (!isGoRight) { - GraphicsComponent.StopAnimation(); - GraphicsComponent.StartAnimation("ZombieLeftAttack"); + if (GraphicsComponent.GetCurrentAnimation != "ZombieLeftAttack") + { + GraphicsComponent.StartAnimation("ZombieLeftAttack"); + } AppManager.Instance.GameManager.players[0].Death(name); } } @@ -67,20 +66,45 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Move(GameTime gameTime) { - double delta = gameTime.ElapsedGameTime.TotalSeconds; + float delta = (float)gameTime.ElapsedGameTime.TotalSeconds; if (isGoRight) { if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveRight") + { GraphicsComponent.StartAnimation("ZombieMoveRight"); - velocity = new Vector2(monster_speed, 0); + } + velocity.X = monster_speed; } else if (!isGoRight) { - if(GraphicsComponent.GetCurrentAnimation != "ZombieMoveLeft") + if (GraphicsComponent.GetCurrentAnimation != "ZombieMoveLeft") + { GraphicsComponent.StartAnimation("ZombieMoveLeft"); - velocity = new Vector2(-monster_speed, 0); + } + velocity.X = -monster_speed; } + + if(Pos.X >= rightBorder) + { + isGoRight = false; + } + + else if(Pos.X <= leftBorder) + { + isGoRight = true; + } + } + public override void OnCollision(GameObject gameObject) + { + if(gameObject is Player) + { + if (AppManager.Instance.GameManager.players[0].IsAlive) + { + Attack(); + } + } + base.OnCollision(gameObject); } public void TakeDamage(int damage) diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Player.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Player.cs index 90266bf..3c8e320 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Player.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Player.cs @@ -5,18 +5,21 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using DangerousD.GameCore.GameObjects.PlayerDeath; namespace DangerousD.GameCore.GameObjects.LivingEntities { public class Player : LivingEntity { + bool isAlive = true; public Player(Vector2 position) : base(position) { Width = 32; Height = 64; } + public bool IsAlive { get { return isAlive; } } - protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "ZombieMoveRight", "ZombieMoveLeft", "ZombieRightAttack", "ZombieLeftAttack" }, "ZombieMoveLeft");//TODO: Change to player + protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "ZombieMoveRight", "ZombieMoveLeft", "ZombieRightAttack", "ZombieLeftAttack", "DeathFromZombie" }, "ZombieMoveLeft");//TODO: Change to player public void Kill() { @@ -25,7 +28,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities public void Death(string monsterName) { - //анимация по имени монстра + if(monsterName == "Zombie") + { + DeathRectangle deathRectangle = new DeathRectangle(Pos, "DeathFrom" + monsterName); + } + isAlive = false; } } } diff --git a/DangerousD/GameCore/GameObjects/PlayerDeath/DeathRectangle.cs b/DangerousD/GameCore/GameObjects/PlayerDeath/DeathRectangle.cs new file mode 100644 index 0000000..1ddaf45 --- /dev/null +++ b/DangerousD/GameCore/GameObjects/PlayerDeath/DeathRectangle.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DangerousD.GameCore.GameObjects; +using DangerousD.GameCore.Graphics; +using Microsoft.Xna.Framework; + +namespace DangerousD.GameCore.GameObjects.PlayerDeath +{ + public class DeathRectangle : GameObject + { + public DeathRectangle(Vector2 pos, string DeathType) : base(pos) + { + Height = 128; + Width = 128; + PlayDeath(DeathType); + } + + protected override GraphicsComponent GraphicsComponent { get; } = new(new List {"DeathFromZombie"}, + "DeathFromZombie"); + private void PlayDeath(string deathName) + { + if (GraphicsComponent.GetCurrentAnimation != "DeathFromZombie") + { + GraphicsComponent.StartAnimation("DeathFromZombie"); + } + } + + } +} diff --git a/DangerousD/GameCore/Levels/Level1.cs b/DangerousD/GameCore/Levels/Level1.cs index e468dbb..c140696 100644 --- a/DangerousD/GameCore/Levels/Level1.cs +++ b/DangerousD/GameCore/Levels/Level1.cs @@ -10,9 +10,9 @@ namespace DangerousD.GameCore.Levels { public void InitLevel() { - new Player(new Vector2(0,0)); + new Player(new Vector2(80,0)); - var Zombie = new Zombie(new Vector2(256, 128)); + var Zombie = new Zombie(new Vector2(140, 128)); var Frank = new Frank(new Vector2(384, 128)); new GrassBlock(new Vector2(0, 224)); diff --git a/DangerousD/GameCore/Managers/GameManager.cs b/DangerousD/GameCore/Managers/GameManager.cs index f017120..55d83c2 100644 --- a/DangerousD/GameCore/Managers/GameManager.cs +++ b/DangerousD/GameCore/Managers/GameManager.cs @@ -19,6 +19,7 @@ namespace DangerousD.GameCore public MapManager mapManager; public PhysicsManager physicsManager; public List players; + public List otherObjects = new(); public Player GetPlayer1 { get; private set; } public GameManager() { @@ -33,16 +34,27 @@ namespace DangerousD.GameCore internal void Register(GameObject gameObject) { - if (gameObject is LivingEntity) - livingEntities.Add(gameObject as LivingEntity); - if (gameObject is Entity) - entities.Add(gameObject as Entity); - if (gameObject is MapObject) - mapObjects.Add(gameObject as MapObject); if (gameObject is Player) { + livingEntities.Add(gameObject as LivingEntity); players.Add(gameObject as Player); - GetPlayer1= players[0]; + GetPlayer1 = players[0]; + } + else if (gameObject is LivingEntity) + { + livingEntities.Add(gameObject as LivingEntity); + } + else if (gameObject is Entity) + { + entities.Add(gameObject as Entity); + } + else if (gameObject is MapObject) + { + mapObjects.Add(gameObject as MapObject); + } + else + { + otherObjects.Add(gameObject); } } @@ -54,6 +66,8 @@ namespace DangerousD.GameCore item.Draw(_spriteBatch); foreach (var item in livingEntities) item.Draw(_spriteBatch); + foreach (var item in otherObjects) + item.Draw(_spriteBatch); } public void Update(GameTime gameTime) @@ -64,6 +78,8 @@ namespace DangerousD.GameCore item.Update(gameTime); foreach (var item in livingEntities) item.Update(gameTime); + foreach (var item in otherObjects) + item.Update(gameTime); physicsManager.UpdateCollisions(entities, livingEntities, mapObjects, gameTime); diff --git a/DangerousD/GameCore/Managers/PhysicsManager.cs b/DangerousD/GameCore/Managers/PhysicsManager.cs index e847c45..03d97b3 100644 --- a/DangerousD/GameCore/Managers/PhysicsManager.cs +++ b/DangerousD/GameCore/Managers/PhysicsManager.cs @@ -92,8 +92,8 @@ namespace DangerousD.GameCore.Managers { if (livingEntities[j].Rectangle.Intersects(entities[i].Rectangle)) { - livingEntities[j].OnCollision(); - entities[i].OnCollision(); + livingEntities[j].OnCollision(entities[i]); + entities[i].OnCollision(livingEntities[j]); } } } @@ -107,8 +107,8 @@ namespace DangerousD.GameCore.Managers { if (livingEntities[i].Rectangle.Intersects(livingEntities[j].Rectangle)) { - livingEntities[i].OnCollision(); - livingEntities[j].OnCollision(); + livingEntities[i].OnCollision(livingEntities[j]); + livingEntities[j].OnCollision(livingEntities[i]); } } }