comparison ai.d @ 12:2ecd16840900

added tracker
author Mason Green <mason.green@gmail.com>
date Sun, 22 Mar 2009 12:10:16 -0400
parents d998bf1b0654
children e1004697cae1
comparison
equal deleted inserted replaced
11:d998bf1b0654 12:2ecd16840900
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LED TO,
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 module openmelee.ai; 31 module openmelee.ai;
32 32
33 import tango.io.Stdout : Stdout;
34 import tango.math.Math : atan2;
35
36 import blaze.common.bzMath: bzVec2;
33 import openmelee.steer : Steer; 37 import openmelee.steer : Steer;
34 import openmelee.ship : Ship; 38 import openmelee.ship : Ship;
35 39
36 class AI { 40 class AI {
37 41
38 42
39 Steer steer; 43 Steer steer;
40 Ship ship; 44 Ship ship;
41 float maxPredictionTime = 0; 45 float maxPredictionTime = 0.5f;
42 46
43 this(Ship ship) { 47 this(Ship ship) {
44 this.ship = ship; 48 this.ship = ship;
45 steer = new Steer(ship); 49 steer = new Steer(ship);
46 } 50 }
47 51
48 void move(Ship enemy) { 52 void move(Ship enemy) {
49 53
50 steer.update(); 54 steer.update();
51 steer.steerForPursuit(enemy.state, maxPredictionTime); 55 bzVec2 st;
52 56 st = steer.steerForPursuit(enemy.state, maxPredictionTime);
57 //ship.thrust();
58 ship.state.target = st;
59 float angle = atan2(st.x, st.y);
60
61 if(angle < 0) {
62 ship.turnLeft();
63 } else {
64 ship.turnRight();
65 }
53 } 66 }
54 67
55 } 68 }