Text_to_Speech/preview-templates/boot.js

420 lines
16 KiB
JavaScript
Raw Permalink Normal View History

2022-01-21 09:50:26 +00:00
(function () {
'use strict';
// init device resolutions
var devices = [
{ name: 'Apple iPhone 5', width: 320, height: 568, ratio: 2 },
{ name: 'Apple iPhone 6', width: 375, height: 667, ratio: 2 },
{ name: 'Apple iPhone 6 Plus', width: 414, height: 736, ratio: 3 },
{ name: 'Apple iPhone 7', width: 375, height: 667, ratio: 2 },
{ name: 'Apple iPhone 7 Plus', width: 414, height: 736, ratio: 3 },
{ name: 'Apple iPhone X', width: 375, height: 812, ratio: 3 },
{ name: 'Apple iPad', width: 1024, height: 768, ratio: 2 },
{ name: 'Apple iPad Air 2', width: 768, height: 1024, ratio: 2 },
{ name: 'Apple iPad Pro 10.5-inch', width: 834, height: 1112, ratio: 2 },
{ name: 'Apple iPad Pro 12.9-inch', width: 1024, height: 1366, ratio: 2 },
{ name: 'Huawei P9', width: 540, height: 960, ratio: 2 },
{ name: 'Huawei Mate9 Pro', width: 720, height: 1280, ratio: 2 },
{ name: 'Google Nexus 5', width: 360, height: 640, ratio: 3 },
{ name: 'Google Nexus 5X', width: 411, height: 731, ratio: 2.625 },
{ name: 'Google Nexus 6', width: 412, height: 732, ratio: 3.5 },
{ name: 'Google Nexus 7', width: 960, height: 600, ratio: 2 },
];
function setCSSChecked (element, checked) {
if (checked) {
element.classList.add('checked');
}
else {
element.classList.remove('checked');
}
return checked;
}
function refreshPauseBtnState () {
if (cc.game.isPaused()) {
btnPause.style.borderTopRightRadius = '0';
btnPause.style.borderBottomRightRadius = '0';
btnStep.style.borderTopLeftRadius = '0';
btnStep.style.borderBottomLeftRadius = '0';
btnStep.style.display = '';
setCSSChecked(btnPause, true);
}
else {
btnPause.style.borderTopRightRadius = '';
btnPause.style.borderBottomRightRadius = '';
btnStep.style.borderTopLeftRadius = '';
btnStep.style.borderBottomLeftRadius = '';
btnStep.style.display = 'none';
setCSSChecked(btnPause, false);
}
}
var isMobile = function () {
var check = false;
(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);
return check;
};
// init toolbar
// =======================
var designWidth = _CCSettings.designWidth;
var designHeight = _CCSettings.designHeight;
var rotated = false;
// var paused = false;
var canvas = document.getElementById('GameCanvas');
var btnRotate = document.getElementById('btn-rotate');
var optsDevice = document.getElementById('opts-device');
var btnPause = document.getElementById('btn-pause');
var btnStep = document.getElementById('btn-step');
var optsDebugMode = document.getElementById('opts-debug-mode');
var btnShowFPS = document.getElementById('btn-show-fps');
var inputSetFPS = document.getElementById('input-set-fps');
var btnRecompile = document.getElementById('btn-recompile');
devices.forEach( function ( info, idx ) {
var opt = document.createElement('option');
opt.value = idx+1;
opt.text = info.name;
optsDevice.add( opt, null );
});
// coockie
// =======================
function setCookie (name, value, days) {
days = days || 30; //cookie will be saved for 30 days
var expires = new Date();
expires.setTime(expires.getTime() + days*24*60*60*1000);
document.cookie = name + '='+ encodeURIComponent(value) + ';expires=' + expires.toGMTString();
}
function getCookie (name) {
var arr = document.cookie.match(new RegExp('(^| )' + name + '=([^;]*)(;|$)'));
if(arr !== null) return (arr[2]);
return null;
}
function isFullScreen () {
var toolbar = document.getElementsByClassName('toolbar')[0];
return getComputedStyle(toolbar).display === 'none';
}
function getEmulatedScreenSize () {
var w, h;
var idx = optsDevice.value;
if ( idx === '0' ) {
w = designWidth;
h = designHeight;
}
else {
var info = devices[parseInt(idx) - 1];
w = info.width;
h = info.height;
}
return {
width: rotated ? h : w,
height: rotated ? w : h
};
}
function showSplash () {
var LOGO_IMG_L_W = 416;
var LOGO_IMG_L_H = 87;
var LOGO_SIZE = 0.4;
var size = isFullScreen() ? document.documentElement.getBoundingClientRect() : getEmulatedScreenSize();
var splash = document.getElementById('splash');
var progressBar = splash.querySelector('.progress-bar span');
splash.style.width = size.width + 'px';
splash.style.height = size.height + 'px';
var marginTop;
if (size.width < size.height) {
// portrait
splash.style.backgroundImage = 'url("app/editor/static/img/logo_portrait.png")';
splash.style.backgroundSize = '30%';
marginTop = (size.height - size.width * (1 - LOGO_SIZE)) / 2;
}
else {
var logoDisplayH = size.width * LOGO_SIZE / LOGO_IMG_L_W * LOGO_IMG_L_H;
marginTop = logoDisplayH / 2 * 1.47;
}
progressBar.parentElement.style.marginTop = marginTop + 'px';
splash.style.display = '';
progressBar.style.width = '0%';
var div = document.getElementById('GameDiv');
if (div) {
div.style.visibility = 'visible';
}
if ( !isMobile() ) {
// make the splash screen in center
canvas.width = size.width;
canvas.height = size.height;
}
}
// init options
function initPreviewOptions () {
var defaultDevice = getCookie('device');
var defaultRotate = getCookie('rotate');
var hasDefaultDevice = defaultDevice !== null;
var hasDefaultRotate = defaultRotate !== null;
if (hasDefaultDevice) {
optsDevice.value = parseInt(defaultDevice);
}
if (hasDefaultRotate && defaultRotate === 'true') {
rotated = !rotated;
setCSSChecked(btnRotate, rotated);
}
optsDebugMode.value = getCookie('debugMode') || '1';
setCSSChecked(btnShowFPS, getCookie('showFPS') === 'true');
inputSetFPS.value = '60';
showSplash();
}
initPreviewOptions();
window.onload = function () {
if (window.__quick_compile_engine__) {
window.__quick_compile_engine__.load(onload);
}
else {
onload();
}
};
function onload () {
// socket
// =======================
// jshint camelcase:false
var socket = window.__socket_io__();
socket.on('browser:reload', function () {
window.location.reload();
});
socket.on('browser:confirm-reload', function () {
var r = confirm( 'Reload?' );
if ( r ) {
window.location.reload();
}
});
function updateResolution () {
var size = isFullScreen() ? document.documentElement.getBoundingClientRect() : getEmulatedScreenSize();
var gameDiv = document.getElementById('GameDiv');
gameDiv.style.width = size.width + 'px';
gameDiv.style.height = size.height + 'px';
cc.view.setCanvasSize(size.width, size.height);
}
// init rotate button
btnRotate.addEventListener('click', function () {
rotated = !rotated;
setCSSChecked(btnRotate, rotated);
setCookie('rotate', rotated.toString());
updateResolution();
});
optsDevice.addEventListener( 'change', function () {
var idx = optsDevice.value;
setCookie('device', idx.toString());
updateResolution();
});
// init debug modes
optsDebugMode.addEventListener('change', function (event) {
var value = event.target.value;
setCookie('debugMode', value);
cc.debug._resetDebugSetting(parseInt(value));
});
// init pause button
btnPause.addEventListener('click', function () {
var shouldPause = !cc.game.isPaused();
if (shouldPause) {
cc.game.pause();
}
else {
cc.game.resume();
}
refreshPauseBtnState();
});
// init recompile button
btnRecompile.addEventListener('click', function () {
var url = window.location.href + 'update-db';
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
document.getElementById('recompiling').style.display = 'block';
}
};
xmlHttp.open("GET", url, true); // true for asynchronous
xmlHttp.send(null);
});
// init step button
btnStep.addEventListener('click', function () {
cc.game.step();
});
// init show fps, true by default
btnShowFPS.addEventListener('click', function () {
var show = !cc.debug.isDisplayStats();
cc.debug.setDisplayStats(show);
setCSSChecked(btnShowFPS, show);
setCookie('showFPS', show.toString());
});
// init set fps
inputSetFPS.addEventListener('change', function (event) {
var fps = parseInt(inputSetFPS.value);
if (isNaN(fps)) {
fps = 60;
inputSetFPS.value = fps.toString();
}
cc.game.setFrameRate(fps);
});
// init engine
// =======================
var engineInited = false;
if (isFullScreen()) {
window.addEventListener('resize', updateResolution);
}
var showFPS = getCookie('showFPS');
// FPS is on by default
showFPS = showFPS === null ? true : showFPS === 'true';
var onStart = function () {
// resize canvas
if (!isFullScreen()) {
updateResolution();
}
cc.view.enableRetina(true);
cc.view.resizeWithBrowserSize(true);
// Loading splash scene
var splash = document.getElementById('splash');
var progressBar = splash.querySelector('.progress-bar span');
showSplash();
cc.director.once(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function () {
splash.style.display = 'none';
checkEmptyScene();
});
cc.game.pause();
// init assets
engineInited = true;
cc.assetManager.loadAny({url: 'preview-scene.json', __isNative__: false }, null, function (finish, totalCount) {
var percent = 100 * finish / totalCount;
if (progressBar) {
progressBar.style.width = percent.toFixed(2) + '%';
}
}, function (err, sceneAsset) {
if (err) {
console.error(err.message, err.stack);
return;
}
var scene = sceneAsset.scene;
scene._name = sceneAsset._name;
// HACK: Change key to uuid from url
cc.assetManager.dependUtil._depends.add(scene._id, cc.assetManager.dependUtil._depends.get('preview-scene.json'));
cc.director.runSceneImmediate(scene, function () {
// play game
cc.game.resume();
});
});
// purge
//noinspection JSUnresolvedVariable
_CCSettings = undefined;
};
var option = {
id: canvas,
debugMode: parseInt(optsDebugMode.value),
showFPS: showFPS,
frameRate: parseInt(inputSetFPS.value),
groupList: _CCSettings.groupList,
collisionMatrix: _CCSettings.collisionMatrix,
};
cc.assetManager.init({
importBase: 'assets/others/import',
nativeBase: 'assets/others/native'
});
var RESOURCES = cc.AssetManager.BuiltinBundleName.RESOURCES;
var INTERNAL = cc.AssetManager.BuiltinBundleName.INTERNAL;
var MAIN = cc.AssetManager.BuiltinBundleName.MAIN;
var bundleRoot = [INTERNAL];
_CCSettings.hasResourcesBundle && bundleRoot.push(RESOURCES);
var count = 0;
function cb (err) {
if (err) return console.error(err);
count++;
if (count === bundleRoot.length + 1) {
cc.assetManager.loadBundle(MAIN, function (err) {
if (!err) cc.game.run(option, onStart);
});
}
}
// load plugins
cc.assetManager.loadScript(_CCSettings.jsList.map(function (x) { return '/plugins/' + x; }), cb);
// load bundles
for (var i = 0; i < bundleRoot.length; i++) {
cc.assetManager.loadBundle(bundleRoot[i], cb);
}
};
function checkEmptyScene () {
var scene = cc.director.getScene();
if (scene) {
if (scene.children.length > 1) {
return;
}
if (scene.children.length === 1) {
var node = scene.children[0];
if (node.children.length > 0) {
return;
}
if (node._components.length > 1) {
return;
}
if (node._components.length > 0 && !(node._components[0] instanceof cc.Canvas)) {
return;
}
}
}
document.getElementById('bulletin').style.display = 'block';
document.getElementById('sceneIsEmpty').style.display = 'block';
}
})();