laaaaaaaaaadder

This commit is contained in:
Ivan Filipenkov 2023-08-18 01:58:34 +03:00
parent 3a3542af7e
commit 52b404c9db
3 changed files with 41 additions and 3 deletions

View file

@ -9,6 +9,7 @@ using DangerousD.GameCore.GameObjects.PlayerDeath;
using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Graphics;
using DangerousD.GameCore.GameObjects.LivingEntities.Monsters; using DangerousD.GameCore.GameObjects.LivingEntities.Monsters;
using DangerousD.GameCore.Network;
namespace DangerousD.GameCore.GameObjects.LivingEntities namespace DangerousD.GameCore.GameObjects.LivingEntities
{ {
@ -84,6 +85,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
} }
public void Death(string monsterName) public void Death(string monsterName)
{ {
return;
isAttacked = true; isAttacked = true;
if(monsterName == "Zombie") if(monsterName == "Zombie")
{ {

View file

@ -161,7 +161,7 @@ namespace DangerousD.GameCore
foreach (var item in otherObjects) foreach (var item in otherObjects)
item.Update(gameTime); item.Update(gameTime);
physicsManager.UpdateCollisions(entities, livingEntities, mapObjects, gameTime); physicsManager.UpdateCollisions(entities, livingEntities, mapObjects, players, gameTime);
} }
} }
} }

View file

@ -5,6 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using DangerousD.GameCore.GameObjects.LivingEntities; using DangerousD.GameCore.GameObjects.LivingEntities;
using DangerousD.GameCore.GameObjects.MapObjects;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
namespace DangerousD.GameCore.Managers namespace DangerousD.GameCore.Managers
@ -13,7 +14,7 @@ namespace DangerousD.GameCore.Managers
{ {
public void UpdateCollisions(List<Entity> entities, List<LivingEntity> livingEntities, public void UpdateCollisions(List<Entity> entities, List<LivingEntity> livingEntities,
List<MapObject> mapObjects, GameTime gameTime) List<MapObject> mapObjects, List<Player> players, GameTime gameTime)
{ {
float delta = (float)gameTime.ElapsedGameTime.TotalSeconds; float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
foreach (var item in livingEntities) foreach (var item in livingEntities)
@ -21,7 +22,8 @@ namespace DangerousD.GameCore.Managers
item.velocity = item.velocity + item.acceleration * delta; item.velocity = item.velocity + item.acceleration * delta;
} }
CheckCollisionsLE_MO(livingEntities, mapObjects); CheckCollisionsLE_MO(livingEntities, mapObjects.Where(mo => mo is StopTile).ToList());
CheckCollisionsPlayer_Platform(players, mapObjects.OfType<Platform>().ToList());
CheckCollisionsE_LE(entities, livingEntities); CheckCollisionsE_LE(entities, livingEntities);
CheckCollisionsLE_LE(livingEntities); CheckCollisionsLE_LE(livingEntities);
@ -100,6 +102,40 @@ namespace DangerousD.GameCore.Managers
currentEntity.SetPosition(new Vector2(newRect.X, newRect.Y)); currentEntity.SetPosition(new Vector2(newRect.X, newRect.Y));
} }
}
private void CheckCollisionsPlayer_Platform(List<Player> players, List<Platform> platforms)
{
foreach (var player in players)
{
if (player.velocity.Y <= 0)
{
continue;
}
var currentRect = player.Rectangle;
var newRect = currentRect;
var collidedY = false;
var tryingRectY = currentRect;
tryingRectY.Offset(0, (int)Math.Ceiling(player.velocity.Y));
AppManager.Instance.DebugHUD.Set("intersects platform", "false");
foreach (var platform in platforms)
{
if (tryingRectY.Intersects(platform.Rectangle))
{
AppManager.Instance.DebugHUD.Set("intersects platform", "true");
collidedY = true;
break;
}
}
if (collidedY)
{
player.isOnGround = true;
player.velocity.Y = 0;
}
player.SetPosition(new Vector2(newRect.X, newRect.Y));
}
} }
private void CheckCollisionsE_LE(List<Entity> entities, List<LivingEntity> livingEntities) private void CheckCollisionsE_LE(List<Entity> entities, List<LivingEntity> livingEntities)
{ {