Path: blob/main/static/src/gs/public/flappybird/__start__.js
1338 views
(function () {1var CANVAS_ID = 'application-canvas';23var canvas, devices, app;45var createCanvas = function () {6canvas = document.createElement('canvas');7canvas.setAttribute('id', CANVAS_ID);8canvas.setAttribute('tabindex', 0);9// canvas.style.visibility = 'hidden';1011// Disable I-bar cursor on click+drag12canvas.onselectstart = function () { return false; };1314document.body.appendChild(canvas);1516return canvas;17};1819var createInputDevices = function (canvas) {20var devices = {21elementInput: new pc.ElementInput(canvas, {22useMouse: INPUT_SETTINGS.useMouse,23useTouch: INPUT_SETTINGS.useTouch24}),25keyboard: INPUT_SETTINGS.useKeyboard ? new pc.Keyboard(window) : null,26mouse: INPUT_SETTINGS.useMouse ? new pc.Mouse(canvas) : null,27gamepads: INPUT_SETTINGS.useGamepads ? new pc.GamePads() : null,28touch: INPUT_SETTINGS.useTouch && pc.platform.touch ? new pc.TouchDevice(canvas) : null29};3031return devices;32};3334var configureCss = function (fillMode, width, height) {35// Configure resolution and resize event36if (canvas.classList) {37canvas.classList.add('fill-mode-' + fillMode);38}3940// css media query for aspect ratio changes41var css = "@media screen and (min-aspect-ratio: " + width + "/" + height + ") {";42css += " #application-canvas.fill-mode-KEEP_ASPECT {";43css += " width: auto;";44css += " height: 100%;";45css += " margin: 0 auto;";46css += " }";47css += "}";4849// append css to style50if (document.head.querySelector) {51document.head.querySelector('style').innerHTML += css;52}53};5455var reflow = function () {56app.resizeCanvas(canvas.width, canvas.height);57canvas.style.width = '';58canvas.style.height = '';5960var fillMode = app._fillMode;6162if (fillMode == pc.FILLMODE_NONE || fillMode == pc.FILLMODE_KEEP_ASPECT) {63if ((fillMode == pc.FILLMODE_NONE && canvas.clientHeight < window.innerHeight) || (canvas.clientWidth / canvas.clientHeight >= window.innerWidth / window.innerHeight)) {64canvas.style.marginTop = Math.floor((window.innerHeight - canvas.clientHeight) / 2) + 'px';65} else {66canvas.style.marginTop = '';67}68}69};7071var displayError = function (html) {72var div = document.createElement('div');7374div.innerHTML = [75'<table style="background-color: #8CE; width: 100%; height: 100%;">',76' <tr>',77' <td align="center">',78' <div style="display: table-cell; vertical-align: middle;">',79' <div style="">' + html + '</div>',80' </div>',81' </td>',82' </tr>',83'</table>'84].join('\n');8586document.body.appendChild(div);87};8889canvas = createCanvas();90devices = createInputDevices(canvas);9192try {93app = new pc.Application(canvas, {94elementInput: devices.elementInput,95keyboard: devices.keyboard,96mouse: devices.mouse,97gamepads: devices.gamepads,98touch: devices.touch,99graphicsDeviceOptions: window.CONTEXT_OPTIONS,100assetPrefix: window.ASSET_PREFIX || "",101scriptPrefix: window.SCRIPT_PREFIX || "",102scriptsOrder: window.SCRIPTS || []103});104} catch (e) {105if (e instanceof pc.UnsupportedBrowserError) {106displayError('This page requires a browser that supports WebGL.<br/>' +107'<a href="http://get.webgl.org">Click here to find out more.</a>');108} else if (e instanceof pc.ContextCreationError) {109displayError("It doesn't appear your computer can support WebGL.<br/>" +110'<a href="http://get.webgl.org/troubleshooting/">Click here for more information.</a>');111} else {112displayError('Could not initialize application. Error: ' + e);113}114115return;116}117118app.configure(CONFIG_FILENAME, function (err) {119if (err) {120console.error(err);121}122123configureCss(app._fillMode, app._width, app._height);124reflow();125126window.addEventListener('resize', reflow, false);127window.addEventListener('orientationchange', reflow, false);128129app.preload(function (err) {130if (err) {131console.error(err);132}133134app.loadScene(SCENE_PATH, function (err, scene) {135if (err) {136console.error(err);137}138139app.start();140});141});142});143}());144145146