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
100 lines
3.1 KiB
JavaScript
100 lines
3.1 KiB
JavaScript
/*==============================================================================
|
|
Init
|
|
==============================================================================*/
|
|
$.Bullet = function( opt ) {
|
|
for( var k in opt ) {
|
|
this[k] = opt[k];
|
|
}
|
|
this.enemiesHit = [];
|
|
this.inView = 0;
|
|
$.particleEmitters.push( new $.ParticleEmitter( {
|
|
x: this.x,
|
|
y: this.y,
|
|
count: 1,
|
|
spawnRange: 1,
|
|
friction: 0.75,
|
|
minSpeed: 2,
|
|
maxSpeed: 10,
|
|
minDirection: 0,
|
|
maxDirection: $.twopi,
|
|
hue: 0,
|
|
saturation: 0
|
|
} ) );
|
|
};
|
|
|
|
/*==============================================================================
|
|
Update
|
|
==============================================================================*/
|
|
$.Bullet.prototype.update = function( i ) {
|
|
/*==============================================================================
|
|
Apply Forces
|
|
==============================================================================*/
|
|
this.x += Math.cos( this.direction ) * ( this.speed * $.dt );
|
|
this.y += Math.sin( this.direction ) * ( this.speed * $.dt );
|
|
this.ex = this.x - Math.cos( this.direction ) * this.size;
|
|
this.ey = this.y - Math.sin( this.direction ) * this.size;
|
|
|
|
/*==============================================================================
|
|
Check Collisions
|
|
==============================================================================*/
|
|
var ei = $.enemies.length;
|
|
while( ei-- ) {
|
|
var enemy = $.enemies[ ei ];
|
|
if( $.util.distance( this.x, this.y, enemy.x, enemy.y ) <= enemy.radius ) {
|
|
if( this.enemiesHit.indexOf( enemy.index ) == -1 ){
|
|
$.particleEmitters.push( new $.ParticleEmitter( {
|
|
x: this.x,
|
|
y: this.y,
|
|
count: Math.floor( $.util.rand( 1, 4 ) ),
|
|
spawnRange: 0,
|
|
friction: 0.85,
|
|
minSpeed: 5,
|
|
maxSpeed: 12,
|
|
minDirection: ( this.direction - $.pi ) - $.pi / 5,
|
|
maxDirection: ( this.direction - $.pi ) + $.pi / 5,
|
|
hue: enemy.hue
|
|
} ) );
|
|
|
|
this.enemiesHit.push( enemy.index );
|
|
enemy.receiveDamage( ei, this.damage );
|
|
|
|
if( this.enemiesHit.length > 3 ) {
|
|
$.bullets.splice( i, 1 );
|
|
}
|
|
}
|
|
if( !this.piercing ) {
|
|
$.bullets.splice( i, 1 );
|
|
}
|
|
}
|
|
}
|
|
|
|
/*==============================================================================
|
|
Lock Bounds
|
|
==============================================================================*/
|
|
if( !$.util.pointInRect( this.ex, this.ey, 0, 0, $.ww, $.wh ) ) {
|
|
$.bullets.splice( i, 1 );
|
|
}
|
|
|
|
/*==============================================================================
|
|
Update View
|
|
==============================================================================*/
|
|
if( $.util.pointInRect( this.ex, this.ey, -$.screen.x, -$.screen.y, $.cw, $.ch ) ) {
|
|
this.inView = 1;
|
|
} else {
|
|
this.inView = 0;
|
|
}
|
|
};
|
|
|
|
/*==============================================================================
|
|
Render
|
|
==============================================================================*/
|
|
$.Bullet.prototype.render = function( i ) {
|
|
if( this.inView ) {
|
|
$.ctxmg.beginPath();
|
|
$.ctxmg.moveTo( this.x, this.y );
|
|
$.ctxmg.lineTo( this.ex, this.ey );
|
|
$.ctxmg.lineWidth = this.lineWidth;
|
|
$.ctxmg.strokeStyle = this.strokeStyle;
|
|
$.ctxmg.stroke();
|
|
}
|
|
}; |