Search in sources :

Example 41 with Ship

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

the class SpaceSettlersSimulator method updateScores.

/**
 * Updates the scores for the teams
 */
private void updateScores() {
    if (simConfig.getScoringMethod().equalsIgnoreCase("Resources")) {
        for (Team team : teams) {
            team.setScore(team.getSummedTotalResources());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("ResourcesAndCores")) {
        for (Team team : teams) {
            team.setScore(team.getSummedTotalResources() + 100.0 * team.getTotalCoresCollected());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("Beacons")) {
        for (Team team : teams) {
            int beacons = 0;
            for (Ship ship : team.getShips()) {
                beacons += ship.getNumBeacons();
            }
            team.setScore(beacons);
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("Kills")) {
        for (Team team : teams) {
            team.setScore(team.getTotalKillsInflicted());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("Hits")) {
        for (Team team : teams) {
            team.setScore(team.getTotalHitsInflicted());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("Damage")) {
        for (Team team : teams) {
            team.setScore(team.getTotalDamageInflicted());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("DamageCorrected")) {
        for (Team team : teams) {
            // not subtracting damage received because it is a negative number (inflicted is positive)
            team.setScore(1000 * team.getTotalKillsInflicted() + team.getTotalDamageInflicted() + team.getTotalDamageReceived());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("DamageCorrected2018")) {
        for (Team team : teams) {
            // not subtracting damage received because it is a negative number (inflicted is positive)
            team.setScore(1000 * team.getTotalKillsInflicted() + team.getTotalDamageInflicted() + team.getTotalDamageReceived() - (1000 * ((team.getTotalKillsReceived() + 1) * team.getTotalKillsReceived()) / 2.0) + (team.getSummedTotalResources() / 2.0));
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("Cores")) {
        for (Team team : teams) {
            team.setScore(team.getTotalCoresCollected());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("Flags")) {
        // this scores by the raw number of flags collected (competitive ladder)
        for (Team team : teams) {
            team.setScore(team.getTotalFlagsCollected());
        }
    } else if (simConfig.getScoringMethod().equalsIgnoreCase("TotalFlags")) {
        // this score sums the flags for the two sides (cooperative ladder)
        int totalFlags = 0;
        for (Team team : teams) {
            totalFlags += team.getTotalFlagsCollected();
        }
        for (Team team : teams) {
            team.setScore(totalFlags);
        }
    } else {
        System.err.println("Error: Scoring method " + simConfig.getScoringMethod() + " is not recognized.  Scores will all be 0.");
    }
}
Also used : Team(spacesettlers.clients.Team) Ship(spacesettlers.objects.Ship)

Example 42 with Ship

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

the class Toroidal2DPhysics method handlePowerup.

/**
 * Handle power ups for the specified object
 * @param swobject
 * @param spacewarPowerup
 */
private void handlePowerup(AbstractActionableObject swobject, SpaceSettlersPowerupEnum spacewarPowerup) {
    switch(spacewarPowerup) {
        case FIRE_MISSILE:
            Ship ship = (Ship) swobject;
            AbstractWeapon weapon = ship.getNewWeapon(SpaceSettlersPowerupEnum.FIRE_MISSILE);
            if (weapon != null && weapon.isValidWeapon(ship)) {
                addObject(weapon);
                weapon.setFiringShip(ship);
                weapon.applyPowerup(ship);
            }
            break;
        case FIRE_EMP:
            ship = (Ship) swobject;
            weapon = ship.getNewWeapon(SpaceSettlersPowerupEnum.FIRE_EMP);
            if (weapon != null && weapon.isValidWeapon(ship)) {
                addObject(weapon);
                weapon.setFiringShip(ship);
                weapon.applyPowerup(ship);
            }
            break;
        case TOGGLE_SHIELD:
            PowerupToggleShield toggle = new PowerupToggleShield();
            toggle.applyPowerup(swobject);
            break;
        case DOUBLE_WEAPON_CAPACITY:
            PowerupDoubleWeapon weaponDoubler = new PowerupDoubleWeapon();
            weaponDoubler.applyPowerup(swobject);
            break;
        case DOUBLE_BASE_HEALING_SPEED:
            PowerupDoubleHealingBaseEnergy baseDoubler = new PowerupDoubleHealingBaseEnergy();
            baseDoubler.applyPowerup(swobject);
            break;
        case DOUBLE_MAX_ENERGY:
            PowerupDoubleMaxEnergy maxEnergyDoubler = new PowerupDoubleMaxEnergy();
            maxEnergyDoubler.applyPowerup(swobject);
            break;
        case FIRE_HEAT_SEEKING_MISSILE:
            break;
        case FIRE_TURRET:
            break;
        case LAY_MINE:
            break;
        default:
            break;
    }
}
Also used : PowerupDoubleHealingBaseEnergy(spacesettlers.objects.powerups.PowerupDoubleHealingBaseEnergy) PowerupDoubleWeapon(spacesettlers.objects.powerups.PowerupDoubleWeapon) Ship(spacesettlers.objects.Ship) PowerupToggleShield(spacesettlers.objects.powerups.PowerupToggleShield) AbstractWeapon(spacesettlers.objects.weapons.AbstractWeapon) PowerupDoubleMaxEnergy(spacesettlers.objects.powerups.PowerupDoubleMaxEnergy)

Example 43 with Ship

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

the class TestCollisionHandler method testElasticCollisionsShipsX.

@Test
public void testElasticCollisionsShipsX() {
    Ship ship1, ship2;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position ship2Pos = new Position(10, 0, -Math.PI / 4);
    ship2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    ship2 = new Ship("team2", Color.RED, ship2Pos);
    collisionHandler.collide(ship1, ship2, space);
    assertEquals(ship1.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(ship1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(ship2.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(ship2.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
Also used : Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 44 with Ship

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

the class TestCollisionHandler method testElasticCollisionsShipsY.

@Test
public void testElasticCollisionsShipsY() {
    Ship ship1, ship2;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(0, 20));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position ship2Pos = new Position(0, 10, -Math.PI / 4);
    ship2Pos.setTranslationalVelocity(new Vector2D(0, -10));
    ship2 = new Ship("team2", Color.RED, ship2Pos);
    collisionHandler.collide(ship1, ship2, space);
    assertEquals(ship1.getPosition().getTranslationalVelocityX(), 0, 0.01);
    assertEquals(ship1.getPosition().getTranslationalVelocityY(), -10, 0.01);
    assertEquals(ship2.getPosition().getTranslationalVelocityX(), 0, 0.01);
    assertEquals(ship2.getPosition().getTranslationalVelocityY(), 20, 0.01);
}
Also used : Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 45 with Ship

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

the class TestCollisionHandler method testElasticCollisionsShipsDiagonal.

@Test
public void testElasticCollisionsShipsDiagonal() {
    Ship ship1, ship2;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(2, 2));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position ship2Pos = new Position(10, 10, -Math.PI / 4);
    ship2Pos.setTranslationalVelocity(new Vector2D(-10, -10));
    ship2 = new Ship("team2", Color.RED, ship2Pos);
    collisionHandler.collide(ship1, ship2, space);
    assertEquals(ship1.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(ship1.getPosition().getTranslationalVelocityY(), -10, 0.01);
    assertEquals(ship2.getPosition().getTranslationalVelocityX(), 2, 0.01);
    assertEquals(ship2.getPosition().getTranslationalVelocityY(), 2, 0.01);
}
Also used : Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Aggregations

Ship (spacesettlers.objects.Ship)49 UUID (java.util.UUID)20 Base (spacesettlers.objects.Base)19 Position (spacesettlers.utilities.Position)18 HashMap (java.util.HashMap)16 AbstractAction (spacesettlers.actions.AbstractAction)15 DoNothingAction (spacesettlers.actions.DoNothingAction)15 AbstractObject (spacesettlers.objects.AbstractObject)15 AbstractActionableObject (spacesettlers.objects.AbstractActionableObject)9 Asteroid (spacesettlers.objects.Asteroid)9 Vector2D (spacesettlers.utilities.Vector2D)8 Test (org.junit.Test)7 MoveToObjectAction (spacesettlers.actions.MoveToObjectAction)7 PurchaseTypes (spacesettlers.actions.PurchaseTypes)7 Beacon (spacesettlers.objects.Beacon)7 AiCore (spacesettlers.objects.AiCore)6 Flag (spacesettlers.objects.Flag)5 Team (spacesettlers.clients.Team)4 ResourcePile (spacesettlers.objects.resources.ResourcePile)4 ExecutionException (java.util.concurrent.ExecutionException)2