new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
189 lines
4.6 KiB
JavaScript
189 lines
4.6 KiB
JavaScript
// Generated by CoffeeScript 1.7.1
|
|
|
|
/*
|
|
TouchController (stick + buttons) for touch devices
|
|
Based on the touch demo by Seb Lee-Delisle <http://seb.ly/>
|
|
|
|
@class bkcore.controllers.TouchController
|
|
@author Thibaut 'BKcore' Despoulain <http://bkcore.com>
|
|
*/
|
|
|
|
(function() {
|
|
var TouchController, Vec2, exports, _base;
|
|
|
|
TouchController = (function() {
|
|
TouchController.isCompatible = function() {
|
|
return 'ontouchstart' in document.documentElement;
|
|
};
|
|
|
|
|
|
/*
|
|
Creates a new TouchController
|
|
|
|
@param dom DOMElement The element that will listen to touch events
|
|
@param stickMargin int The left margin in px for stick detection
|
|
@param buttonCallback function Callback for non-stick touches
|
|
*/
|
|
|
|
function TouchController(dom, stickMargin, buttonCallback) {
|
|
this.dom = dom;
|
|
this.stickMargin = stickMargin != null ? stickMargin : 200;
|
|
this.buttonCallback = buttonCallback != null ? buttonCallback : null;
|
|
this.active = true;
|
|
this.touches = null;
|
|
this.stickID = -1;
|
|
this.stickPos = new Vec2(0, 0);
|
|
this.stickStartPos = new Vec2(0, 0);
|
|
this.stickVector = new Vec2(0, 0);
|
|
this.dom.addEventListener('touchstart', ((function(_this) {
|
|
return function(e) {
|
|
return _this.touchStart(e);
|
|
};
|
|
})(this)), false);
|
|
this.dom.addEventListener('touchmove', ((function(_this) {
|
|
return function(e) {
|
|
return _this.touchMove(e);
|
|
};
|
|
})(this)), false);
|
|
this.dom.addEventListener('touchend', ((function(_this) {
|
|
return function(e) {
|
|
return _this.touchEnd(e);
|
|
};
|
|
})(this)), false);
|
|
}
|
|
|
|
|
|
/*
|
|
@private
|
|
*/
|
|
|
|
TouchController.prototype.touchStart = function(event) {
|
|
var touch, _i, _len, _ref;
|
|
if (!this.active) {
|
|
return;
|
|
}
|
|
_ref = event.changedTouches;
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
touch = _ref[_i];
|
|
if (this.stickID < 0 && touch.clientX < this.stickMargin) {
|
|
this.stickID = touch.identifier;
|
|
this.stickStartPos.set(touch.clientX, touch.clientY);
|
|
this.stickPos.copy(this.stickStartPos);
|
|
this.stickVector.set(0, 0);
|
|
continue;
|
|
} else {
|
|
if (typeof this.buttonCallback === "function") {
|
|
this.buttonCallback(true, touch, event);
|
|
}
|
|
}
|
|
}
|
|
this.touches = event.touches;
|
|
return false;
|
|
};
|
|
|
|
|
|
/*
|
|
@private
|
|
*/
|
|
|
|
TouchController.prototype.touchMove = function(event) {
|
|
var touch, _i, _len, _ref;
|
|
event.preventDefault();
|
|
if (!this.active) {
|
|
return;
|
|
}
|
|
_ref = event.changedTouches;
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
touch = _ref[_i];
|
|
if (this.stickID === touch.identifier && touch.clientX < this.stickMargin) {
|
|
this.stickPos.set(touch.clientX, touch.clientY);
|
|
this.stickVector.copy(this.stickPos).substract(this.stickStartPos);
|
|
break;
|
|
}
|
|
}
|
|
this.touches = event.touches;
|
|
return false;
|
|
};
|
|
|
|
|
|
/*
|
|
@private
|
|
*/
|
|
|
|
TouchController.prototype.touchEnd = function(event) {
|
|
var touch, _i, _len, _ref;
|
|
if (!this.active) {
|
|
return;
|
|
}
|
|
this.touches = event.touches;
|
|
_ref = event.changedTouches;
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
touch = _ref[_i];
|
|
if (this.stickID === touch.identifier) {
|
|
this.stickID = -1;
|
|
this.stickVector.set(0, 0);
|
|
break;
|
|
} else {
|
|
if (typeof this.buttonCallback === "function") {
|
|
this.buttonCallback(false, touch, event);
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
|
|
return TouchController;
|
|
|
|
})();
|
|
|
|
|
|
/*
|
|
Internal class used for vector2
|
|
@class Vec2
|
|
@private
|
|
*/
|
|
|
|
Vec2 = (function() {
|
|
function Vec2(x, y) {
|
|
this.x = x != null ? x : 0;
|
|
this.y = y != null ? y : 0;
|
|
}
|
|
|
|
Vec2.prototype.substract = function(vec) {
|
|
this.x -= vec.x;
|
|
this.y -= vec.y;
|
|
return this;
|
|
};
|
|
|
|
Vec2.prototype.copy = function(vec) {
|
|
this.x = vec.x;
|
|
this.y = vec.y;
|
|
return this;
|
|
};
|
|
|
|
Vec2.prototype.set = function(x, y) {
|
|
this.x = x;
|
|
this.y = y;
|
|
return this;
|
|
};
|
|
|
|
return Vec2;
|
|
|
|
})();
|
|
|
|
|
|
/*
|
|
Exports
|
|
@package bkcore
|
|
*/
|
|
|
|
exports = exports != null ? exports : this;
|
|
|
|
exports.bkcore || (exports.bkcore = {});
|
|
|
|
(_base = exports.bkcore).controllers || (_base.controllers = {});
|
|
|
|
exports.bkcore.controllers.TouchController = TouchController;
|
|
|
|
}).call(this);
|