From 4786f57be66d04341ced3084583c14dd063da698 Mon Sep 17 00:00:00 2001 From: Erik Andersson Date: Sun, 3 Oct 2010 12:04:45 +0200 Subject: [PATCH] Fixed (a bit hackish) support for several crafts. This should some day be replaced with using only one canvas element and a loop when drawing crafts --- asteroids.html | 404 +++++++++++++++++++++++++++++++++++++++++++++++ asteroids.js | 86 +++++----- asteroids.min.js | 23 +-- 3 files changed, 465 insertions(+), 48 deletions(-) create mode 100644 asteroids.html diff --git a/asteroids.html b/asteroids.html new file mode 100644 index 0000000..75489dd --- /dev/null +++ b/asteroids.html @@ -0,0 +1,404 @@ + + + + kattMickis säger: - + + + + + + + + + + + +
+ + + +
+ + +

Average word of the day: your

+
Stupid website med stupid word of the day...
Jag tror att jag vill baka. Men mest av allt vill jag ha fiskbullar, lovar att jag fotar en vacker bild i imorgons ljus på mina fiskbullar med eventuell pennepasta (mest troligt idealmakaroner men det är lika underbart) så att alla får ta del av min livslånga kärlek och det menar jag på really, jag har ätit fiskbullar sen jag började äta fast mat.
Och för att ge mig själv lite mer kärlek så vill jag skriva att jag älskar den här bilden, allt i den! Baskern, posen och SÄRSKILT brillerna. Fotosnopp är ett underverk.
Kärlek(extra mycket)

kattMickis
+ +
+ +
+ + + + +

Give me an occupation or I shall run mad..

+

Om någon av mina läsare inte förstått det än så hänger mina rubriker oftast inte med någon del av själva inlägget i min blogg.


Jag vill så väldigt gärna ha likadana glasögon som John Lennon hade. Typ i rosa, lila eller grönt. Och så vill jag förståss ha ett par glasögon med fönsterglas som är större än de jag har. Som är mer som kvadrater än smala rektanglar, som har lite karaktär. Just nu får jag nöja mig med de jag har, riktiga glas är så dyrt. Jag kanske hittar min John Lennon's imorn när jag åker till staden med Lois Lane. Det är bra att jag åker ut imorn. Jag har varit alldeles för ockuperad vid internettet and such. Men det är okej, det är ju lov och ingen bryr sig alltför mycket.
Jag tycker om vatten, det gör mig kissnödig.
Kärlek
kattMickis
+ + +
+ + + + +

Fan vad snygg jag är.

+
Ibland behövs ingen flashig rubrik. Det räcker med att ge sig själv en rättfram självförtroendeboost.

Igår var det partaj, artonårspartaj, till idag. Det var superawesome och jag hittade några RG's. Vilket var mysigt och trevligt. Men nothing like home, right? Home... Mysigt var det i alla fall och när jag vilat mig efter diskandet (av alla tusen glas etc) fick jag ytterst delikata fiskbullar som äcklade mina vackra vegetariska vänner. I alla fall Jeanette som bara äter lax och Simon som inte äter fisk alls. Jag tror i och för sig att Linnea inte tyckte att det såg så fresh ut så jag tror inte att jag frestade henne heller. Nästa gång jag gör fiskbullar vill jag ha feta pennepastor istället för idealmakaroner. Se, jag varierar mig! Det var fel hjärtslag som vaknade bredvid mig idag.
Northanger Abbey är min nya favoritfilm. Jag har sett den tre gånger igår och idag tror jag. Jag sitter med datorn samtidigt, på det sättet gör det inget om jag kollar om den eftersom jag inte ser hela varje gång.
Jag vill ha fiskbullar. Med penne. Eller pizza. Jag tror att jag ska äta väldigt mycket mat innan lovet är slut.
Kärlek
kattMickis
+ + +
+ + + + +

The air is full of spices.

+
Jag vaknade klockan åtta för att inte göra någonting vettigt i en timme. Kära mor kommer och hämtar mig om trekvart och då bär det av för att få min vårtliknande utväxt som jag har mellan ögonen utvärderad. Dvs, kan de ta bort den på vårdcentralen eller måste de skicka en remiss till någon annan stans?
Jag började ett Jane Austen-maraton. Egentligen så tog jag inte med alla filmer av henne som jag har. Men två i alla fall. Och den ena såg jag inte klart på.

