diff ships/asteroids.d @ 25:2bf818f8b005

fixed asteroids
author zzzzrrr <mason.green@gmail.com>
date Fri, 27 Mar 2009 16:25:17 -0400
parents 441eb7672404
children
line wrap: on
line diff
--- a/ships/asteroids.d	Fri Mar 27 16:05:24 2009 -0400
+++ b/ships/asteroids.d	Fri Mar 27 16:25:17 2009 -0400
@@ -32,32 +32,24 @@
 import blaze.common.bzMath: bzVec2, bzMul, bzXForm;
 import blaze.dynamics.forces.bzAttractor: bzAttractor;
 
-
+import openmelee.ships.ship: Ship;
 import openmelee.ai.utilities;
 
 const PI = 3.141593;
 
-class Asteroid
+class Asteroid : Ship
 {
 
     bzBodyDef bd;
-    bzBody rBody;
-    bzShapeDef sd;
-
-    bzWorld world;
+    bzShapeDef sd;
 
     this(bzWorld world) {
-        this.world = world;
+        super(world);
         init();
+        calcRadius();
     }
 
     void init() {
-        
-        float minRadius = 0.1;
-        float maxRadius = 10;
-        float strength = 0.5f;
-        bzVec2 center = bzVec2(0,0);
-
 		{
 		    float radius = 0.5f;
             float density = 5.0f;
@@ -68,93 +60,18 @@
 			auto sd2 = new bzCircleDef(density, radius);
 			sd2.localPosition.set(0.5f, 0.5f);
 
-			for (int i = 0; i < 5; ++i)
-			{
-				float x = randomRange(-100f, 100f);
-                float y = randomRange(-100f, 100f);
-				bzVec2 position = bzVec2(x , y);
-				float angle = randomRange(-PI, PI);
-				bd = new bzBodyDef(position, angle);
-                bd.allowFreeze = false;
-                bd.allowSleep = false;
-				rBody = world.createBody(bd);
-				rBody.createShape(sd1);
-				rBody.createShape(sd2);
-				rBody.setMassFromShapes();
-                auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
-                world.addForce(attractor);
-                rBody.linearVelocity = bzVec2(x*0.1, y*0.1);
-			}
-		}
-
-		{
-			auto sd1 = new bzPolyDef();
-			sd1.setAsBox(0.25f, 0.5f);
-			sd1.density = 5.0f;
-
-			auto sd2 = new bzPolyDef();
-			sd2.setAsBox(0.25f, 0.5f, bzVec2(0.0f, -0.5f), 0.5f * PI);
-			sd2.density = 5.0f;
-
-			for (int i = 0; i < 5; ++i)
-			{
-				float x = randomRange(-100f, 100f);
-                float y = randomRange(-100f, 100f);
-				bzVec2 position = bzVec2(x , y);
-				float angle = randomRange(-PI, PI);
-				bd = new bzBodyDef(position, angle);
-                bd.allowFreeze = false;
-                bd.allowSleep = false;
-				rBody = world.createBody(bd);
-				rBody.createShape(sd1);
-				rBody.createShape(sd2);
-				rBody.setMassFromShapes();
-                auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
-                world.addForce(attractor);
-                rBody.linearVelocity = bzVec2(x*0.1, y*0.1);
-			}
-		}
-
-		{
-			bzXForm xf1;
-			xf1.R.set(0.3524f * PI);
-			xf1.position = bzMul(xf1.R, bzVec2(1.0f, 0.0f));
-
-			auto sd1 = new bzPolyDef();
-			sd1.vertices.length = 3;
-			sd1.vertices[0] = bzMul(xf1, bzVec2(-1.0f, 0.0f));
-			sd1.vertices[1] = bzMul(xf1, bzVec2(1.0f, 0.0f));
-			sd1.vertices[2] = bzMul(xf1, bzVec2(0.0f, 0.5f));
-			sd1.density = 5.0f;
-
-			bzXForm xf2;
-			xf2.R.set(-0.3524f * PI);
-			xf2.position = bzMul(xf2.R, bzVec2(-1.0f, 0.0f));
-
-			auto sd2 = new bzPolyDef();
-			sd2.vertices.length = 3;
-			sd2.vertices[0] = bzMul(xf2, bzVec2(-1.0f, 0.0f));
-			sd2.vertices[1] = bzMul(xf2, bzVec2(1.0f, 0.0f));
-			sd2.vertices[2] = bzMul(xf2, bzVec2(0.0f, 0.5f));
-			sd2.density = 5.0f;
-
-			for (int i = 0; i < 5; ++i)
-			{
-				float x = randomRange(-100f, 100f);
-                float y = randomRange(-100f, 100f);
-				bzVec2 position = bzVec2(x , y);
-				float angle = 0.0f;
-				bd = new bzBodyDef(position, angle);
-                bd.allowFreeze = false;
-                bd.allowSleep = false;
-				rBody = world.createBody(bd);
-				rBody.createShape(sd1);
-				rBody.createShape(sd2);
-				rBody.setMassFromShapes();
-                auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
-                world.addForce(attractor);
-                rBody.linearVelocity = bzVec2(x*0.1, y*0.1);
-			}
+            float x = randomRange(-100f, 100f);
+            float y = randomRange(-100f, 100f);
+            bzVec2 position = bzVec2(x , y);
+            float angle = randomRange(-PI, PI);
+            bd = new bzBodyDef(position, angle);
+            bd.allowFreeze = false;
+            bd.allowSleep = false;
+            rBody = world.createBody(bd);
+            rBody.createShape(sd1);
+            rBody.createShape(sd2);
+            rBody.setMassFromShapes();
+            rBody.linearVelocity = bzVec2(x, y);
 		}
 	}
 }