Search in sources :

Example 11 with Asteroid

use of spacesettlers.objects.Asteroid in project spacesettlers by amymcgovern.

the class TestCollisionHandler method testCollidingInsideRadius.

@Test
public void testCollidingInsideRadius() {
    Ship ship;
    Asteroid asteroid;
    Position ship1Pos = new Position(100, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship = new Ship("team1", Color.BLUE, ship1Pos);
    Position asteroid2Pos = new Position(134, 0, -Math.PI / 4);
    asteroid2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid = new Asteroid(asteroid2Pos, false, 20, true, .33, .33, .34);
    ship.setMass(asteroid.getMass());
    // ship radius is 15 and is at 100,0
    // asteroid radius is 20 here and at 134,0
    // ship should bounce back to -99.33,0 (edge of collision) and asteroid to 134.33 (edge of collision, based on velocities)
    collisionHandler.collide(ship, asteroid, space);
    assertEquals(ship.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(ship.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(ship.getPosition().getX(), 99.33, 0.01);
    assertEquals(ship.getPosition().getY(), 0, 0.01);
    assertEquals(asteroid.getPosition().getX(), 134.33, 0.01);
    assertEquals(asteroid.getPosition().getY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 12 with Asteroid

use of spacesettlers.objects.Asteroid in project spacesettlers by amymcgovern.

the class TestCollisionHandler method testElasticCollisionsShipToAsteroidX.

@Test
public void testElasticCollisionsShipToAsteroidX() {
    Ship ship1;
    Asteroid asteroid;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position asteroid2Pos = new Position(10, 0, -Math.PI / 4);
    asteroid2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid = new Asteroid(asteroid2Pos, false, 10, true, .33, .33, .34);
    ship1.setMass(asteroid.getMass());
    collisionHandler.collide(ship1, asteroid, space);
    assertEquals(ship1.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(ship1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 13 with Asteroid

use of spacesettlers.objects.Asteroid in project spacesettlers by amymcgovern.

the class TestCollisionHandler method testCollidingWithMineableAsteroid.

@Test
public void testCollidingWithMineableAsteroid() {
    Ship ship1;
    Asteroid asteroid;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position asteroid2Pos = new Position(10, 0, -Math.PI / 4);
    asteroid2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid = new Asteroid(asteroid2Pos, true, 10, true, .33, .33, .34);
    ResourcePile asteroidResources = asteroid.getResources();
    collisionHandler.collide(ship1, asteroid, space);
    assertEquals(ship1.getResources().getResourceQuantity(ResourceTypes.FUEL), asteroidResources.getResourceQuantity(ResourceTypes.FUEL), 0.0);
    assertEquals(ship1.getResources().getResourceQuantity(ResourceTypes.WATER), asteroidResources.getResourceQuantity(ResourceTypes.WATER), 0.0);
    assertEquals(ship1.getResources().getResourceQuantity(ResourceTypes.METALS), asteroidResources.getResourceQuantity(ResourceTypes.METALS), 0.0);
}
Also used : ResourcePile(spacesettlers.objects.resources.ResourcePile) Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 14 with Asteroid

use of spacesettlers.objects.Asteroid in project spacesettlers by amymcgovern.

the class TestCollisionHandler method testElasticCollisionsAsteroidsMoveableToNonMoveableOnX.

@Test
public void testElasticCollisionsAsteroidsMoveableToNonMoveableOnX() {
    Asteroid asteroid1, asteroid2;
    Position position1 = new Position(0, 0, Math.PI / 4);
    position1.setTranslationalVelocity(new Vector2D(20, 0));
    asteroid1 = new Asteroid(position1, false, 10, true, .33, .33, .34);
    Position position2 = new Position(10, 0, -Math.PI / 4);
    asteroid2 = new Asteroid(position2, false, 10, false, .33, .33, .34);
    collisionHandler.collide(asteroid1, asteroid2, space);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityX(), -20, 0.01);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityX(), 0, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 15 with Asteroid

use of spacesettlers.objects.Asteroid in project spacesettlers by amymcgovern.

the class TestCollisionHandler method testElasticCollisionsAsteroidsMoveableToMoveableOnX.

@Test
public void testElasticCollisionsAsteroidsMoveableToMoveableOnX() {
    Asteroid asteroid1, asteroid2;
    Position position1 = new Position(0, 0, Math.PI / 4);
    position1.setTranslationalVelocity(new Vector2D(20, 0));
    asteroid1 = new Asteroid(position1, false, 10, true, .33, .33, .34);
    Position position2 = new Position(10, 0, -Math.PI / 4);
    position2.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid2 = new Asteroid(position2, false, 10, true, .33, .33, .34);
    collisionHandler.collide(asteroid1, asteroid2, space);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Aggregations

Asteroid (spacesettlers.objects.Asteroid)25 Position (spacesettlers.utilities.Position)14 Beacon (spacesettlers.objects.Beacon)9 Ship (spacesettlers.objects.Ship)9 Base (spacesettlers.objects.Base)8 Vector2D (spacesettlers.utilities.Vector2D)8 Test (org.junit.Test)6 AbstractAction (spacesettlers.actions.AbstractAction)6 DoNothingAction (spacesettlers.actions.DoNothingAction)6 MoveToObjectAction (spacesettlers.actions.MoveToObjectAction)5 Team (spacesettlers.clients.Team)2 AbstractObject (spacesettlers.objects.AbstractObject)2 AiCore (spacesettlers.objects.AiCore)2 Flag (spacesettlers.objects.Flag)2 ResourcePile (spacesettlers.objects.resources.ResourcePile)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1 UUID (java.util.UUID)1 ExecutionException (java.util.concurrent.ExecutionException)1 ExecutorService (java.util.concurrent.ExecutorService)1