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
109 lines
2.5 KiB
CoffeeScript
109 lines
2.5 KiB
CoffeeScript
###
|
|
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>
|
|
###
|
|
class TouchController
|
|
|
|
@isCompatible: ->
|
|
return ('ontouchstart' of 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
|
|
###
|
|
constructor: (@dom, @stickMargin=200, @buttonCallback=null) ->
|
|
@active = true
|
|
@touches = null
|
|
@stickID = -1
|
|
@stickPos = new Vec2(0, 0)
|
|
@stickStartPos = new Vec2(0, 0)
|
|
@stickVector = new Vec2(0, 0)
|
|
|
|
@dom.addEventListener('touchstart', ((e)=> @touchStart(e)), false)
|
|
@dom.addEventListener('touchmove', ((e)=> @touchMove(e)), false)
|
|
@dom.addEventListener('touchend', ((e)=> @touchEnd(e)), false)
|
|
|
|
###
|
|
@private
|
|
###
|
|
touchStart: (event) ->
|
|
return if not @active
|
|
for touch in event.changedTouches
|
|
if @stickID < 0 and touch.clientX < @stickMargin
|
|
@stickID = touch.identifier
|
|
@stickStartPos.set(touch.clientX, touch.clientY)
|
|
@stickPos.copy(@stickStartPos)
|
|
@stickVector.set(0, 0)
|
|
continue
|
|
else
|
|
@buttonCallback?(on, touch, event)
|
|
@touches = event.touches
|
|
false
|
|
|
|
###
|
|
@private
|
|
###
|
|
touchMove: (event) ->
|
|
event.preventDefault()
|
|
return if not @active
|
|
for touch in event.changedTouches
|
|
if @stickID is touch.identifier and touch.clientX < @stickMargin
|
|
@stickPos.set(touch.clientX, touch.clientY)
|
|
@stickVector.copy(@stickPos).substract(@stickStartPos)
|
|
break
|
|
@touches = event.touches
|
|
false
|
|
|
|
###
|
|
@private
|
|
###
|
|
touchEnd: (event) ->
|
|
return if not @active
|
|
@touches = event.touches
|
|
for touch in event.changedTouches
|
|
if @stickID is touch.identifier
|
|
@stickID = -1
|
|
@stickVector.set(0, 0)
|
|
break
|
|
else
|
|
@buttonCallback?(off, touch, event)
|
|
false
|
|
|
|
###
|
|
Internal class used for vector2
|
|
@class Vec2
|
|
@private
|
|
###
|
|
class Vec2
|
|
|
|
constructor: (@x = 0, @y = 0) ->
|
|
|
|
substract: (vec) ->
|
|
@x -= vec.x
|
|
@y -= vec.y
|
|
@
|
|
|
|
copy: (vec) ->
|
|
@x = vec.x
|
|
@y = vec.y
|
|
@
|
|
|
|
set: (x, y) ->
|
|
@x = x
|
|
@y = y
|
|
@
|
|
|
|
###
|
|
Exports
|
|
@package bkcore
|
|
###
|
|
exports = exports ? @
|
|
exports.bkcore ||= {}
|
|
exports.bkcore.controllers ||= {}
|
|
exports.bkcore.controllers.TouchController = TouchController |