// 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); };});

The second Zombies DLC Map for Call of Duty: Black Ops 4 is available now on Xbox One and PC for all Black Ops Pass owners, after launching last week on PlayStation 4.

This is the second out of four DLC Zombies map for the Call of Duty: Black Ops 4 Season, and it is the last Chaos Story DLC Map for the season. The remaining two maps will be about the Aether Story.

The next thrilling Zombies adventure in Call of Duty: Black Ops 4 is arriving next Tuesday for Black Ops Pass owners. “Ancient Evil” beckons the intrepid from the Chaos Storyline – Bruno, Diego, Scarlett and Shaw – in a brand-new adventure into an underground Greek city to face off against new varieties of the undead. Featuring signature Call of Duty Zombies combat, Ancient Evil will test players’ skills as they fight new Zombies and enemies against the backdrop of a gargantuan cavern colossal enough to hold a sprawling city.

Jason Blundell on the new map: “After so many different Zombies maps at launch, DLC1, the prequel comic books… it’s nice that Ancient Evil gets to move the story forward now that the chronology has settled down, so to speak. A few of the bigger story threads that we saw developing in previous maps are really going to come to the foreground now, which means we get to see some significant moments and development for our cast of characters.”

Here’s the gameplay trailer for the new map:

The new map is available as part of the Black Ops Pass for Call of Duty: Black Ops 4. It’s available now on PlayStation 4, Xbox One, and PC. The Black Ops Pass includes access to a total of three Zombies maps right now, including Classified, Dead of the Night, and Ancient Evil. Two more Zombies maps are planned for this year.

comments below