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

Following the Kotaku’s large report on the horrible work-life style environment at Treyarch studios during the development of Black Ops 4, Treyarch’s co-studio heads Mark Gordan and Dan Bunting sent a note to the entire Treyarch team about the article.

Kotaku’s report detailed extensive mis-treatment of the QA team and the contractors who work on Call of Duty titles at Treyarch. Some have worked 12 hours a day for minimum wage, not received bonuses that many other developers at the studio have gotten, and forced to work even during launch parties rather than celebrating.

The new email sent to the staff states that they plan to make ‘significant improvements’ to the work and life balance for the team at Treyarch and ensuring better project planning to avoid major changes to games close to the title’s launches.

Here’s the full email Mark Gordan and Dan Bunting sent to the staff today:

Team:

Today, Kotaku published a story that explores a number of reported behind-the-scenes issues in Black Ops 4 development. The first and most important statement that we want to make to the team is that, as managers of this studio, we take the well-being of every single individual working here very seriously.

We have a vision for the future of this studio that includes significant improvements to work/life balance, and we plan to achieve that through better project planning, streamlined production processes, and rigorous decision-making timelines. It is also our intention to maintain our commitment to increased transparency.

Getting there will require time, hard work, and commitment — most of all, it will require open communication. If you ever feel like your needs aren’t being met, please do not hesitate to communicate actively with your manager. No one should ever feel like they don’t have options, can’t talk openly, or that the only choice is to take their concerns to the public. These conversations should always start with an honest dialogue with your department manager, and if that’s not working, feel free to reach out to one of us.

Game development is a wildly complex art and it requires a diverse set of people and skill sets to do it successfully. It’s important for all of us to foster a studio culture that treats all team members with respect.

We appreciate the contributions made by all parts of the team in the name of the games we make.

Sincerely,

Dan & Mark

SOURCE: Kotaku

comments below