bool ICollidable.DetectCollision(Rectangle collidingObject, bool ignoreEdges) { foreach (var tileHit in TileMap.GetTilesHit(collidingObject)) { if (tileHit.IsSpring) { return(true); } } return(false); }
bool ICollidable.DetectCollision(Rectangle collidingObject, bool ignoreEdges) { foreach (var tileHit in TileMap.GetTilesHit(collidingObject)) { var isSpike = tileHit.IsSpike && collidingObject.Bottom > tileHit.Position.Center.Y; if (isSpike) { return(true); } } return(false); }
public static void CheckForBrokenTiles(ITileBreaker breaker, QuickGameTileMap map) { if (breaker.CanBreakTiles) { var tilesHit = map.GetTilesHit(breaker.Position).Where(p => p.IsBreakable).ToArray(); var tileToBreak = tilesHit.OrderBy(p => p.Position.Center.GetAbsoluteDistanceTo(breaker.Position.Center)).FirstOrDefault(); if (tileToBreak != null) { breaker.CanBreakTiles = false; BreakTile(tileToBreak); } } }