Search in sources :

Example 1 with SpaceSettlersPowerupEnum

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;
}
Also used : ResourcePile(spacesettlers.objects.resources.ResourcePile) SpaceSettlersPowerupEnum(spacesettlers.objects.powerups.SpaceSettlersPowerupEnum)

Example 2 with SpaceSettlersPowerupEnum

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;
}
Also used : ResourcePile(spacesettlers.objects.resources.ResourcePile) ShipGraphics(spacesettlers.graphics.ShipGraphics) SpaceSettlersPowerupEnum(spacesettlers.objects.powerups.SpaceSettlersPowerupEnum)

Example 3 with SpaceSettlersPowerupEnum

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;
}
Also used : AbstractActionableObject(spacesettlers.objects.AbstractActionableObject) HashMap(java.util.HashMap) SpaceSettlersPowerupEnum(spacesettlers.objects.powerups.SpaceSettlersPowerupEnum) UUID(java.util.UUID)

Example 4 with SpaceSettlersPowerupEnum

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;
}
Also used : AbstractActionableObject(spacesettlers.objects.AbstractActionableObject) HashMap(java.util.HashMap) SpaceSettlersPowerupEnum(spacesettlers.objects.powerups.SpaceSettlersPowerupEnum) UUID(java.util.UUID)

Example 5 with SpaceSettlersPowerupEnum

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;
}
Also used : AbstractActionableObject(spacesettlers.objects.AbstractActionableObject) HashMap(java.util.HashMap) SpaceSettlersPowerupEnum(spacesettlers.objects.powerups.SpaceSettlersPowerupEnum) TimeoutException(java.util.concurrent.TimeoutException) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) ExecutionException(java.util.concurrent.ExecutionException) Toroidal2DPhysics(spacesettlers.simulator.Toroidal2DPhysics) UUID(java.util.UUID) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) ExecutionException(java.util.concurrent.ExecutionException) HashMap(java.util.HashMap) Map(java.util.Map) TimeoutException(java.util.concurrent.TimeoutException)

Aggregations

SpaceSettlersPowerupEnum (spacesettlers.objects.powerups.SpaceSettlersPowerupEnum)6 HashMap (java.util.HashMap)4 UUID (java.util.UUID)4 AbstractActionableObject (spacesettlers.objects.AbstractActionableObject)4 Map (java.util.Map)2 ExecutionException (java.util.concurrent.ExecutionException)2 ResourcePile (spacesettlers.objects.resources.ResourcePile)2 ExecutorService (java.util.concurrent.ExecutorService)1 Future (java.util.concurrent.Future)1 RejectedExecutionException (java.util.concurrent.RejectedExecutionException)1 TimeoutException (java.util.concurrent.TimeoutException)1 AbstractAction (spacesettlers.actions.AbstractAction)1 DoNothingAction (spacesettlers.actions.DoNothingAction)1 PurchaseTypes (spacesettlers.actions.PurchaseTypes)1 Team (spacesettlers.clients.Team)1 ShipGraphics (spacesettlers.graphics.ShipGraphics)1 AbstractObject (spacesettlers.objects.AbstractObject)1 Asteroid (spacesettlers.objects.Asteroid)1 Ship (spacesettlers.objects.Ship)1 Toroidal2DPhysics (spacesettlers.simulator.Toroidal2DPhysics)1