use of spacesettlers.objects.powerups.SpaceSettlersPowerupEnum in project spacesettlers by amymcgovern.
the class Base method deepClone.
/**
* Makes a deep copy (for security)
*/
public Base deepClone() {
Base newBase = new Base(getPosition().deepCopy(), teamName, team.deepCopy(), isHomeBase);
newBase.energy = energy;
newBase.setAlive(isAlive);
newBase.id = id;
newBase.maxEnergy = maxEnergy;
newBase.currentPowerups = new LinkedHashSet<SpaceSettlersPowerupEnum>(currentPowerups);
newBase.weaponCapacity = weaponCapacity;
newBase.healingIncrement = healingIncrement;
newBase.resources = new ResourcePile();
newBase.resources.add(resources);
newBase.numFlags = numFlags;
newBase.isShielded = isShielded;
newBase.numCores = numCores;
return newBase;
}
use of spacesettlers.objects.powerups.SpaceSettlersPowerupEnum in project spacesettlers by amymcgovern.
the class Ship method deepClone.
/**
* Deep copy of a ship (used for security)
* @return
*/
public Ship deepClone() {
Ship newShip = new Ship(teamName, teamColor, getPosition().deepCopy());
newShip.setAlive(isAlive);
newShip.resources = new ResourcePile();
newShip.addResources(resources);
newShip.lastRespawnCounter = lastRespawnCounter;
newShip.numBeacons = numBeacons;
newShip.energy = energy;
newShip.respawnCounter = respawnCounter;
newShip.graphic = new ShipGraphics(newShip, teamColor);
newShip.currentAction = currentAction;
newShip.numWeaponsInAir = numWeaponsInAir;
newShip.id = id;
newShip.maxEnergy = maxEnergy;
newShip.currentPowerups = new LinkedHashSet<SpaceSettlersPowerupEnum>(currentPowerups);
newShip.weaponCapacity = weaponCapacity;
newShip.hitsInflicted = hitsInflicted;
newShip.killsInflicted = killsInflicted;
newShip.killsReceived = killsReceived;
newShip.damageInflicted = damageInflicted;
newShip.carryingFlag = carryingFlag;
newShip.numFlags = numFlags;
newShip.isShielded = isShielded;
newShip.numCores = numCores;
if (this.flag != null) {
newShip.flag = flag.deepClone();
}
return newShip;
}
use of spacesettlers.objects.powerups.SpaceSettlersPowerupEnum in project spacesettlers by amymcgovern.
the class HumanTeamClient method getPowerups.
@Override
public Map<UUID, SpaceSettlersPowerupEnum> getPowerups(Toroidal2DPhysics space, Set<AbstractActionableObject> actionableObjects) {
HashMap<UUID, SpaceSettlersPowerupEnum> powerUps = new HashMap<UUID, SpaceSettlersPowerupEnum>();
if (lastKeyPressed == HumanKeyPressed.FIRE) {
for (AbstractActionableObject actionableObject : actionableObjects) {
SpaceSettlersPowerupEnum powerup = SpaceSettlersPowerupEnum.FIRE_MISSILE;
powerUps.put(actionableObject.getId(), powerup);
}
}
return powerUps;
}
use of spacesettlers.objects.powerups.SpaceSettlersPowerupEnum in project spacesettlers by amymcgovern.
the class AggressiveHeuristicAsteroidCollectorTeamClient method getPowerups.
/**
* The asteroid collector doesn't use power ups but the weapons one does (at random)
* @param space
* @param actionableObjects
* @return
*/
@Override
public Map<UUID, SpaceSettlersPowerupEnum> getPowerups(Toroidal2DPhysics space, Set<AbstractActionableObject> actionableObjects) {
HashMap<UUID, SpaceSettlersPowerupEnum> powerUps = new HashMap<UUID, SpaceSettlersPowerupEnum>();
for (AbstractActionableObject actionableObject : actionableObjects) {
SpaceSettlersPowerupEnum powerup = SpaceSettlersPowerupEnum.values()[random.nextInt(SpaceSettlersPowerupEnum.values().length)];
Boolean gettingCore = false;
if (goingForCore.containsKey(actionableObject.getId())) {
gettingCore = goingForCore.get(actionableObject.getId());
}
if (!actionableObject.getId().equals(asteroidCollectorID) && !gettingCore && actionableObject.isValidPowerup(powerup) && random.nextDouble() < weaponsProbability) {
powerUps.put(actionableObject.getId(), powerup);
}
}
return powerUps;
}
use of spacesettlers.objects.powerups.SpaceSettlersPowerupEnum in project spacesettlers by amymcgovern.
the class Team method getTeamPowerups.
/**
* Get the weapons or power ups for the team this turn
*
* @param space
* @return
*/
public Map<UUID, SpaceSettlersPowerupEnum> getTeamPowerups(Toroidal2DPhysics space) {
Map<UUID, SpaceSettlersPowerupEnum> powerups = new HashMap<UUID, SpaceSettlersPowerupEnum>();
final Toroidal2DPhysics clonedSpace = space.deepClone();
final Set<AbstractActionableObject> clonedActionableObjects = getTeamActionableObjectsClone(space);
// if the previous thread call hasn't finished, then just return default
if (executor == null || executor.isTerminated()) {
executor = Executors.newSingleThreadExecutor();
} else {
return powerups;
}
// System.out.println("exec " + executor.isTerminated());
Future<Map<UUID, SpaceSettlersPowerupEnum>> future = executor.submit(new Callable<Map<UUID, SpaceSettlersPowerupEnum>>() {
public Map<UUID, SpaceSettlersPowerupEnum> call() throws Exception {
return teamClient.getPowerups(clonedSpace, clonedActionableObjects);
}
});
try {
// start
powerups = future.get(SpaceSettlersSimulator.TEAM_ACTION_TIMEOUT, TimeUnit.MILLISECONDS);
// finished in time
} catch (TimeoutException e) {
// was terminated
// return empty map, don't buy anything
System.out.println(getTeamName() + " timed out in getTeamPowerups");
powerups = new HashMap<UUID, SpaceSettlersPowerupEnum>();
} catch (InterruptedException e) {
// we were interrupted (should not happen but lets be good programmers)
// return empty map, don't buy anything
powerups = new HashMap<UUID, SpaceSettlersPowerupEnum>();
e.printStackTrace();
} catch (ExecutionException e) {
// the executor threw and exception (should not happen but lets be good programmers)
// return empty map, don't buy anything
powerups = new HashMap<UUID, SpaceSettlersPowerupEnum>();
e.printStackTrace();
} catch (Exception e) {
System.err.println("Error in agent. Printing stack trace");
powerups = new HashMap<UUID, SpaceSettlersPowerupEnum>();
e.printStackTrace();
}
executor.shutdownNow();
return powerups;
}
Aggregations