UNPKG

phaser

Version:

A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers.

182 lines (158 loc) 5.27 kB
/** * @author Richard Davey <rich@photonstorm.com> * @copyright 2018 Photon Storm Ltd. * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ /** * Determines the operating system of the device running this Phaser Game instance. * These values are read-only and populated during the boot sequence of the game. * They are then referenced by internal game systems and are available for you to access * via `this.sys.game.device.os` from within any Scene. * * @typedef {object} Phaser.Device.OS * @since 3.0.0 * * @property {boolean} android - Is running on android? * @property {boolean} chromeOS - Is running on chromeOS? * @property {boolean} cocoonJS - Is the game running under CocoonJS? * @property {boolean} cocoonJSApp - Is this game running with CocoonJS.App? * @property {boolean} cordova - Is the game running under Apache Cordova? * @property {boolean} crosswalk - Is the game running under the Intel Crosswalk XDK? * @property {boolean} desktop - Is running on a desktop? * @property {boolean} ejecta - Is the game running under Ejecta? * @property {boolean} electron - Is the game running under GitHub Electron? * @property {boolean} iOS - Is running on iOS? * @property {boolean} iPad - Is running on iPad? * @property {boolean} iPhone - Is running on iPhone? * @property {boolean} kindle - Is running on an Amazon Kindle? * @property {boolean} linux - Is running on linux? * @property {boolean} macOS - Is running on macOS? * @property {boolean} node - Is the game running under Node.js? * @property {boolean} nodeWebkit - Is the game running under Node-Webkit? * @property {boolean} webApp - Set to true if running as a WebApp, i.e. within a WebView * @property {boolean} windows - Is running on windows? * @property {boolean} windowsPhone - Is running on a Windows Phone? * @property {number} iOSVersion - If running in iOS this will contain the major version number. * @property {number} pixelRatio - PixelRatio of the host device? */ var OS = { android: false, chromeOS: false, cocoonJS: false, cocoonJSApp: false, cordova: false, crosswalk: false, desktop: false, ejecta: false, electron: false, iOS: false, iOSVersion: 0, iPad: false, iPhone: false, kindle: false, linux: false, macOS: false, node: false, nodeWebkit: false, pixelRatio: 1, webApp: false, windows: false, windowsPhone: false }; function init () { var ua = navigator.userAgent; if (/Windows/.test(ua)) { OS.windows = true; } else if (/Mac OS/.test(ua)) { OS.macOS = true; } else if (/Linux/.test(ua)) { OS.linux = true; } else if (/Android/.test(ua)) { OS.android = true; } else if (/iP[ao]d|iPhone/i.test(ua)) { OS.iOS = true; (navigator.appVersion).match(/OS (\d+)/); OS.iOSVersion = parseInt(RegExp.$1, 10); } else if (/Kindle/.test(ua) || (/\bKF[A-Z][A-Z]+/).test(ua) || (/Silk.*Mobile Safari/).test(ua)) { OS.kindle = true; // This will NOT detect early generations of Kindle Fire, I think there is no reliable way... // E.g. "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true" } else if (/CrOS/.test(ua)) { OS.chromeOS = true; } if (/Windows Phone/i.test(ua) || (/IEMobile/i).test(ua)) { OS.android = false; OS.iOS = false; OS.macOS = false; OS.windows = true; OS.windowsPhone = true; } var silk = (/Silk/).test(ua); if (OS.windows || OS.macOS || (OS.linux && !silk) || OS.chromeOS) { OS.desktop = true; } // Windows Phone / Table reset if (OS.windowsPhone || ((/Windows NT/i.test(ua)) && (/Touch/i.test(ua)))) { OS.desktop = false; } // WebApp mode in iOS if (navigator.standalone) { OS.webApp = true; } if (window.cordova !== undefined) { OS.cordova = true; } if (process && process.versions && process.versions.node) { OS.node = true; } if (OS.node && typeof process.versions === 'object') { OS.nodeWebkit = !!process.versions['node-webkit']; OS.electron = !!process.versions.electron; } if (navigator.isCocoonJS) { OS.cocoonJS = true; try { OS.cocoonJSApp = (typeof CocoonJS !== 'undefined'); } catch (error) { OS.cocoonJSApp = false; } } if (window.ejecta !== undefined) { OS.ejecta = true; } if ((/Crosswalk/).test(ua)) { OS.crosswalk = true; } OS.iPhone = ua.toLowerCase().indexOf('iphone') !== -1; OS.iPad = ua.toLowerCase().indexOf('ipad') !== -1; OS.pixelRatio = window['devicePixelRatio'] || 1; return OS; } module.exports = init();