/** * Returns true if the supplied ECMInfo is opposed to this one. * @param other * @return */ public boolean isOpposed(IPlayer other) { return (owner == null) || (other == null) || owner.isEnemyOf(other); }
/** * Compute the ECMInfo from another instance into this one, where this * ECMInfo contains information about fields opposed to the owner. * All enemy ECM strength is added, and all allied ECCM strength is added. * * @param other */ public void addOpposingECMEffects(ECMInfo other) { // Enemy ECM (ECM without an owner is always considered an enemy) if (((other.owner == null) || owner.isEnemyOf(other.owner))) { strength += other.strength; angelStrength += other.angelStrength; isECMNova |= other.isECMNova; // Allied ECCM } else if ((other.owner != null) && !owner.isEnemyOf(other.owner)) { eccmStrength += other.eccmStrength; angelECCMStrength += other.angelECCMStrength; } }
/** * Compute the ECMInfo from another instance into this one, where this * ECMInfo contains information about fields allied to the owner. * All allied ECM strength is added, and all enemy ECCM strength is added. * * @param other */ public void addAlliedECMEffects(ECMInfo other) { // Enemy ECCM (ECCM without an owner is always considered an enemy) if (((other.owner == null) || owner.isEnemyOf(other.owner))) { eccmStrength += other.eccmStrength; angelECCMStrength += other.angelECCMStrength; // Allied ECM } else if ((other.owner != null) && !owner.isEnemyOf(other.owner)) { strength += other.strength; angelStrength += other.angelStrength; isECMNova |= other.isECMNova; } }
/** * Returns true if the supplied ECMInfo is opposed to this one. * @param other * @return */ public boolean isOpposed(ECMInfo other) { return (owner == null) || (other.getOwner() == null) || owner.isEnemyOf(other.getOwner()); }
public int getEnemyBV(IGame game, IPlayer player) { int ret = 0; for (IPlayer other : game.getPlayersVector()) { if (other.isObserver()) continue; if (other.isEnemyOf(player)) { ret += other.getBV(); } } return ret; }
public List<Entity> getFriendEntities() { List<Entity> result = new ArrayList<>(); for (Entity entity : game.getEntitiesVector()) { if (!entity.getOwner().isEnemyOf(getLocalPlayer()) && (entity.getPosition() != null) && !entity.isOffBoard()) { result.add(entity); } } return result; }
public int getFriendlyBV(IGame game, IPlayer player) { int ret = 0; for (IPlayer other : game.getPlayersVector()) { if (other.isObserver()) continue; if (!other.isEnemyOf(player)) { ret += other.getBV(); } } return ret; }
public int getEnemyInitialBV(IGame game, IPlayer player) { int ret = 0; for (IPlayer other : game.getPlayersVector()) { if (other.isObserver()) continue; if (other.isEnemyOf(player)) { ret += other.getInitialBV(); } } return ret; }
boolean shouldBotAcknowledgeDefeat(String message, BotClient bot) { boolean result = false; if (!StringUtil.isNullOrEmpty(message) && (message.contains("declares individual victory at the end of the turn.") || message.contains("declares team victory at the end of the turn."))) { String[] splitMessage = message.split(" "); int i = 1; String name = splitMessage[i]; while (!splitMessage[i + 1].equals("declares")) { name += " " + splitMessage[i + 1]; i++; } for (IPlayer p : bot.getGame().getPlayersVector()) { if (p.getName().equals(name)) { if (p.isEnemyOf(bot.getLocalPlayer())) { bot.sendChat("/defeat"); result = true; } break; } } } return result; }
boolean shouldBotAcknowledgeVictory(String message, BotClient bot) { boolean result = false; if (!StringUtil.isNullOrEmpty(message) && (message.contains(DefeatCommand.wantsDefeat))) { String[] splitMessage = message.split(" "); int i = 1; String name = splitMessage[i]; while (!splitMessage[i + 1].equals("wants") && !splitMessage[i + 1].equals("admits")) { name += " " + splitMessage[i + 1]; i++; } for (IPlayer p : bot.getGame().getPlayersVector()) { if (p.getName().equals(name)) { if (p.isEnemyOf(bot.getLocalPlayer())) { bot.sendChat("/victory"); result = true; } break; } } } return result; }
private boolean isEnemyInfantry(final Entity entity, final Coords coords) { return entity.hasETypeFlag(Entity.ETYPE_INFANTRY) && !entity.hasETypeFlag(Entity.ETYPE_MECHWARRIOR) && entity.getOwner().isEnemyOf(getLocalPlayer()) && !getStrategicBuildingTargets().contains(coords); }
public List<Entity> getEnemyEntities() { ArrayList<Entity> result = new ArrayList<>(); for (Entity entity : game.getEntitiesVector()) { if (entity.getOwner().isEnemyOf(getLocalPlayer()) && (entity.getPosition() != null) && !entity.isOffBoard() && (entity.getCrew() != null) && !entity.getCrew().isDead()) { result.add(entity); } } return result; }
/** * Returns true if the other entity is an enemy of this entity. This is more * reliable than Player.isEnemyOf since it knows that an entity will never * be an enemy of itself. */ public boolean isEnemyOf(Entity other) { if(null == other) { return false; } if(null == owner) { return ((id != other.getId()) && (ownerId != other.ownerId)); } return (id != other.getId()) && ((null == other.getOwner()) || owner.isEnemyOf(other.getOwner())); }
private boolean isEnemyGunEmplacement(final Entity entity, final Coords coords) { return entity.hasETypeFlag(Entity.ETYPE_GUN_EMPLACEMENT) && entity.getOwner().isEnemyOf(getLocalPlayer()) && !getStrategicBuildingTargets().contains(coords) && (null != entity.getCrew()) && !entity.getCrew().isDead(); }
@Override public void run(int connId, String[] args) { boolean suppressEnemyBV = server.getGame().getOptions() .booleanOption(OptionsConstants.ADVANCED_SUPPRESS_DB_BV) && server.getGame().getOptions().booleanOption(OptionsConstants.ADVANCED_DOUBLE_BLIND); // Connection Ids match player Ids IPlayer requestingPlayer = server.getGame().getPlayer(connId); server.sendServerChat(connId, "Remaining BV:"); for (Enumeration<IPlayer> i = server.getGame().getPlayers(); i .hasMoreElements();) { IPlayer player = i.nextElement(); StringBuffer cb = new StringBuffer(); double percentage = 0; if (player.getInitialBV() != 0) { percentage = ((player.getBV() + 0.0) / player.getInitialBV()) * 100; } cb.append(player.getName()).append(": "); if (suppressEnemyBV && player.isEnemyOf(requestingPlayer)) { cb.append(" Enemy BV suppressed"); } else { cb.append(player.getBV()).append("/").append(player.getInitialBV()); cb.append(String.format(" (%1$3.2f%%)",percentage)); } server.sendServerChat(connId, cb.toString()); } server.sendServerChat(connId, "end list"); }
/** * Logic lifted from BoardView1.redrawEntity() that checks whether the given player playing the given game * can see the given entity. Takes into account double blind, hidden units, team vision, etc. * @param localPlayer The player to check. * @param game Game object * @param entity The entity to check * @return Whether or not the player can see the entity. */ public static boolean detectedOrHasVisual(IPlayer localPlayer, IGame game, Entity entity) { boolean canSee = (localPlayer == null) || !game.getOptions().booleanOption(OptionsConstants.ADVANCED_DOUBLE_BLIND) || !entity.getOwner().isEnemyOf(localPlayer) || entity.hasSeenEntity(localPlayer) || entity.hasDetectedEntity(localPlayer); canSee &= (localPlayer == null) || !game.getOptions().booleanOption(OptionsConstants.ADVANCED_HIDDEN_UNITS) || !entity.getOwner().isEnemyOf(localPlayer) || !entity.isHidden(); return canSee; }
/** * Variation on getTargetableEnemyEntities. * Returns all possible enemy targets, regardless of LOS status. * @param player The player from whose perspective enemies are determined. * @param game The game being played. * @return A list of potential targets. */ static List<Targetable> getAllTargetableEnemyEntities(final IPlayer player, final IGame game, final FireControlState fireControlState) { final List<Targetable> targetableEnemyList = new ArrayList<>(); // Go through every unit in the game. for (final Entity entity : game.getEntitiesVector()) { // If they are my enemy and on the board, they're a target. if (entity.getOwner().isEnemyOf(player) && (null != entity.getPosition()) && !entity.isOffBoard() && entity.isTargetable() && (null != entity.getCrew()) && !entity.getCrew().isDead()) { targetableEnemyList.add(entity); } } // Add in potential building targets and the like. targetableEnemyList.addAll(fireControlState.getAdditionalTargets()); return targetableEnemyList; }
/** * Gets all the entities that are potential targets * * @param shooter The unit doing the shooting. * @param game The game being played. * @return A list of potential targets. */ private List<Targetable> getTargetableEnemyEntities(final Entity shooter, final IGame game, final FireControlState fireControlState) { final List<Targetable> targetableEnemyList = new ArrayList<>(); // Go through every unit in the game. for (final Entity entity : game.getEntitiesVector()) { // If they are my enenmy and on the board, they're a target. if (entity.getOwner().isEnemyOf(shooter.getOwner()) && (null != entity.getPosition()) && !entity.isOffBoard() && entity.isTargetable() && (null != entity.getCrew()) && !entity.getCrew().isDead()) { final LosEffects effects = LosEffects.calculateLos(game, shooter.getId(), entity); if (effects.canSee()) { targetableEnemyList.add(entity); } } } // Add in potential building targets and the like. targetableEnemyList.addAll(fireControlState.getAdditionalTargets()); return targetableEnemyList; }
/** * Returns whether this Entity is a sensor return to the given player. * * @param spotter * The player trying to view this unit * @return True if the given player can only see this Entity as a sensor * return */ public boolean isSensorReturn(IPlayer spotter) { boolean alliedUnit = !getOwner().isEnemyOf(spotter) || (getOwner().getTeam() == spotter.getTeam() && game.getOptions().booleanOption(OptionsConstants.ADVANCED_TEAM_VISION)); boolean sensors = (game.getOptions().booleanOption( OptionsConstants.ADVANCED_TACOPS_SENSORS) || game.getOptions().booleanOption(OptionsConstants.ADVAERORULES_STRATOPS_ADVANCED_SENSORS)); boolean sensorsDetectAll = game.getOptions().booleanOption( OptionsConstants.ADVANCED_SENSORS_DETECT_ALL); boolean doubleBlind = game.getOptions().booleanOption( OptionsConstants.ADVANCED_DOUBLE_BLIND); return sensors && doubleBlind && !alliedUnit && !sensorsDetectAll && !hasSeenEntity(spotter) && hasDetectedEntity(spotter); }
Assert.assertTrue(mockHumanPlayerDave.isEnemyOf(mockBotPlayerHal)); Assert.assertTrue(chatProcessor.shouldBotAcknowledgeDefeat(msg, mockBotHal));