// initialize jwplayer var playerInstance = jwplayer('player');// player dom elements var playerContainerEl = document.querySelector('.player-container');// returns video player position from top of document function getElementOffsetTop(el) { var boundingClientRect = el.getBoundingClientRect(); var bodyEl = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop; var clientTop = docEl.clientTop || bodyEl.clientTop || 0; return Math.round(boundingClientRect.top + scrollTop - clientTop); }// returns the current y scroll position function getScrollTop() { var docEl = document.documentElement; return (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0); }// configure jwplayer instance playerInstance.setup({ autostart: true, playlist: 'https://cdn.jwplayer.com/v2/playlists/mYdavspX', primary: 'html5', setFullscreen: true, width: '100%' });// when jwplayer instance is ready playerInstance.on('ready', function() { var config = playerInstance.getConfig(); var utils = playerInstance.utils; // get height of player element var playerHeight = config.containerHeight; // flag determining whether close has been clicked var closed = true; // CHANGED // flag determing whether player is playing var playing = false; // ADDED // eventhandler for when close button is being pressed document.getElementsByClassName('icon-close')[0].addEventListener('click', () => { closed = true; onScrollViewHandler(); }); playerInstance.on('play', function() { closed = false; playing = true; // ADDED }).on('pause', function () { playing = false; // ADDED }).on('adPlay', function() { closed = false; // ADDED playing = true; // ADDED }).on('adPause', function() { playing = false; // ADDED });// get player element position from top of document var playerOffsetTop = getElementOffsetTop(playerContainerEl);// set player container to match height of actual video element playerContainerEl.style.height = playerHeight + 'px';// below we handle window scroll event without killing performance function onScrollViewHandler() { var minimized = getScrollTop() >= playerOffsetTop;if (closed && minimized) { minimized = false; jwplayer().pause(); playing = false; // ADDED } else if (!minimized && !playing) { closed = true; // ADDED } utils.toggleClass(playerContainerEl, 'player-minimize', minimized); // update the player's size so the controls are adjusted playerInstance.resize(); }// namespace for whether or not we are waiting for setTimeout() to finish var isScrollTimeout = false;// window onscroll event handler window.onscroll = function() { // skip if we're waiting on a scroll update timeout to finish if (isScrollTimeout) return; // flag that a new timeout will begin isScrollTimeout = true; // otherwise, call scroll event view handler onScrollViewHandler(); // set new timeout setTimeout(function() { // reset timeout flag to false (no longer waiting) isScrollTimeout = false; }, 80); };});

Treyarch has provided a new update on when to expect League Play for Call of Duty: Black Ops 4, alongside the full details on today’s game settings update, and more as Treyarch rings in 2019 in Black Ops 4.

The full update from Treyarch, including the patch notes for today’s update, details on Zombies camos, and more is available in our post here.

Treyarch shared the first update on League Play for Black Ops 4 since early December.

From Treyarch:

As we mentioned back in our Operation Absolute Zero announcement blog, the Black Ops 4 competitive season is a core focus for us heading into 2019. Now that we’ve built the foundation for our competitive feature set with the launches of CWL Custom Games, CODCaster, and Live Event Viewer, we’re dedicated to rolling out continuing World League Hub features over the coming months.

This all kicks off with the launch of League Play by the end of January, which we know many of you are eagerly anticipating. League Play will operate a little differently this time around. The system is designed to emulate a schedule more like the pros play, where League Play events will be intense and frequent but shorter duration, generally spanning weekends or 3-day periods.

In between those events, Scrims will be run as an unranked playlist using CWL rules so that players and teams can sharpen their skills before a competition. Both League Play events and Scrims will use skill-based matchmaking, where focus has been applied to making sure skill matches are as accurate as possible without resulting in empty lobbies or long wait times. League ladders will be built around 50-player groupings to ensure the most intense competition for these shorter-duration events. We’ll provide more around how the ranking system works along with other details as we approach the launch date.

Our planned schedule is to release the World League Hub and first League Play event by the end of January. That said, we want to make sure that we’ve spent enough time play-testing and incorporating feedback before it launches, so this date is subject to change. We love ranked play as much as you do, and that’s why we’re taking the time required to give League Play the attention it deserves. From there, we’ll continue to release new World League Hub features, including Teams and Clans for our competitive-focused players.

SOURCE: Treyarch

comments below