The Command & Conquer Collection



{ const getPrivacyCookie = () => { const privacyCookie = document.cookie.match(‘(^|;)\s*cmapi_cookie_privacy\s*=\s*([^;]+)’); return privacyCookie ? privacyCookie.pop() : null; }; const getBehaviorCookie = () => { const behaviorCookie = document.cookie.match(‘(^|;)\s*notice_behavior\s*=\s*([^;]+)’); return behaviorCookie ? behaviorCookie.pop() : null; }; const hasOptedIn = () => { const behaviorCookie = getBehaviorCookie(); const privacyCookie = getPrivacyCookie(); return behaviorCookie && behaviorCookie.match(/^none$/) || privacyCookie && privacyCookie.match(/2|3/); } const appendOptimize = () => { const head = document.getElementsByTagName(‘head’)[0]; if (head) { const script = document.createElement(‘script’); script.src = ‘https://www.googleoptimize.com/optimize.js?id=GTM-M6BQF2W’; script.id = “google-optimize” head.append(script); } }; const removeOptimize = () => { const head = document.getElementsByTagName(‘head’)[0]; const optimizeScript = document.getElementById(‘google-optimize’); if (head && optimizeScript) { head.removeChild(optimizeScript); } } /** * Append or remove Google Optimize script to head, * depending on whether user’s cookie preferences * have opted in and Google Optimize script already * exists in head. */ const handleConsentDecision = () => { const googleOptimizeScript = document.getElementById(‘google-optimize’); if (hasOptedIn() && !googleOptimizeScript) { appendOptimize(); } else if (!hasOptedIn() && googleOptimizeScript) { removeOptimize(); } } /** * Callbacks will occur in the form of a PostMessage event. This code listens for the * appropriately formatted PostMessage event, gets the new consent decision, and then sets * the new cookie preferences. */ const handlePreferencesUpdated = (e) => { try { const { capabilities, action } = JSON.parse(e.data).PrivacyManagerAPI || {}; if (capabilities && action === ‘getConsentDecision’) { handleConsentDecision(); } } catch (error) { console.error(error); } } /** * Registers with the TrustArc Content Manager (CM) API to receive callbacks when * a preference update occurs, and initialized dispatched preferences array to * the user’s current preferences. You must wait for the CM API (PrivacyManagerAPI object) * to exist on the page before registering. */ const CMICallbackRegister = () => { const interval = setInterval(() => { if (window.PrivacyManagerAPI && interval) { const apiObject = { PrivacyManagerAPI: { action: ‘getConsentDecision’, timestamp: new Date().getTime(), self: window.location.host } }; window.top.postMessage(JSON.stringify(apiObject), ‘*’); clearInterval(interval); } }, 50); } /** * Listener registers a message callback on the TrustArc Content Manager when * user’s cookie preferences are updated and adds an event listener * on the message events that occur when said preference updates occur. */ const trustArcScriptLoadListener = () => { if (typeof window.truste === ‘object’) { CMICallbackRegister(); window.addEventListener(‘message’, handlePreferencesUpdated); } } window.addEventListener(‘load’, trustArcScriptLoadListener); const behaviorCookie = getBehaviorCookie(); if (behaviorCookie === null) { // wait for TrustArc script to load before checking cookies let numIntervals = 0; const scriptLoadInterval = setInterval( () => { if(getBehaviorCookie()) { handleConsentDecision(); clearInterval(scriptLoadInterval); } // Stop running interval after 8 times (8x the documented 500ms it // should take to load the TrustArc script on the BE) to prevent running forever if (++numIntervals >= 10) { clearInterval(scriptLoadInterval); } } , 500); } else { handleConsentDecision(); } })(); ]]> The Command & Conquer Collection EA Play FIFA 23 F1™ 22 Madden NFL 23 Apex Legends Battlefield™ 2042 The Sims 4 Electronic Arts Home Electronics Arts Home Latest Games Coming Soon Free-To-Play EA SPORTS EA Originals Games Library PC PlayStation 5 Xbox Series X Nintendo Switch Mobile EA Play Origin Competitive Gaming EA Play Live Company EA Studios Careers Our Technology EA Partners News Inside EA Positive Play Inclusion & Diversity Community Investment People & Culture Environment Help Forums Parental Controls Accessibility Press Investors Playtesting Latest Games Coming Soon Free-To-Play EA SPORTS EA Originals Games Library PC PlayStation 5 Xbox Series X Nintendo Switch Mobile EA Play Origin Competitive Gaming EA Play Live Company EA Studios Careers Our Technology EA Partners News Inside EA Positive Play Inclusion & Diversity Community Investment People & Culture Environment Help Forums Parental Controls Accessibility Press Investors Playtesting

The Command & Conquer Collection

WREAK HAVOC IN UNPRECEDENTED PROPORTIONS IN THESE FIVE GREAT GAMES FROM THE GROUNDBREAKING COMMAND & CONQUER SERIES

Game Features

Step onto the battlefields of the future and unleash a massive high-tech arsenal on your enemies Learn More With millions of fans worldwide, the Command & Conquer series is the benchmark by which all real-time strategy games are measured. Learn More Own a piece of gaming history with this extensive collection from one of the most innovative and award-winning strategy franchises ever. Learn More With unique and highly engaging plots, each of tehse games allows you to get into the action by fighting the war on both sides. Learn More Games News Game Library Subscribe Redeem Code Origin About Accessibility Help Austria Belgium Bulgaria Croatia Cyprus Czech Republic Denmark Estonia Finland France Germany Greece Hungary Iceland Ireland Italy Latvia Liechtenstein Lithuania Luxembourg Malta Netherlands Norway Poland Portugal Romania Slovenia Spain Sweden Switzerland United States United Kingdom Australia France Deutschland Italia 日本 Polska Brasil Россия España Česká republika Canada (En) Canada (Fr) Danmark Suomi México Nederland Norge Sverige 中国 대한민국 繁體中文 Türkiye Legal & Privacy User Agreement Privacy & Cookie Policy (Your Privacy Rights) Online Service Updates Security YouTube Terms of Service Google Privacy Policy = 0; } const componentUrlPrefix = window.nds.componentUrlPrefix; /** * Check for backwards compatibility with NDS version greater or equal to when TrustArc was integrated */ if ( isLocalNDS(componentUrlPrefix) || isNDSBranch(componentUrlPrefix) || isNDSVersionGreaterOrEqual(componentUrlPrefix) ) { const trustArcScript = createScriptTag(); const elements = document.createDocumentFragment(); elements.appendChild(createElement(“consent_blackbar”, false)); elements.appendChild(createElement(“teconsent”, true)); elements.appendChild(trustArcScript); document.body.appendChild(elements); } ]]> TRUSTe

Source