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

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();
}
};