tried to fix host error
This commit is contained in:
commit
61ea7a5644
7 changed files with 136 additions and 49 deletions
1
DangerousD/Content/animations/playerShootBoomUpLeft
Normal file
1
DangerousD/Content/animations/playerShootBoomUpLeft
Normal file
|
@ -0,0 +1 @@
|
|||
{"id":"playerShootBoomUpLeft","textureName":"playerAnimation","startSpriteRectangle":{"X":267,"Y":34,"Width":24,"Height":32},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":2,"isCycle":false,"offset":"0, 0"}
|
24
DangerousD/Content/animations/playerShootBoomUpRight
Normal file
24
DangerousD/Content/animations/playerShootBoomUpRight
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"id": "playerShootBoomUpRight",
|
||||
"textureName": "playerAnimation",
|
||||
"startSpriteRectangle": {
|
||||
"X": 267,
|
||||
"Y": 1,
|
||||
"Width": 24,
|
||||
"Height": 32
|
||||
},
|
||||
"frameSecond": [
|
||||
{
|
||||
"Item1": 0,
|
||||
"Item2": 3
|
||||
},
|
||||
{
|
||||
"Item1": 1,
|
||||
"Item2": 20
|
||||
}
|
||||
],
|
||||
"textureFrameInterval": 1,
|
||||
"framesCount": 2,
|
||||
"isCycle": false,
|
||||
"offset": "0, 0"
|
||||
}
|
|
@ -36,9 +36,9 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
|
||||
public abstract void Move(GameTime gameTime);
|
||||
|
||||
public void TakeDamage(int damage)
|
||||
public virtual void TakeDamage()
|
||||
{
|
||||
monster_health -= damage;
|
||||
monster_health--;
|
||||
if (monster_health <= 0)
|
||||
{
|
||||
Death();
|
||||
|
|
|
@ -14,7 +14,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
|||
{
|
||||
public class Zombie : CoreEnemy
|
||||
{
|
||||
private bool isAttack;
|
||||
|
||||
float leftBorder;
|
||||
float rightBorder;
|
||||
|
@ -32,6 +31,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
|||
rightBorder = (int)position.X + 100;
|
||||
physicsManager = new PhysicsManager();
|
||||
Random random = new Random();
|
||||
monster_health = 2;
|
||||
if(random.Next(0, 2) == 0)
|
||||
{
|
||||
isGoRight = true;
|
||||
|
@ -58,18 +58,19 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
|||
Target();
|
||||
Move(gameTime);
|
||||
}
|
||||
fixBorder();
|
||||
//fixBorder();
|
||||
base.Update(gameTime);
|
||||
}
|
||||
|
||||
public override void Attack()
|
||||
{
|
||||
AppManager.Instance.GameManager.GetPlayer1.Death(name);
|
||||
isAttaking = true;
|
||||
PlayAttackAnimation();
|
||||
AppManager.Instance.GameManager.GetClosestPlayer(Pos).Death(name);
|
||||
}
|
||||
public void PlayAttackAnimation()
|
||||
{
|
||||
velocity.X = 0;
|
||||
isAttaking = true;
|
||||
if (isGoRight)
|
||||
{
|
||||
if (GraphicsComponent.GetCurrentAnimation != "ZombieRightAttack")
|
||||
|
@ -123,7 +124,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
|||
}
|
||||
public override void OnCollision(GameObject gameObject)
|
||||
{
|
||||
if (gameObject.id == AppManager.Instance.GameManager.GetPlayer1.id && AppManager.Instance.GameManager.GetPlayer1.IsAlive)
|
||||
if (gameObject.id == AppManager.Instance.GameManager.GetClosestPlayer(Pos).id && AppManager.Instance.GameManager.GetClosestPlayer(Pos).IsAlive)
|
||||
{
|
||||
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.Client)
|
||||
{
|
||||
|
@ -183,10 +184,9 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
|||
public override void Attack(GameTime gameTime)
|
||||
{}
|
||||
|
||||
public void TakeDamage()
|
||||
public override void TakeDamage()
|
||||
{
|
||||
monster_health--;
|
||||
GraphicsComponent.StartAnimation("ZombieRightAttack");
|
||||
Particle particle = new Particle(Pos);
|
||||
if (monster_health <= 0)
|
||||
{
|
||||
|
|
|
@ -10,6 +10,7 @@ using Microsoft.Xna.Framework.Input;
|
|||
using Microsoft.Xna.Framework.Graphics;
|
||||
using DangerousD.GameCore.GameObjects.LivingEntities.Monsters;
|
||||
using DangerousD.GameCore.Network;
|
||||
using DangerousD.GameCore.GameObjects.MapObjects;
|
||||
|
||||
namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||
{
|
||||
|
@ -65,6 +66,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
{
|
||||
bullets++;
|
||||
}
|
||||
if(a == "playerShootBoomUpRight" || a == "playerShootBoomUpLeft")
|
||||
{
|
||||
isShooting = false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -73,7 +78,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
public bool IsAlive { get { return isAlive; } }
|
||||
|
||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
|
||||
"playerJumpRight" , "playerJumpLeft", "playerShootLeft", "playerShootRight", "playerReload", "smokeAfterShoot", "playerShootUpRight", "playerShootUpLeft"}, "playerReload");
|
||||
"playerJumpRight" , "playerJumpLeft", "playerShootLeft", "playerShootRight", "playerReload", "smokeAfterShoot", "playerShootUpRight", "playerShootUpLeft", "playerShootBoomUpRight",
|
||||
"playerShootBoomUpLeft"}, "playerReload");
|
||||
|
||||
public void Attack()
|
||||
{
|
||||
|
@ -183,6 +189,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
isShooting = true;
|
||||
bullets--;
|
||||
if (isRight)
|
||||
{
|
||||
if (!isUping)
|
||||
{
|
||||
StartCicycleAnimation("playerShootRight");
|
||||
var targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)(Pos.Y - 10f), shootLength + 24, 10), typeof(Zombie)).OrderBy(x => (x.Pos - Pos).LengthSquared());
|
||||
|
@ -190,36 +198,38 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
{
|
||||
Zombie targetZombie = (Zombie)targets.First();
|
||||
targetZombie.TakeDamage();
|
||||
|
||||
}
|
||||
targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(GetShootRectangle(isRight), typeof(SilasHands)).OrderBy(x => (x.Pos - Pos).LengthSquared());
|
||||
if (targets.Count() > 0)
|
||||
{
|
||||
SilasHands targetHand = (SilasHands)targets.First();
|
||||
targetHand.TakeDamage();
|
||||
}
|
||||
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X + 30, Pos.Y + 7));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCicycleAnimation("playerShootBoomUpRight");
|
||||
Bullet bullet = new Bullet(new Vector2(Pos.X + 16, Pos.Y));
|
||||
bullet.ShootUpRight();
|
||||
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X + 12, Pos.Y - 8));
|
||||
}
|
||||
}
|
||||
else if(!isRight)
|
||||
{
|
||||
if (!isUping)
|
||||
{
|
||||
StartCicycleAnimation("playerShootLeft");
|
||||
var targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X - shootLength, (int)(Pos.Y - 10f), shootLength, 10), typeof(Zombie));
|
||||
if (targets != null)
|
||||
{
|
||||
foreach (var target in targets)
|
||||
{
|
||||
Zombie targetZombie = (Zombie)target;
|
||||
targetZombie.TakeDamage();
|
||||
}
|
||||
}
|
||||
targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(GetShootRectangle(isRight), typeof(SilasHands));
|
||||
var targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)(Pos.Y - 10f), shootLength + 24, 10), typeof(Zombie)).OrderBy(x => (x.Pos - Pos).LengthSquared());
|
||||
if (targets.Count() > 0)
|
||||
{
|
||||
SilasHands targetHand = (SilasHands)targets.First();
|
||||
targetHand.TakeDamage();
|
||||
Zombie targetZombie = (Zombie)targets.First();
|
||||
targetZombie.TakeDamage();
|
||||
}
|
||||
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X - 12, Pos.Y + 7));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCicycleAnimation("playerShootBoomUpLeft");
|
||||
Bullet bullet = new Bullet(new Vector2(Pos.X, Pos.Y));
|
||||
bullet.ShootUpLeft();
|
||||
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X - 6, Pos.Y - 7));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -282,14 +292,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
}
|
||||
else if (AppManager.Instance.InputManager.VectorMovementDirection.X == 0)//стоит
|
||||
{
|
||||
if(bullets < 5)
|
||||
{
|
||||
if (GraphicsComponent.GetCurrentAnimation != "playerReload")
|
||||
{
|
||||
GraphicsComponent.StartAnimation("playerReload");
|
||||
}
|
||||
}
|
||||
else if (isRight)
|
||||
if (isRight)
|
||||
{
|
||||
if (isUping)
|
||||
{
|
||||
|
@ -298,6 +301,13 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
GraphicsComponent.StartAnimation("playerShootUpRight");
|
||||
}
|
||||
}
|
||||
else if (bullets < 5)
|
||||
{
|
||||
if (GraphicsComponent.GetCurrentAnimation != "playerReload")
|
||||
{
|
||||
GraphicsComponent.StartAnimation("playerReload");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GraphicsComponent.StartAnimation("playerRightStay");
|
||||
|
@ -312,6 +322,13 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
GraphicsComponent.StartAnimation("playerShootUpLeft");
|
||||
}
|
||||
}
|
||||
else if (bullets < 5)
|
||||
{
|
||||
if (GraphicsComponent.GetCurrentAnimation != "playerReload")
|
||||
{
|
||||
GraphicsComponent.StartAnimation("playerReload");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GraphicsComponent.StartAnimation("playerStayLeft");
|
||||
|
@ -331,13 +348,51 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
isOnGround = false;
|
||||
}
|
||||
|
||||
public class Bullet : GameObjects.LivingEntity
|
||||
public class Bullet : LivingEntity
|
||||
{
|
||||
public Bullet(Vector2 position) : base(position)
|
||||
{
|
||||
Height = 5;
|
||||
Width = 5;
|
||||
}
|
||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft"}, "playerMoveLeft");
|
||||
Vector2 direction;
|
||||
Vector2 maindirection;
|
||||
public void ShootUpRight()
|
||||
{
|
||||
direction = new Vector2(1, -1);
|
||||
acceleration = Vector2.Zero;
|
||||
velocity = new Vector2(10, 10) * direction;
|
||||
maindirection = velocity;
|
||||
}
|
||||
public void ShootUpLeft()
|
||||
{
|
||||
direction = new Vector2(-1, -1);
|
||||
acceleration = Vector2.Zero;
|
||||
velocity = new Vector2(10, 10) * direction;
|
||||
maindirection = velocity;
|
||||
}
|
||||
public override void OnCollision(GameObject gameObject)
|
||||
{
|
||||
if (gameObject is not Player)
|
||||
{
|
||||
if (gameObject is CoreEnemy)
|
||||
{
|
||||
CoreEnemy enemy = (CoreEnemy)gameObject;
|
||||
enemy.TakeDamage();
|
||||
AppManager.Instance.GameManager.Remove(this);
|
||||
}
|
||||
base.OnCollision(gameObject);
|
||||
}
|
||||
}
|
||||
public override void Update(GameTime gameTime)
|
||||
{
|
||||
if (maindirection!=velocity)
|
||||
{
|
||||
AppManager.Instance.GameManager.Remove(this);
|
||||
}
|
||||
base.Update(gameTime);
|
||||
}
|
||||
protected override GraphicsComponent GraphicsComponent { get; } = new("ZombieMoveLeft");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ public abstract class LivingEntity : Entity
|
|||
public Vector2 velocity;
|
||||
public Vector2 acceleration;
|
||||
|
||||
public Vector2 Acceleration { get; private set; }
|
||||
|
||||
public LivingEntity(Vector2 position) : base(position)
|
||||
{
|
||||
acceleration = new Vector2(0, 30);
|
||||
|
|
|
@ -192,5 +192,10 @@ namespace DangerousD.GameCore
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Player GetClosestPlayer(Vector2 position)
|
||||
{
|
||||
return players.OrderBy(x => (x.Pos - position).Length()).First();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue