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

166 lines
2.9 KiB
JavaScript

/*!
* @class bkcore.Timer
*
* new Date().getTime() wrapper to use as timers.
*
* @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
*/
/**
* RAF shim
*/
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
/*!
* @package bkcore
*/
var bkcore = bkcore || {};
/*!
* Creates a new timer, inactive by default.
* Call Timer.start() to activate.
*/
bkcore.Timer = function()
{
this.time = {
start: 0,
current: 0,
previous: 0,
elapsed: 0,
delta: 0
}
this.active = false;
}
/*!
* Starts/restarts the timer.
*/
bkcore.Timer.prototype.start = function()
{
var now = new Date().getTime();
this.time.start = now;
this.time.current = now;
this.time.previous = now;
this.time.elapsed = 0;
this.time.delta = 0;
this.active = true;
}
/*!
* Restarts timer, returning last ms tick
*/
bkcore.Timer.prototype.restart = function()
{
var now = new Date().getTime();
var e = now - this.time.start;
this.time.start = now;
this.time.current = now;
this.time.previous = now;
this.time.elapsed = 0;
this.time.delta = 0;
this.active = true;
return e;
}
/*!
* Pauses(true)/Unpauses(false) the timer.
*
* @param bool Do pause
*/
bkcore.Timer.prototype.pause = function(bool)
{
this.active = !bool;
}
/*!
* Update method to be called inside a RAF loop
*/
bkcore.Timer.prototype.update = function()
{
if(!this.active) return;
var now = new Date().getTime();
this.time.current = now;
this.time.elapsed = this.time.current - this.time.start;
this.time.delta = now - this.time.previous;
this.time.previous = now;
return this.time.elapsed;
}
/*!
* Returns elapsed milliseconds
*/
bkcore.Timer.prototype.getElapsed = function()
{
return this.time.elapsed;
}
/*!
* Returns a formatted version of the current elapsed time using msToTime().
*
*
*/
bkcore.Timer.prototype.getElapsedTime = function()
{
return bkcore.Timer.msToTime(this.time.elapsed);
}
/*!
* Formats a millisecond integer into a h/m/s/ms object
*
* @param x int In milliseconds
* @return Object{h,m,s,ms}
*/
bkcore.Timer.msToTime = function(t)
{
var ms, s, m, h;
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}
*/
bkcore.Timer.msToTimeString = function(t)
{
var ms, s, m, h;
ms = t%1000;
if(ms < 10) ms = "00"+ms;
else if(ms < 100) ms = "0"+ms;
s = Math.floor((t/1000)%60);
if(s < 10) s = "0"+s;
m = Math.floor((t/60000)%60);
h = Math.floor((t/3600000));
return {h:h, m:m, s:s, ms:ms};
}