changeset 13:e1004697cae1

tracking
author zzzzrrr <mason.green@gmail.com>
date Mon, 23 Mar 2009 08:02:23 -0400
parents 2ecd16840900
children af1e8620f027
files ai.d main.d melee.d openmelee.geany ship.d urQuan.d
diffstat 6 files changed, 49 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/ai.d	Sun Mar 22 12:10:16 2009 -0400
+++ b/ai.d	Mon Mar 23 08:02:23 2009 -0400
@@ -31,7 +31,7 @@
 module openmelee.ai;
 
 import tango.io.Stdout : Stdout;
-import tango.math.Math : atan2;
+import tango.math.Math : atan2, abs, PI;
 
 import blaze.common.bzMath: bzVec2;
 import openmelee.steer : Steer;
@@ -54,15 +54,38 @@
 	    steer.update();
 	    bzVec2 st;
 	    st = steer.steerForPursuit(enemy.state, maxPredictionTime);
-	    //ship.thrust();
+	    
 	    ship.state.target = st;
         float angle = atan2(st.x, st.y);
+		
+		Stdout("Target angle: ")(angle).newline;
+		
+		float x = ship.state.forward.x;
+		float y = ship.state.forward.y;
+		float angle2 = atan2(x,y);
+		
         
-        if(angle < 0) {
-            ship.turnLeft();
-        } else {
-            ship.turnRight();
-        }
+		float rel = angle2 - angle;
+		
+		if(abs(rel) > PI/8) {
+			if(angle < angle2) {
+				ship.turnLeft();
+				ship.state.turn = true;
+			} else {
+				ship.state.turn = true;
+				ship.turnRight();
+			}
+		} else {
+			ship.rBody.angularVelocity = 0.0f;
+			ship.state.turn = false;
+		}
+		
+		ship.state.enemyAngle = rel;
+		
+		float range = (ship.state.position - enemy.state.position).length; 
+		if(range > 20 && !ship.state.turn) {
+			//ship.thrust();
+		}
     }
 
 }
--- a/main.d	Sun Mar 22 12:10:16 2009 -0400
+++ b/main.d	Mon Mar 23 08:02:23 2009 -0400
@@ -94,7 +94,6 @@
     });
 
     jobHub.addPostFrameJob( {
-        whut.ship2.rBody.angularVelocity = 0.0f;
         gui.begin(cfg);
         gui.push(`main`);
         if (gui().getProperty!(bool)("frame.closeClicked")) {
--- a/melee.d	Sun Mar 22 12:10:16 2009 -0400
+++ b/melee.d	Mon Mar 23 08:02:23 2009 -0400
@@ -165,8 +165,8 @@
 		world.boundaryListener = m_boundaryListener;
 		world.contactListener = m_contactListener;
 		viewCenter = vec2(10, 10);
-		ship1 = new Orz(world);
-		ship2 = new UrQuan(world);
+		ship1 = new UrQuan(world);
+		ship2 = new Orz(world);
         auto planet = new Planet(world);
 	}
 
--- a/openmelee.geany	Sun Mar 22 12:10:16 2009 -0400
+++ b/openmelee.geany	Mon Mar 23 08:02:23 2009 -0400
@@ -10,18 +10,18 @@
 name=openmelee
 base_path=C:\\workspace\\openmelee
 make_in_base_path=false
+description=
+run_cmd=
 
 [files]
-current_page=2
-FILE_NAME_0=1708;D;0;16;0;1;1;C:\\workspace\\openmelee\\boundaryListener.d;0
-FILE_NAME_1=1707;D;0;16;0;1;1;C:\\workspace\\openmelee\\contactListener.d;0
-FILE_NAME_2=1759;D;0;16;0;1;1;C:\\workspace\\openmelee\\main.d;0
-FILE_NAME_3=4517;D;0;16;0;1;1;C:\\workspace\\openmelee\\melee.d;0
-FILE_NAME_4=0;D;0;16;0;1;1;C:\\workspace\\openmelee\\models.d;0
-FILE_NAME_5=1870;D;0;16;0;1;1;C:\\workspace\\openmelee\\orz.d;0
-FILE_NAME_6=19493;D;0;16;0;1;1;C:\\workspace\\openmelee\\render.d;0
-FILE_NAME_7=1615;D;0;16;0;1;1;C:\\workspace\\openmelee\\ship.d;0
-FILE_NAME_8=1945;D;0;16;0;1;1;C:\\workspace\\openmelee\\steer.d;0
-FILE_NAME_9=1842;D;0;16;0;1;1;C:\\workspace\\openmelee\\urQuan.d;0
-FILE_NAME_10=147;None;0;16;0;1;1;C:\\workspace\\openmelee\\build-dmd-win.bat;0
-FILE_NAME_11=21370;D;0;16;0;1;1;C:\\workspace\\blaze\\blaze\\common\\bzMath.d;0
+current_page=5
+FILE_NAME_0=3145;D;0;16;0;1;1;C:\\workspace\\openmelee\\main.d;0
+FILE_NAME_1=1648;D;0;16;0;1;1;C:\\workspace\\openmelee\\melee.d;0
+FILE_NAME_2=1648;D;0;16;0;1;1;C:\\workspace\\openmelee\\orz.d;0
+FILE_NAME_3=10638;D;0;16;0;1;1;C:\\workspace\\openmelee\\render.d;0
+FILE_NAME_4=1648;D;0;16;0;1;1;C:\\workspace\\openmelee\\ship.d;0
+FILE_NAME_5=2349;D;0;16;0;1;1;C:\\workspace\\openmelee\\steer.d;0
+FILE_NAME_6=1648;D;0;16;0;1;1;C:\\workspace\\openmelee\\urQuan.d;0
+FILE_NAME_7=147;None;0;16;0;1;1;C:\\workspace\\openmelee\\build-dmd-win.bat;0
+FILE_NAME_8=304;Conf;0;16;0;1;0;C:\\workspace\\openmelee\\gui.cfg;0
+FILE_NAME_9=1648;D;0;16;0;1;0;C:\\workspace\\openmelee\\planet.d;0
--- a/ship.d	Sun Mar 22 12:10:16 2009 -0400
+++ b/ship.d	Mon Mar 23 08:02:23 2009 -0400
@@ -51,6 +51,9 @@
     bzVec2 target;
 	float speed = 0;
 	float maxForce = 0;
+	bool turn;
+	
+	float enemyAngle;
 	
 	bzVec2 predictFuturePosition(float dt) {
 	    return (position + velocity * dt);
--- a/urQuan.d	Sun Mar 22 12:10:16 2009 -0400
+++ b/urQuan.d	Mon Mar 23 08:02:23 2009 -0400
@@ -48,7 +48,7 @@
 
         super(world);
         engineForce = bzVec2(500, 0);
-        turnForce = bzVec2(0, 5000);
+        turnForce = bzVec2(0, 9000);
         rightTurnPoint = bzVec2(-0.5, 0);
         leftTurnPoint = bzVec2(0.5, 0);