diff --git a/DangerousD/Content/boss.tmx b/DangerousD/Content/boss.tmx
new file mode 100644
index 0000000..97ea7e8
--- /dev/null
+++ b/DangerousD/Content/boss.tmx
@@ -0,0 +1,162 @@
+
+
diff --git a/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs b/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs
index 1c11e0e..94e7ca6 100644
--- a/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs
+++ b/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs
@@ -12,20 +12,22 @@ namespace DangerousD.GameCore.GameObjects.Entities
{
public class SilasBall : LivingEntity
{
- private bool IsVisibility=true;
+
+ private Vector2 v;
public SilasBall(Vector2 position) : base(position)
{
- Height = 60;
- Width = 60;
+ Height = 24;
+ Width = 24;
acceleration = Vector2.Zero;
}
public SilasBall(Vector2 position, Vector2 velosity) : base(position)
{
- Height = 60;
- Width = 60;
+ Height = 24;
+ Width = 24;
acceleration = Vector2.Zero;
velocity = velosity;
+ v = velosity;
}
@@ -33,17 +35,17 @@ namespace DangerousD.GameCore.GameObjects.Entities
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
- if (AppManager.Instance.GameManager.physicsManager.CheckRectangle(Rectangle).Count>0)
+ if (AppManager.Instance.GameManager.physicsManager.CheckRectangle( new Rectangle(Rectangle.X-2,Rectangle.Y-2,Rectangle.Width+8,Rectangle.Height+8)).Count>0)
{
- IsVisibility = false;
+ AppManager.Instance.GameManager.Remove(this);
}
+ velocity = v;
}
public override void Draw(SpriteBatch spriteBatch)
{
- if (IsVisibility)
- {
- base.Draw(spriteBatch);
- }
+
+ base.Draw(spriteBatch);
+
}
}
diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs
index e16f168..a54a59b 100644
--- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs
+++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs
@@ -15,8 +15,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
public SilasHands(Vector2 position) : base(position)
{
name = "SilasHand";
- Width = 48;
- Height = 48;
+ Width = 16;
+ Height = 16;
monster_health = 2;
monster_speed = 2;
acceleration = Vector2.Zero;
diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs
index 66f9527..34069af 100644
--- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs
+++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs
@@ -24,21 +24,17 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
public SilasMaster(Vector2 position) : base(position)
{
name = "SilasMaster";
- Width = 144;
- Height = 160;
+ Width = 48;
+ Height = 53;
monster_health = 15;
- monster_speed = 4;
+ monster_speed = 2;
acceleration = Vector2.Zero;
leftBorder = (int)position.X - 60;
rightBorder = (int)position.X + 120;
acceleration = Vector2.Zero;
- hands.Add(new SilasHands(new Vector2(Pos.X+60,Pos.Y+120)));
- hands.Add(new SilasHands(new Vector2(Pos.X + 90, Pos.Y + 120)));
- for (int i = 0; i < 4; i++)
- {
- SilasBall silasball = new SilasBall(new Vector2(Pos.X + i * 40, Pos.Y + 120), new Vector2((i - 2) * 4, 6));
- balls.Add(silasball);
- }
+ hands.Add(new SilasHands(new Vector2(Pos.X+0,Pos.Y+53)));
+ hands.Add(new SilasHands(new Vector2(Pos.X + 24, Pos.Y + 53)));
+
}
protected override GraphicsComponent GraphicsComponent { get; } = new GraphicsComponent(new List() { "SilasMove", "SilasAttack" }, "SilasMove");
public override void Attack()
@@ -64,12 +60,15 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
private void SpawnAttackBall()
{
- for (int i = 0; i < balls.Count; i++)
+ balls.Clear();
+ for (int i = 0; i < 4; i++)
{
- balls[i].SetPosition(new Vector2(Pos.X + i * 40, Pos.Y + 120));
+ SilasBall silasball = new SilasBall(new Vector2(Pos.X + i * 12, Pos.Y + 53), new Vector2((i - 2) * 2, 2));
+
+ balls.Add(silasball);
}
-
-
+
+
}
public void Attack(GameTime gameTime)
diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs
index 62bad69..edfc3bc 100644
--- a/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs
+++ b/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs
@@ -28,6 +28,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
private bool isAttacked = false;
private bool isShooting = false;
public GameObject objectAttack;
+ public bool isInvincible;
private int bullets;
public bool FallingThroughPlatform = false;
@@ -60,6 +61,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
};
}
+ public Player(Vector2 position, bool isInvincible) : this(position)
+ {
+ this.isInvincible = isInvincible;
+ }
+
public bool IsAlive { get { return isAlive; } }
protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
@@ -160,7 +166,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
AppManager.Instance.DebugHUD.Log("not falling");
}
GraphicsComponent.SetCameraPosition(Pos);
- if (!isAttacked)
+ if (!isAttacked || isInvincible)
{
Move(gameTime);
}
diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs
index 84d6b07..661932c 100644
--- a/DangerousD/GameCore/Managers/AppManager.cs
+++ b/DangerousD/GameCore/Managers/AppManager.cs
@@ -202,7 +202,7 @@ namespace DangerousD.GameCore
case GameState.Lobby:
break;
case GameState.Game:
- GameManager.mapManager.LoadLevel("lvl");
+ GameManager.mapManager.LoadLevel("boss");
break;
case GameState.Death:
break;