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
122 lines
3.5 KiB
JavaScript
122 lines
3.5 KiB
JavaScript
/*==============================================================================
|
|
Init
|
|
==============================================================================*/
|
|
$.Powerup = 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: 'top',
|
|
valign: 'left',
|
|
scale: 1,
|
|
snap: 0,
|
|
render: 0
|
|
} );
|
|
this.hpadding = 8;
|
|
this.vpadding = 8;
|
|
this.width = text.width + this.hpadding * 2;
|
|
this.height = text.height + this.vpadding * 2;
|
|
this.x = this.x - this.width / 2;
|
|
this.y = this.y - this.height / 2;
|
|
this.direction = $.util.rand( 0, $.twopi );
|
|
this.speed = $.util.rand( 0.5, 2 );
|
|
};
|
|
|
|
/*==============================================================================
|
|
Update
|
|
==============================================================================*/
|
|
$.Powerup.prototype.update = function( i ) {
|
|
/*==============================================================================
|
|
Apply Forces
|
|
==============================================================================*/
|
|
this.x += Math.cos( this.direction ) * this.speed * $.dt;
|
|
this.y += Math.sin( this.direction ) * this.speed * $.dt;
|
|
|
|
/*==============================================================================
|
|
Check Bounds
|
|
==============================================================================*/
|
|
if( !$.util.rectInRect( this.x, this.y, this.width, this.height, 0, 0, $.ww, $.wh ) ){
|
|
$.powerups.splice( i, 1 );
|
|
}
|
|
|
|
/*==============================================================================
|
|
Check Collection Collision
|
|
==============================================================================*/
|
|
if( $.hero.life > 0 && $.util.arcIntersectingRect( $.hero.x, $.hero.y, $.hero.radius + 2, this.x, this.y, this.width, this.height ) ){
|
|
$.audio.play( 'powerup' );
|
|
$.powerupTimers[ this.type ] = 300;
|
|
$.particleEmitters.push( new $.ParticleEmitter( {
|
|
x: this.x + this.width / 2,
|
|
y: this.y + this.height / 2,
|
|
count: 15,
|
|
spawnRange: 0,
|
|
friction: 0.85,
|
|
minSpeed: 2,
|
|
maxSpeed: 15,
|
|
minDirection: 0,
|
|
maxDirection: $.twopi,
|
|
hue: 0,
|
|
saturation: 0
|
|
} ) );
|
|
$.powerups.splice( i, 1 );
|
|
$.powerupsCollected++;
|
|
}
|
|
};
|
|
|
|
/*==============================================================================
|
|
Render
|
|
==============================================================================*/
|
|
$.Powerup.prototype.render = function( i ) {
|
|
|
|
$.ctxmg.fillStyle = '#000';
|
|
$.ctxmg.fillRect( this.x - 2, this.y - 2, this.width + 4, this.height + 4 );
|
|
$.ctxmg.fillStyle = '#555';
|
|
$.ctxmg.fillRect( this.x - 1, this.y - 1, this.width + 2, this.height + 2 );
|
|
|
|
$.ctxmg.fillStyle = '#111';
|
|
$.ctxmg.fillRect( this.x, this.y, this.width, this.height );
|
|
|
|
$.ctxmg.beginPath();
|
|
$.text( {
|
|
ctx: $.ctxmg,
|
|
x: this.x + this.hpadding,
|
|
y: this.y + this.vpadding + 1,
|
|
text: this.title,
|
|
hspacing: 1,
|
|
vspacing: 0,
|
|
halign: 'top',
|
|
valign: 'left',
|
|
scale: 1,
|
|
snap: 0,
|
|
render: true
|
|
} );
|
|
$.ctxmg.fillStyle = '#000';
|
|
$.ctxmg.fill();
|
|
|
|
$.ctxmg.beginPath();
|
|
$.text( {
|
|
ctx: $.ctxmg,
|
|
x: this.x + this.hpadding,
|
|
y: this.y + this.vpadding,
|
|
text: this.title,
|
|
hspacing: 1,
|
|
vspacing: 0,
|
|
halign: 'top',
|
|
valign: 'left',
|
|
scale: 1,
|
|
snap: 0,
|
|
render: true
|
|
} );
|
|
$.ctxmg.fillStyle = 'hsl(' + this.hue + ', ' + this.saturation + '%, ' + this.lightness + '%)';
|
|
$.ctxmg.fill();
|
|
|
|
$.ctxmg.fillStyle = 'hsla(0, 0%, 100%, 0.2)';
|
|
$.ctxmg.fillRect( this.x, this.y, this.width, this.height / 2 );
|
|
|
|
} |