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

103 lines
3.3 KiB
JavaScript

/*==============================================================================
Init
==============================================================================*/
$.Button = function( opt ) {
for( var k in opt ) {
this[k] = opt[k];
}
var text = $.text( {
ctx: $.ctxmg,
x: 0,
y: 0,
text: this.title,
hspacing: 1,
vspacing: 0,
halign: 'center',
valign: 'center',
scale: this.scale,
snap: 1,
render: 0
} );
this.width = this.lockedWidth;
this.height = this.lockedHeight;
this.sx = this.x - this.width / 2;
this.sy = this.y - this.height / 2;
this.cx = this.x;
this.cy = this.y;
this.ex = this.x + this.width / 2;
this.ey = this.y + this.height / 2;
this.hovering = 0;
this.ohovering = 0;
};
/*==============================================================================
Update
==============================================================================*/
$.Button.prototype.update = function( i ) {
/*==============================================================================
Check Hover State
==============================================================================*/
if( $.util.pointInRect( $.mouse.sx, $.mouse.sy, this.sx, this.sy, this.width, this.height ) ){
this.hovering = 1;
if( !this.ohovering ) {
$.audio.play( 'hover' );
}
} else {
this.hovering = 0;
}
this.ohovering = this.hovering;
/*==============================================================================
Check Click
==============================================================================*/
if( this.hovering && $.mouse.down ) {
$.audio.play( 'click' );
this.action();
}
};
/*==============================================================================
Render
==============================================================================*/
$.Button.prototype.render = function( i ) {
if( this.hovering ) {
$.ctxmg.fillStyle = 'hsla(0, 0%, 10%, 1)';
$.ctxmg.fillRect( Math.floor( this.sx ), Math.floor( this.sy ), this.width, this.height );
$.ctxmg.strokeStyle = 'hsla(0, 0%, 0%, 1)';
$.ctxmg.strokeRect( Math.floor( this.sx ) + 0.5, Math.floor( this.sy ) + 0.5, this.width - 1, this.height - 1, 1 );
$.ctxmg.strokeStyle = 'hsla(0, 0%, 100%, 0.2)';
$.ctxmg.strokeRect( Math.floor( this.sx ) + 1.5, Math.floor( this.sy ) + 1.5, this.width - 3, this.height - 3, 1 );
} else {
$.ctxmg.fillStyle = 'hsla(0, 0%, 0%, 1)';
$.ctxmg.fillRect( Math.floor( this.sx ), Math.floor( this.sy ), this.width, this.height );
$.ctxmg.strokeStyle = 'hsla(0, 0%, 0%, 1)';
$.ctxmg.strokeRect( Math.floor( this.sx ) + 0.5, Math.floor( this.sy ) + 0.5, this.width - 1, this.height - 1, 1 );
$.ctxmg.strokeStyle = 'hsla(0, 0%, 100%, 0.15)';
$.ctxmg.strokeRect( Math.floor( this.sx ) + 1.5, Math.floor( this.sy ) + 1.5, this.width - 3, this.height - 3, 1 );
}
$.ctxmg.beginPath();
$.text( {
ctx: $.ctxmg,
x: this.cx,
y: this.cy,
text: this.title,
hspacing: 1,
vspacing: 0,
halign: 'center',
valign: 'center',
scale: this.scale,
snap: 1,
render: true
} );
$.ctxmg.fillStyle = 'hsla(0, 0%, 100%, 0.7)';
if( this.hovering ) {
$.ctxmg.fillStyle = 'hsla(0, 0%, 100%, 1)';
}
$.ctxmg.fill();
$.ctxmg.fillStyle = 'hsla(0, 0%, 100%, 0.07)';
$.ctxmg.fillRect( Math.floor( this.sx ) + 2, Math.floor( this.sy ) + 2, this.width - 4, Math.floor( ( this.height - 4 ) / 2 ) );
};