Lucas Kent e39465ad2f Changes to be committed:
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
2022-11-02 08:40:01 -04:00

118 lines
2.2 KiB
CoffeeScript

###
new Date().getTime() wrapper to use as timer.
@class bkcore.Timer
@author Thibaut 'BKcore' Despoulain <http://bkcore.com>
###
class Timer
###
Creates a new timer, inactive by default.
Call Timer.start() to activate.
###
constructor: ()->
@time =
start: 0
current: 0
previous: 0
elapsed: 0
delta: 0
@active = false
###
Starts/restarts the timer.
###
start: ()->
now = (new Date).getTime()
@time.start = now
@time.current = now
@time.previous = now
@time.elapsed = 0
@time.delta = 0
@active = true
###
Pauses(true)/Unpauses(false) the timer.
@param bool Do pause
###
pause: (doPause)->
@active = not doPause
###
Update method to be called inside a RAF loop
###
update: ()->
if not @active then return
now = (new Date).getTime()
@time.current = now
@time.elapsed = @time.current - @time.start
@time.delta = now - @time.previous
@time.previous = now
###
Returns a formatted version of the current elapsed time using msToTime().
###
getElapsedTime: ()->
return @constructor.msToTime(@time.elapsed)
###
Formats a millisecond integer into a h/m/s/ms object
@param x int In milliseconds
@return Object{h,m,s,ms}
###
@msToTime: (t)->
ms = t%1000
s = Math.floor((t/1000)%60)
m = Math.floor((t/60000)%60)
h = Math.floor(t/3600000)
return {h:h, m:m, s:s, ms,ms}
###
Formats a millisecond integer into a h/m/s/ms object with prefix zeros
@param x int In milliseconds
@return Object<string>{h,m,s,ms}
###
@msToTimeString: (t)->
time = @msToTime(t)
time.h = @zfill(time.h, 2)
time.m = @zfill(time.m, 2)
time.s = @zfill(time.s, 2)
time.ms = @zfill(time.ms, 4)
return time
###
Convert given integer to string and fill with heading zeros
@param num int Number to convert/fill
@param size int Desired string size
###
@zfill: (num, size)->
len = size - num.toString().length
return if len > 0 then new Array(len+1).join('0') + num else num.toString()
###
Exports
@package bkcore
###
exports = exports ? @
exports.bkcore ||= {}
exports.bkcore.Timer = Timer