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.");
}
}
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;
}
}
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);
}
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);
}
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);
}
Aggregations