+
+
-
Click/Touch to continue.
-
-
-
Code
-
Concept and Development
Thibaut Despoulain (BKcore)
-
Contributors
townxelliot
mahesh.kk
-
Technologies
WebGL
JavaScript
CoffeeScript
Three.js
LeapMotion
-
Graphics
-
HexMKI base model
Charnel
-
Track texture
Nobiax
-
Click anywhere to continue.
+
Race Completed!
+
-
-
-
-
+
-
-
-
-
-
-
-
@@ -125,5 +138,28 @@
Click anywhere to continue.
+
diff --git a/launch.js b/launch.js
index 92611d2d..0282cb7c 100644
--- a/launch.js
+++ b/launch.js
@@ -1,116 +1,76 @@
-// Generated by CoffeeScript 1.7.1
(function() {
- var $, a, defaultControls, getWebGL, hasWebGL, init, s, u, _fn, _i, _len;
+ var $ = function(_) { return document.getElementById(_); };
+ var isTelegram = typeof Telegram !== 'undefined';
- $ = function(_) {
- return document.getElementById(_);
- };
-
- init = function(controlType, quality, hud, godmode) {
- var hexGL, progressbar;
- hexGL = new bkcore.hexgl.HexGL({
+ init = function(quality) {
+ var width = isTelegram ? Telegram.WebApp.viewportWidth : window.innerWidth;
+ var height = isTelegram ? Telegram.WebApp.viewportHeight : window.innerHeight;
+
+ var hexGL = new bkcore.hexgl.HexGL({
document: document,
- width: window.innerWidth,
- height: window.innerHeight,
+ width: width,
+ height: height,
container: $('main'),
overlay: $('overlay'),
gameover: $('step-5'),
quality: quality,
difficulty: 0,
- hud: hud === 1,
- controlType: controlType,
- godmode: godmode,
+ hud: true,
+ controlType: 1, // TOUCH
+ godmode: false,
track: 'Cityscape'
});
+
window.hexGL = hexGL;
- progressbar = $('progressbar');
- return hexGL.load({
+ var progressbar = $('progressbar');
+
+ hexGL.load({
onLoad: function() {
- console.log('LOADED.');
hexGL.init();
- $('step-3').style.display = 'none';
- $('step-4').style.display = 'block';
- return hexGL.start();
- },
- onError: function(s) {
- return console.error("Error loading " + s + ".");
+ hexGL.start();
},
- onProgress: function(p, t, n) {
- console.log("LOADED " + t + " : " + n + " ( " + p.loaded + " / " + p.total + " ).");
- return progressbar.style.width = "" + (p.loaded / p.total * 100) + "%";
+ onProgress: function(p) {
+ progressbar.style.width = (p.loaded / p.total * 100) + "%";
}
});
};
- u = bkcore.Utils.getURLParameter;
-
- defaultControls = bkcore.Utils.isTouchDevice() ? 1 : 0;
-
- s = [['controlType', ['KEYBOARD', 'TOUCH', 'LEAP MOTION CONTROLLER', 'GAMEPAD'], defaultControls, defaultControls, 'Controls: '], ['quality', ['LOW', 'MID', 'HIGH', 'VERY HIGH'], 3, 3, 'Quality: '], ['hud', ['OFF', 'ON'], 1, 1, 'HUD: '], ['godmode', ['OFF', 'ON'], 0, 1, 'Godmode: ']];
-
- _fn = function(a) {
- var e, f, _ref;
- a[3] = (_ref = u(a[0])) != null ? _ref : a[2];
- e = $("s-" + a[0]);
- (f = function() {
- return e.innerHTML = a[4] + a[1][a[3]];
- })();
- return e.onclick = function() {
- return f(a[3] = (a[3] + 1) % a[1].length);
- };
- };
- for (_i = 0, _len = s.length; _i < _len; _i++) {
- a = s[_i];
- _fn(a);
+ if (isTelegram) {
+ Telegram.WebApp.ready();
+ Telegram.WebApp.expand();
+ Telegram.WebApp.MainButton.hide();
}
- $('step-2').onclick = function() {
- $('step-2').style.display = 'none';
- $('step-3').style.display = 'block';
- return init(s[0][3], s[1][3], s[2][3], s[3][3]);
- };
+ // Автозапуск с оптимальными настройками
+ setTimeout(function() {
+ $('progress-container').style.display = 'block';
+ init(1); // MEDIUM quality
+ }, 500);
$('step-5').onclick = function() {
- return window.location.reload();
- };
-
- $('s-credits').onclick = function() {
- $('step-1').style.display = 'none';
- return $('credits').style.display = 'block';
- };
-
- $('credits').onclick = function() {
- $('step-1').style.display = 'block';
- return $('credits').style.display = 'none';
+ if(isTelegram) {
+ Telegram.WebApp.showPopup({
+ title: 'Game Over',
+ message: 'Restart the game?',
+ buttons: [{ type: 'ok' }, { type: 'cancel' }]
+ }, function(btnId) {
+ if(btnId === 'ok') window.location.reload();
+ });
+ } else {
+ window.location.reload();
+ }
};
- hasWebGL = function() {
- var canvas, gl;
- gl = null;
- canvas = document.createElement('canvas');
+ // Проверка WebGL
+ var hasWebGL = function() {
try {
- gl = canvas.getContext("webgl");
- } catch (_error) {}
- if (gl == null) {
- try {
- gl = canvas.getContext("experimental-webgl");
- } catch (_error) {}
- }
- return gl != null;
+ var canvas = document.createElement('canvas');
+ return !!window.WebGLRenderingContext &&
+ (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));
+ } catch(e) { return false; }
};
if (!hasWebGL()) {
- getWebGL = $('start');
- getWebGL.innerHTML = 'WebGL is not supported!';
- getWebGL.onclick = function() {
- return window.location.href = 'http://get.webgl.org/';
- };
- } else {
- $('start').onclick = function() {
- $('step-1').style.display = 'none';
- $('step-2').style.display = 'block';
- return $('step-2').style.backgroundImage = "url(css/help-" + s[0][3] + ".png)";
- };
+ $('progress-container').innerHTML = '
WebGL not supported!
';
}
-
-}).call(this);
+})();