Skip to main content Exclusive Articles
Member-only articles Weekly Newsletters
Gaming & entertainment news Commenting
Join the discussion Member Badges
Earn badges as you go Exclusive Competitions
Members-only prize draws Early Access
See the latest gaming news first An account already exists for this email address, please log in. `;
}
})
.catch(error => {
console.error("Submission failed", error);
submitBtn.disabled = false;
});
});
}
function updateBannerPosition() {
if (!banner || !bannerVisible) return;
const masthead = document.querySelector('[data-component-name="SiteHeader:Masthead"]');
const navComponent = document.querySelector('.navigation__container');
const ads_iframe = document.querySelector('iframe[name^="google_ads_iframe_"]');
const bigTop = ads_iframe?.contentDocument?.querySelector('#future-big-top-collapsed');
let targetTop = 0;
if (masthead) {
const rect = masthead.getBoundingClientRect();
targetTop = rect.bottom > 0 ? rect.bottom : 0;
}
if (navComponent) {
const rectNavComponent = navComponent.getBoundingClientRect();
if(rectNavComponent.bottom>0){
targetTop += rectNavComponent.bottom;
}
}
banner.style.top = `${targetTop}px`;
banner.style.marginTop = bigTop ? "10px" : "0px";
}
function showBannerHS() {
const ads_iframe = document.querySelector('iframe[name^="google_ads_iframe_"]');
const bigTopElement = ads_iframe?.contentDocument?.querySelector('#future-big-top-collapsed');
if(bigTopElement) banner.classList.add('flw-translate-150');
if(typeof ffte !== 'undefined' && ffte?.properties?.articleType === 'deals') return false;
const isAuthKiosq = window.FUTR?.Kiosq?.User?.is_authenticated;
const isAuthConnect = window.FUTR?.Connect?.Auth?.kiosqUserIsAuthenticated;
if (!bannerDismissed && !isAuthKiosq && !isAuthConnect) {
if(window.dispatchOrQueueAction) {
window.dispatchOrQueueAction('freyr.sendEventToFreyr', {
name: 'membershipEvent',
eventObject: { membership: { action: "scroll-page", label: "membership-banner", type: "banner-sticky" } }
});
}
banner.classList.add('show');
document.body.classList.add('banner-visible');
bannerVisible = true;
}
}
function showBanner() {
const ads_iframe = document.querySelector('iframe[name^="google_ads_iframe_"]');
const bigTopElement = ads_iframe?.contentDocument?.querySelector('#future-big-top-collapsed');
if(bigTopElement) banner.classList.add('flw-translate-150');
if(typeof ffte !== 'undefined' && ffte?.properties?.articleType === 'deals') return false;
const isAuthKiosq = window.FUTR?.Kiosq?.User?.is_authenticated;
const isAuthConnect = window.FUTR?.Connect?.Auth?.kiosqUserIsAuthenticated;
if (!bannerDismissed && !isAuthKiosq && !isAuthConnect) {
if(window.dispatchOrQueueAction) {
window.dispatchOrQueueAction('freyr.sendEventToFreyr', {
name: 'membershipEvent',
eventObject: { membership: { action: "scroll-page", label: "membership-banner", type: "banner-sticky" } }
});
}
const bgImg = document.getElementById('skinnyBannerBgImg');
if (bgImg && !bgImg.getAttribute('src')) {
if (bgImg.getAttribute('data-srcset')) {
bgImg.setAttribute('srcset', bgImg.getAttribute('data-srcset'));
}
bgImg.setAttribute('src', bgImg.getAttribute('data-src'));
}
banner.classList.add('show');
document.body.classList.add('banner-visible');
bannerVisible = true;
}
}
function hideBanner() {
if (isInputFocused) return;
banner.classList.remove('show');
bannerVisible = false;
bannerExpanded = false;
banner.classList.remove('expanded');
document.body.classList.remove('banner-expanded');
}
function toggleBanner() {
if (bannerDismissed) return;
bannerExpanded = !bannerExpanded;
banner.classList.toggle('expanded', bannerExpanded);
document.body.classList.toggle('banner-expanded', bannerExpanded);
if (bannerExpanded && window.dispatchOrQueueAction) {
window.dispatchOrQueueAction('freyr.sendEventToFreyr', {
name: 'membershipEvent',
eventObject: { membership: { action: "click-banner", label: "membership-banner", type: "banner-sticky" } }
});
}
}
function dismissBanner() {
isInputFocused = false;
hideBanner();
bannerDismissed = true;
localStorage.setItem('skinnyBannerDismissed', 'true');
}
window.addEventListener('scroll', () => {
if (bannerVisible) {
window.requestAnimationFrame(updateBannerPosition);
}
if (window.scrollY < SAFETY_SCROLL_TOP && bannerVisible && !isInputFocused) {
hideBanner();
}
}, { passive: true });
document.addEventListener('click', function (event) {
if (!banner) return;
if (!banner.contains(event.target) && banner.classList.contains('expanded') && document.body.classList.contains('banner-expanded')) {
toggleBanner();
}
});
if (bannerHeader) bannerHeader.addEventListener('click', toggleBanner);
if (closeBanner) closeBanner.addEventListener('click', e => { e.stopPropagation(); dismissBanner(); });
if (joinNowBtn) joinNowBtn.addEventListener('click', e => { e.stopPropagation(); window.location.href = '/membership'; });
checkBannerStatus();
function setupScrollFallback() {
window.addEventListener('scroll', () => {
let hasReachedThreshold = (window.scrollY >= MIN_SCROLL_NO_AD);
if (hasReachedThreshold && !scrollTriggered && !bannerVisible) { scrollTriggered = true; showBanner(); }
else if (!hasReachedThreshold && !isInputFocused) { scrollTriggered = false; hideBanner(); }
});
}
const bodyObserver = new MutationObserver((mutations, observer) => {
const firstAd = document.querySelector('.bordeaux-filled-slot');
if (firstAd) {
const intersectionObserver = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (!entry.isIntersecting && !bannerVisible) showBanner();
else if (entry.isIntersecting && bannerVisible && !isInputFocused) hideBanner();
});
}, { root: null, threshold: 0 });
intersectionObserver.observe(firstAd);
window.addEventListener('scroll', function scrollSafetyCheck() {
if (window.scrollY < SAFETY_SCROLL_TOP && bannerVisible && !isInputFocused) hideBanner();
});
observer.disconnect();
} else {
setupScrollFallback();
observer.disconnect();
}
});
bodyObserver.observe(document.body, { childList: true, subtree: true });
}); `;
}
})
.catch(error => {
console.error("Submission failed", error);
if (submitBtnBanner) submitBtnBanner.disabled = false;
});
}
window.handleMembershipFormSubmit = handleMembershipFormSubmit;
if (closeBtns) closeBtns.forEach(btn => btn.addEventListener('click', setPopupClosed));
if (popupEmailInput) {
popupEmailInput.addEventListener("input", function () {
if (typeof window.dispatchOrQueueAction === 'function') {
window.dispatchOrQueueAction('freyr.sendEventToFreyr', {
name: 'membershipEvent',
eventObject: { membership: { action: "input-signup-form", label: "membership-popup", type: "popup" } },
});
}
});
}
window.addEventListener('scroll', () => {
if (!shouldShowPopup()) return;
const progress = getScrollProgressInArticle();
if (progress >= 40 && !popupShown) {
clubPopup.classList.remove('opacity-0', 'scale-90', 'closedPopup');
clubPopup.classList.add('opacity-100', 'scale-100', 'translate-y-0');
popupShown = true;
if (typeof window.dispatchOrQueueAction === 'function') {
window.dispatchOrQueueAction('freyr.sendEventToFreyr', {
name: 'membershipEvent',
eventObject: { membership: { action: "scroll-article", label: "membership-popup", type: "popup" } },
});
}
}
else if (progress < 40 && popupShown) {
clubPopup.classList.add('opacity-0', 'scale-90', 'closedPopup');
clubPopup.classList.remove('opacity-100', 'scale-100', 'translate-y-0');
popupShown = false;
}
});
controlPopupPositionOnScreen();
window.matchMedia('(max-width: 699px)').addEventListener('change', controlPopupPositionOnScreen);
const bodyObserver = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
controlPopupPositionOnScreen();
}
}
});
bodyObserver.observe(document.body, { attributes: true });
manageInitialPopupState();
}); Welcome to
PC Gamer club
! Hi
,
Your membership journey starts here.
Keep exploring and earning more as a member.
MY ACCOUNT Earn your first
badge Read 1 article to unlock your first badge. Keep earning badges Explore ways to get more involved as a member.
Select your newsletters
Get the latest PC gaming news, rumors, recommendations, and deals delivered to your inbox. (You can turn them off anytime.)
Manage newsletters Sign Out 0 Join the conversation Follow us Add us as a preferred source on Google
The first webpage I ever spent any extensive amount of time looking at was the Wookieepedia entry for Revan, and it makes me feel some type of way that it's still up there. Anyway, I'm also very fond of the Wookieepedia pages for "Human," "Religion," "Water," and "Devaronian's food cake." Devaronians are the little cantina devil aliens, you see.
Ted has been thinking about PC games and bothering anyone who would listen with his thoughts on them ever since he booted up his sister's copy of Neverwinter Nights on the family computer. He is obsessed with all things CRPG and CRPG-adjacent, but has also covered esports, modding, and rare game collecting. When he's not playing or writing about games, you can find Ted lifting weights on his back porch. You can follow Ted on Bluesky.
LATEST ARTICLES
- 1 Sony Inzone M10S II review
- 2 This guy just sold me on his game with the health bar alone
- 3 Gigabyte admits an oopsie with Gigabyte Control Center software leaving kernel exposed to attackers
- 4 Nighthawks review
- 5 Should action games let us skip the action?