MCPcopy Index your code
hub / github.com/EmulatorJS/EmulatorJS / constructor

Method constructor

data/src/emulator.js:202–327  ·  view source on GitHub ↗
(element, config)

Source from the content-addressed store, hash-verified

200 return parseInt(rv.join(""));
201 }
202 constructor(element, config) {
203 this.ejs_version = "4.2.3";
204 this.extensions = [];
205 this.initControlVars();
206 this.debug = (window.EJS_DEBUG_XX === true);
207 if (this.debug || (window.location && ["localhost", "127.0.0.1"].includes(location.hostname))) this.checkForUpdates();
208 this.netplayEnabled = (window.EJS_DEBUG_XX === true) && (window.EJS_EXPERIMENTAL_NETPLAY === true);
209 this.config = config;
210 this.config.buttonOpts = this.buildButtonOptions(this.config.buttonOpts);
211 this.config.settingsLanguage = window.EJS_settingsLanguage || false;
212 this.currentPopup = null;
213 this.isFastForward = false;
214 this.isSlowMotion = false;
215 this.failedToStart = false;
216 this.rewindEnabled = this.preGetSetting("rewindEnabled") === "enabled";
217 this.touch = false;
218 this.cheats = [];
219 this.started = false;
220 this.volume = (typeof this.config.volume === "number") ? this.config.volume : 0.5;
221 if (this.config.defaultControllers) this.defaultControllers = this.config.defaultControllers;
222 this.muted = false;
223 this.paused = true;
224 this.missingLang = [];
225 this.setElements(element);
226 this.setColor(this.config.color || "");
227 this.config.alignStartButton = (typeof this.config.alignStartButton === "string") ? this.config.alignStartButton : "bottom";
228 this.config.backgroundColor = (typeof this.config.backgroundColor === "string") ? this.config.backgroundColor : "rgb(51, 51, 51)";
229 if (this.config.adUrl) {
230 this.config.adSize = (Array.isArray(this.config.adSize)) ? this.config.adSize : ["300px", "250px"];
231 this.setupAds(this.config.adUrl, this.config.adSize[0], this.config.adSize[1]);
232 }
233 this.isMobile = (function() {
234 let check = false;
235 (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);
236 return check;
237 })();
238 this.hasTouchScreen = (function() {
239 if (window.PointerEvent && ("maxTouchPoints" in navigator)) {
240 if (navigator.maxTouchPoints > 0) {
241 return true;
242 }
243 } else {
244 if (window.matchMedia && window.matchMedia("(any-pointer:coarse)").matches) {
245 return true;
246 } else if (window.TouchEvent || ("ontouchstart" in window)) {
247 return true;
248 }
249 }
250 return false;
251 })();
252 this.canvas = this.createElement("canvas");
253 this.canvas.classList.add("ejs_canvas");
254 this.videoRotation = ([0, 1, 2, 3].includes(this.config.videoRotation)) ? this.config.videoRotation : this.preGetSetting("videoRotation") || 0;
255 this.videoRotationChanged = false;
256 this.capture = this.capture || {};
257 this.capture.photo = this.capture.photo || {};
258 this.capture.photo.source = ["canvas", "retroarch"].includes(this.capture.photo.source) ? this.capture.photo.source : "canvas";
259 this.capture.photo.format = (typeof this.capture.photo.format === "string") ? this.capture.photo.format : "png";

Callers

nothing calls this directly

Calls 13

initControlVarsMethod · 0.95
checkForUpdatesMethod · 0.95
buildButtonOptionsMethod · 0.95
preGetSettingMethod · 0.95
setElementsMethod · 0.95
setColorMethod · 0.95
setupAdsMethod · 0.95
createElementMethod · 0.95
bindListenersMethod · 0.95
onMethod · 0.95
createStartButtonMethod · 0.95
handleResizeMethod · 0.95

Tested by

no test coverage detected