public bool IsCollided(Player player, Room room) { var intersectionDeter = new IntersectionDeterminant(); var border = room.Border; var doors = room.GetAllDoors(); foreach (var t in doors) { if (IsCollided(player, t) && !t.IsLocked) { return(false); } } if (intersectionDeter.IsIntersected(player.Form, new RectangleF(room.Form.Left, room.Form.Top, border.Width, room.Form.Height))) { return(true); } if (intersectionDeter.IsIntersected(player.Form, new RectangleF(room.Form.Left, room.Form.Top, room.Form.Width, -border.Height))) { return(true); } if (intersectionDeter.IsIntersected(player.Form, new RectangleF(room.Form.Right - border.Width, room.Form.Top, border.Width, room.Form.Height))) { return(true); } if (intersectionDeter.IsIntersected(player.Form, new RectangleF(room.Form.Left, room.Form.Bottom + border.Height, room.Form.Width, -border.Height))) { return(true); } return(false); }