Mercurial > projects > openmelee
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 } |