Filmtips
Jane Austen-baserat
Northanger Abbey
Sense and sensibility
Pride and prejudice

Shakespear
A midsummernight's dream (1999)

Varje gång jag hör, skriver, läser eller säger ordet 'tips' så hör jag Moas röst "Dagens tips, dagens tips".
Jag planerar att dra mig ifrån datorn nu, äta lite chokladflingor, tänka positivt och klä på mig.
Kärlek
kattMickis
+ + +
+ + + + +

Okej.. Godnatt.

+
Sov gott. Dröm sött. Hoppas att det värstavärstaVÄRSTA är glömt när du vaknar. Och när jag vaknar. Tänk på det dåliga när vi somnar.
Kärlek
kattMickis
+ +
+ + + + +

Ohja, jag kommer sakna dig babe.

+
(Gif'en är till Jeanette som fyllt 18 (i tisdags) och till Sandra (och alla ni andra) som är awesome. <3)



Det var det hemskaste av allt jag någonsin gjort. Och det vackraste av allt hemskt. Det var så.. Synkat, jag vet inte. Det finns liksom inget bra "göraslut". Men det här var fan det vackraste. Det var förståelse, kärlek, förhoppningar, sorg. Mycket sorg, tårar och snor. Och lite Ben & Jerry's.
Jag kan inte lyssna på Timo, kan inte kolla på mina bilder i mina dokument, kan inte tänka ordentligt. Har fysiskt ont ibland. Jobbigt att andas. Kan inte lyssna på Kent. Vill inte vara ensam men klarar mig bra ändå. Hade jag inte vetat att det är fel hade jag suttit på 524'an nu egentligen. Tar i mycket för att inte sms'a eller ringa.
Jag vältrar och vältrarsomfan. Jag vill veta hur han mår, hur han tänker och tycker. Vill prata med honom. Och jag hoppas och hoppas inte att han läser det här. Jag vet inte vad jag borde och inte borde. För att inte prata direkt med honom frågar jag Johan. Hur mår Erik?
Tänk på de dåliga stunderna, tänk på VARFÖR VI BESLUTADE SÅHÄR. Men jag älskar dig. Och även om vi inte är vi så var vi vi och det är som ärrad hud. Det försvinner liksom inte.
Kärlek
kattMickis
+ + +
+ + + + +

As usual... Casual.

+





Jag sitter som vanligt och fotar mig själv med macbooken när Erik inte är hemma. Jag antar att jag lägger upp bilder på internet för att söka kontakt med folk eller något. Känner mig ovanligt obestämd idag. Jag var säker på en sak men jag vet inte. Så kan det vara ibland.
(Och för er som inte ser så är det en kittykat på min tumme. :3)
Kärlek
kattMickis
+ + +
+ + + + +

I make acne look good

+
Lykke Li är en väldigt bra artist. Let it fall är väldigt bra.

I like it soft, I like it wet
I like my make up in a mess
so I cry hard, let it fall
and I won't stop until my tears are all shed


När man har en värdelös dag, skit har hänt och man mår allmänt dåligt. Eller när man är otroligt uttråkad och allt är bara piss. Vilken enorm lättnad det är när det bara rinner och man häver ur sig så mycket på en gång att man nästan inte kan andas. När man äntligen känner det första varma, våta mot kinderna. När allt smink ligger under ögonen och man har svärtat ner kudden och någons t-shirt och det rinner ur näsan och det börjar bulta i huvudet och ögonen är svullna. Känslan man får när man allt ögonvatten är slut och man bara orkar ligga och andas. Man har tagit allt värdelöst och slängt det över axeln, skitit på det och gått därifrån, stampat därifrån, pekat fuckyou bakom ryggen utan att riktigt bry sig om vart det träffar. Det ligger där, ensamt och nerskitet och långt bakom en för att man springer, springer bara för att känna mjölksyran i benen, skrattar bara för att tvinga fram pirret i bröstet och dansar bara för att. Springer bara för att leva. Tillslut lyckas man tvinga livet tillbaka till sig. PUSS på livet säger jag bara!
Kärlek
kattMickis

+ + +
+ + + + +

You'll be the rythm and I'll be the beat

+
Jag har varit duktig idag. Har gjort klart min egna present till Schanätt och dammsugit och stört mig på snön och städat mitt rum etc.
Världens finaste kommer och sover hos mig ikväll sen och jag hoppas på en nattlig promenad och massa mys. :3
Men nu ska jag fortsätta med mitt gif-ande.
Kärlek

kattMickis
+ + +
+ + + + +

GIF 2

+
Som folk kanske märker har jag lärt mig göra en gif-fil (TACK JOHANHARENBLOGG.BLOGG.SE <3) och det firar vi med att ladda upp mina första gif-filer!

+ +
+ + + + +

PÅSKLAN, exitlude

+
Det börjar dra sig mot sitt slut, tror jag minsann. Det börjar ljusna och det är inte så koolt att lana i morgonljus. Känns bara.. fel, tycker jag. Det ska vara mörkt och najs och unkigt.
Det har varit ett väldigt trevligt lan i alla fall. Allt som allt var vi sex människor, alla med varsin dator. Men det är bara Jag som inte är med i själva lanet utan jag lullar runt för mig själv lite grann på internet. Har dansat en del också. :3 Vi har haft en mysig playlist som jag nog måste ha på min spotajfi forever!
Min simgubbe, Torsten Adi, och hennes hund har levt nästan ett helt vuxet liv och det är fortfarande bara en hund och en människa. Vart tog hennes LIV vägen liksom? Jag ska försöka få ihop henne med sin BFE (och jag vet att allt simsande prat intresserar ALLA) Kostas. Och jag hoppas de får en bebe innan Torsten hamner i klimakteriet. :< Hade ju i och för sig tänkt att hon skulle vara en lesbisk tjej.. Men eftersom det finns flest färdiggjorda män och hon tydligen är duktig på att bli kompisar med just det motsatta könet så orkar jag inte fixa om henne.

Jag har ingen vacker bild från lanet just nu på datorn. Så ni får nöja er med den ni får (bara för att mina fötter är vackra). Men det har varit väldigt trevligt och jag slänger upp massa imorn (senare idag) så att ni får njuta.
Kärlek
kattMickis
+ + +
+ + + + +

Hög på musik och testosteron

+
Nu har vi suttit i samma rum med varsina datorer i ish tre och en halv timme. Och det är grymt. Vi har Rise Against som varvas med någon form av country som jag inte känner igen och lite gamla godingar från långt tillbaka i tiden. Vi har också kört igenom Rammstein någon gång och cs'et är nedlagt för lite chatroulette på dubbla håll. Jag känner mig alldeles hög på testosteron och musik och snygga bilder på Sandrababe som ligger på facebook (för alla som har min facebook eller som känner någon som känner mig på facebook). Livet kan knappt bli bättre, alltså. :D
+ +
+ + + + + +

"COME BACK TO ME!!!1"

+
Jag älskar att sitta med på lan och toodidoodla lite för mig själv och höra på sötpojkarnas vrålanden när de vinner/loosar på cs osv. Det är lite extra testosteron and I like it. +Puss på pojkarna, this is how I like it! 8D
+ +
+ + + + +

Ohyes, here I go

+ +

Jag har insett att min blogspot blev lite överplottrig på fel ställen. Inte sådär clean som jag vill ha den. Och jag var avundsjuk på de söta blogg.se-bloggarna som jag tittar på. Så jag bestämde mig att göra en blogg.se-blogg i sann kattMickisanda! Jag börjar inte om eller så, för jag var helt okej aktiv på min blogg. Jag byter bara domän, and I like it already.
Kärlek

kattMickis
+ +
+ + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/asteroids.js b/asteroids.js index 123c5f4..fcb5b3f 100644 --- a/asteroids.js +++ b/asteroids.js @@ -273,9 +273,6 @@ function Asteroids() { /*var highscoreURL = "http://asteroids.glonk.se/highscores.html"; var closeURL = "http://asteroids.glonk.se/close.png";*/ - // points - this.enemiesKilled = parseInt(window.ASTEROIDS.enemiesKilled, 10); - // generated every 10 ms this.flame = {r: [], y: []}; @@ -440,17 +437,25 @@ function Asteroids() { return array.push.apply(array, rest); }; + function applyVisibility(vis) { + for ( var i = 0, p; p = window.ASTEROIDSPLAYERS[i]; i++ ) { + p.canvas.style.visibility = vis; + p.navigation.style.visibility = vis; + } + } + function getElementFromPoint(x, y) { // hide canvas so it isn't picked up - that.canvas.style.visibility = "hidden"; - that.navigation.style.visibility = "hidden"; + applyVisibility('hidden'); var element = document.elementFromPoint(x, y); - if ( ! element ) return false; + if ( ! element ) { + applyVisibility('visible'); + return false; + } if ( element.nodeType == 3 ) element = element.parentNode; // show the canvas again, hopefully it didn't blink - that.canvas.style.visibility = "visible"; - that.navigation.style.visibility = "visible"; + applyVisibility('visible'); return element; }; @@ -468,10 +473,7 @@ function Asteroids() { }; function setScore() { - that.points.innerHTML = that.enemiesKilled * 10; - that.points.title = that.enemiesKilled + "/" + that.totalEnemies; - - window.ASTEROIDS.enemiesKilled = that.enemiesKilled; + that.points.innerHTML = window.ASTEROIDS.enemiesKilled * 10; }; function hasOnlyTextualChildren(element) { @@ -588,25 +590,32 @@ function Asteroids() { this.ctx.strokeStyle = "black"; // navigation wrapper element - this.navigation = document.createElement('div'); - this.navigation.className = "ASTEROIDSYEAH"; - with ( this.navigation.style ) { - fontFamily = "Arial,sans-serif"; - position = "fixed"; - zIndex = "10001"; - bottom = "10px"; - right = "10px"; - textAlign = "right"; + if ( ! document.getElementById('ASTEROIDS-NAVIGATION') ) { + this.navigation = document.createElement('div'); + this.navigation.id = "ASTEROIDS-NAVIGATION"; + this.navigation.className = "ASTEROIDSYEAH"; + with ( this.navigation.style ) { + fontFamily = "Arial,sans-serif"; + position = "fixed"; + zIndex = "10001"; + bottom = "10px"; + right = "10px"; + textAlign = "right"; + } + this.navigation.innerHTML = "(press esc to quit) "; + document.body.appendChild(this.navigation); + + // points + this.points = document.createElement('span'); + this.points.id = 'ASTEROIDS-POINTS'; + this.points.style.font = "28pt Arial, sans-serif"; + this.points.style.fontWeight = "bold"; + this.points.className = "ASTEROIDSYEAH"; + this.navigation.appendChild(this.points); + } else { + this.navigation = document.getElementById('ASTEROIDS-NAVIGATION'); + this.points = document.getElementById('ASTEROIDS-POINTS'); } - this.navigation.innerHTML = "(press esc to quit) "; - document.body.appendChild(this.navigation); - - // points - this.points = document.createElement('span'); - this.points.style.font = "28pt Arial, sans-serif"; - this.points.style.fontWeight = "bold"; - this.points.className = "ASTEROIDSYEAH"; - this.navigation.appendChild(this.points); setScore(); @@ -626,11 +635,6 @@ function Asteroids() { return false; };*/ - this.debug = document.createElement('span'); - this.debug.className = "ASTEROIDSYEAH"; - this.debug.innerHTML = ""; - this.navigation.appendChild(this.debug); - // For ie if ( typeof G_vmlCanvasManager != 'undefined' ) { var children = this.canvas.getElementsByTagName('*'); @@ -951,9 +955,10 @@ function Asteroids() { // Remove all dieing elements for ( var i = 0, enemy; enemy = this.dieing[i]; i++ ) { - this.enemiesKilled++; - try { + // If we have multiple spaceships it might have already been removed + if ( enemy.parentNode ) + window.ASTEROIDS.enemiesKilled++; enemy.parentNode.removeChild(enemy); } catch ( e ) {} @@ -1022,6 +1027,9 @@ function Asteroids() { }; } +if ( ! window.ASTEROIDSPLAYERS ) + window.ASTEROIDSPLAYERS = []; + if ( window.ActiveXObject ) { try { var xamlScript = document.createElement('script'); @@ -1035,12 +1043,12 @@ if ( window.ActiveXObject ) { script.onreadystatechange = function() { if ( script.readyState == 'loaded' || script.readyState == 'complete' ) { if ( typeof G_vmlCanvasManager != "undefined" ) - new Asteroids(); + window.ASTEROIDSPLAYERS[window.ASTEROIDSPLAYERS.length] = new Asteroids(); } }; script.src = "http://erkie.github.com/excanvas.js"; document.getElementsByTagName('head')[0].appendChild(script); } -else new Asteroids(); +else window.ASTEROIDSPLAYERS[window.ASTEROIDSPLAYERS.length] = new Asteroids(); })(); diff --git a/asteroids.min.js b/asteroids.min.js index dd7aa34..84713a1 100644 --- a/asteroids.min.js +++ b/asteroids.min.js @@ -1,7 +1,7 @@ (function(){function Asteroids(){if(!window.ASTEROIDS) window.ASTEROIDS={enemiesKilled:0};function Vector(x,y){if(typeof x=='Object'){this.x=x.x;this.y=x.y;}else{this.x=x;this.y=y;}};Vector.prototype={cp:function(){return new Vector(this.x,this.y);},mul:function(factor){this.x*=factor;this.y*=factor;return this;},mulNew:function(factor){return new Vector(this.x*factor,this.y*factor);},add:function(vec){this.x+=vec.x;this.y+=vec.y;return this;},addNew:function(vec){return new Vector(this.x+vec.x,this.y+vec.y);},sub:function(vec){this.x-=vec.x;this.y-=vec.y;return this;},subNew:function(vec){return new Vector(this.x-vec.x,this.y-vec.y);},rotate:function(angle){var x=this.x,y=this.y;this.x=x*Math.cos(angle)-Math.sin(angle)*y;this.y=x*Math.sin(angle)+Math.cos(angle)*y;return this;},rotateNew:function(angle){return this.cp().rotate(angle);},setAngle:function(angle){var l=this.len();this.x=Math.cos(angle)*l;this.y=Math.sin(angle)*l;return this;},setAngleNew:function(angle){return this.cp().setAngle(angle);},setLength:function(length){var l=this.len();if(l)this.mul(length/l);else this.x=this.y=length;return this;},setLengthNew:function(length){return this.cp().setLength(length);},normalize:function(){var l=this.len();this.x/=l;this.y/=l;return this;},normalizeNew:function(){return this.cp().normalize();},angle:function(){return Math.atan2(this.x,this.y);},collidesWith:function(rect){return this.x>rect.x&&this.y>rect.y&&this.x-0.005)return 0;return l;},is:function(test){return typeof test=='object'&&this.x==test.x&&this.y==test.y;},toString:function(){return'[Vector('+this.x+', '+this.y+') angle: '+this.angle()+', length: '+this.len()+']';}};function Line(p1,p2){this.p1=p1;this.p2=p2;};Line.prototype={shift:function(pos){this.p1.add(pos);this.p2.add(pos);},intersectsWithRect:function(rect){var LL=new Vector(rect.x,rect.y+rect.height);var UL=new Vector(rect.x,rect.y);var LR=new Vector(rect.x+rect.width,rect.y+rect.height);var UR=new Vector(rect.x+rect.width,rect.y);if(this.p1.x>LL.x&&this.p1.xUR.y&&this.p2.x>LL.x&&this.p2.xUR.y)return true;if(this.intersectsLine(new Line(UL,LL)))return true;if(this.intersectsLine(new Line(LL,LR)))return true;if(this.intersectsLine(new Line(UL,UR)))return true;if(this.intersectsLine(new Line(UR,LR)))return true;return false;},intersectsLine:function(line2){var v1=this.p1,v2=this.p2;var v3=line2.p1,v4=line2.p2;var denom=((v4.y-v3.y)*(v2.x-v1.x))-((v4.x-v3.x)*(v2.y-v1.y));var numerator=((v4.x-v3.x)*(v1.y-v3.y))-((v4.y-v3.y)*(v1.x-v3.x));var numerator2=((v2.x-v1.x)*(v1.y-v3.y))-((v2.y-v1.y)*(v1.x-v3.x));if(denom==0.0){return false;} -var ua=numerator/denom;var ub=numerator2/denom;return(ua>=0.0&&ua<=1.0&&ub>=0.0&&ub<=1.0);}};var that=this;var isIE=!!window.ActiveXObject;var w=document.documentElement.clientWidth,h=document.documentElement.clientHeight;var playerWidth=20,playerHeight=30;var playerVerts=[[-1*playerWidth/2,-15],[playerWidth/2,-15],[0,15]];var ignoredTypes=['HTML','HEAD','BODY','SCRIPT','TITLE','CANVAS','META','STYLE','LINK','SHAPE','LINE','GROUP','IMAGE','STROKE','FILL','SKEW','PATH','TEXTPATH'];var hiddenTypes=['BR','HR'];var FPS=isIE?30:50;var acc=300;var maxSpeed=600;var rotSpeed=360;var bulletSpeed=700;var particleSpeed=400;var timeBetweenFire=150;var timeBetweenBlink=250;var timeBetweenEnemyUpdate=isIE?10000:2000;var bulletRadius=2;var maxParticles=40;var maxBullets=20;this.enemiesKilled=parseInt(window.ASTEROIDS.enemiesKilled,10);this.flame={r:[],y:[]};function addBlinkStyle(){addStylesheet("ASTEROIDSYEAH",".ASTEROIDSYEAHENEMY { outline: 2px dotted red; }");};this.pos=new Vector(100,100);this.lastPos=false;this.vel=new Vector(0,0);this.dir=new Vector(0,1);this.keysPressed={};this.firedAt=false;this.updated={enemies:false,flame:new Date().getTime(),blink:{time:0,isActive:false}};this.scrollPos=new Vector(0,0);this.bullets=[];this.enemies=[];this.dieing=[];this.totalEnemies=0;this.particles=[];function updateEnemyIndex(){for(var i=0,enemy;enemy=that.enemies[i];i++) +var ua=numerator/denom;var ub=numerator2/denom;return(ua>=0.0&&ua<=1.0&&ub>=0.0&&ub<=1.0);}};var that=this;var isIE=!!window.ActiveXObject;var w=document.documentElement.clientWidth,h=document.documentElement.clientHeight;var playerWidth=20,playerHeight=30;var playerVerts=[[-1*playerWidth/2,-15],[playerWidth/2,-15],[0,15]];var ignoredTypes=['HTML','HEAD','BODY','SCRIPT','TITLE','CANVAS','META','STYLE','LINK','SHAPE','LINE','GROUP','IMAGE','STROKE','FILL','SKEW','PATH','TEXTPATH'];var hiddenTypes=['BR','HR'];var FPS=isIE?30:50;var acc=300;var maxSpeed=600;var rotSpeed=360;var bulletSpeed=700;var particleSpeed=400;var timeBetweenFire=150;var timeBetweenBlink=250;var timeBetweenEnemyUpdate=isIE?10000:2000;var bulletRadius=2;var maxParticles=40;var maxBullets=20;this.flame={r:[],y:[]};function addBlinkStyle(){addStylesheet("ASTEROIDSYEAH",".ASTEROIDSYEAHENEMY { outline: 2px dotted red; }");};this.pos=new Vector(100,100);this.lastPos=false;this.vel=new Vector(0,0);this.dir=new Vector(0,1);this.keysPressed={};this.firedAt=false;this.updated={enemies:false,flame:new Date().getTime(),blink:{time:0,isActive:false}};this.scrollPos=new Vector(0,0);this.bullets=[];this.enemies=[];this.dieing=[];this.totalEnemies=0;this.particles=[];function updateEnemyIndex(){for(var i=0,enemy;enemy=that.enemies[i];i++) removeClass(enemy,"ASTEROIDSYEAHENEMY");var all=document.body.getElementsByTagName('*');that.enemies=[];for(var i=0,el;el=all[i];i++){if(indexOf(ignoredTypes,el.tagName.toUpperCase())==-1&&el.prefix!='g_vml_'&&hasOnlyTextualChildren(el)&&el.className!="ASTEROIDSYEAH"&&el.offsetHeight>0){el.aSize=size(el);that.enemies.push(el);addClass(el,"ASTEROIDSYEAHENEMY");if(!el.aAdded){el.aAdded=true;that.totalEnemies++;}}}};updateEnemyIndex();function createFlames(){that.flame.r=[[0,0]];that.flame.y=[[0,0]];var rWidth=playerWidth;var rIncrease=playerWidth*0.1;for(var x=0;xw){window.scrollTo(this.scro if(this.pos.y>h){window.scrollTo(this.scrollPos.x,this.scrollPos.y+h*0.75);this.pos.y=0;}else if(this.pos.y<0){window.scrollTo(this.scrollPos.x,this.scrollPos.y-h*0.75);this.pos.y=h;} for(var i=0;i2000){arrayRemove(this.bullets,i);i--;forceChange=true;continue;} var bulletVel=this.bullets[i].dir.setLengthNew(bulletSpeed*tDelta).add(this.bullets[i].startVel.mulNew(tDelta));var ray=new Line(this.bullets[i].pos.cp(),this.bullets[i].pos.addNew(bulletVel));ray.shift(this.scrollPos);this.bullets[i].pos.add(bulletVel);boundsCheck(this.bullets[i].pos);var murdered=getElementFromPoint(this.bullets[i].pos.x,this.bullets[i].pos.y);if(murdered&&indexOf(ignoredTypes,murdered.tagName.toUpperCase())==-1&&hasOnlyTextualChildren(murdered)&&murdered.className!="ASTEROIDSYEAH"){didKill=true;addParticles(this.bullets[i].pos);this.dieing.push(murdered);arrayRemove(this.bullets,i);i--;continue;}} -for(var i=0,enemy;enemy=this.dieing[i];i++){this.enemiesKilled++;try{enemy.parentNode.removeChild(enemy);}catch(e){} +for(var i=0,enemy;enemy=this.dieing[i];i++){try{if(enemy.parentNode) +window.ASTEROIDS.enemiesKilled++;enemy.parentNode.removeChild(enemy);}catch(e){} setScore();arrayRemove(this.dieing,i);i--;} for(var i=0;i1000){arrayRemove(this.particles,i);i--;forceChange=true;continue;}} if(forceChange||this.bullets.length!=0||this.particles.length!=0||!this.pos.is(this.lastPos)||this.vel.len()>0){this.ctx.clear();this.ctx.drawPlayer();if(drawFlame) @@ -58,7 +62,8 @@ this.ctx.drawBullet(this.bullets[i].pos);for(var i=0;i';document.getElementsByTagName('head')[0].appendChild(xamlScript);}catch(e){} +if(!window.ASTEROIDSPLAYERS) +window.ASTEROIDSPLAYERS=[];if(window.ActiveXObject){try{var xamlScript=document.createElement('script');xamlScript.setAttribute('type','text/xaml');xamlScript.textContent='';document.getElementsByTagName('head')[0].appendChild(xamlScript);}catch(e){} var script=document.createElement("script");script.setAttribute('type','text/javascript');script.onreadystatechange=function(){if(script.readyState=='loaded'||script.readyState=='complete'){if(typeof G_vmlCanvasManager!="undefined") -new Asteroids();}};script.src="http://erkie.github.com/excanvas.js";document.getElementsByTagName('head')[0].appendChild(script);} -else new Asteroids();})(); \ No newline at end of file +window.ASTEROIDSPLAYERS[window.ASTEROIDSPLAYERS.length]=new Asteroids();}};script.src="http://erkie.github.com/excanvas.js";document.getElementsByTagName('head')[0].appendChild(script);} +else window.ASTEROIDSPLAYERS[window.ASTEROIDSPLAYERS.length]=new Asteroids();})(); \ No newline at end of file