All 1-character strings converted to primitives

"b" + "r" now changed to 'b' + 'w'.  It's more straight-forward, and may cause perfomance improvements - character primitives allocation is faster and less expensive than string creation.
This commit is contained in:
vraskulin 2017-01-27 15:57:10 +03:00
parent 7b35e25347
commit 0de8bd2f70
453 changed files with 991 additions and 979 deletions

View file

@ -142,16 +142,16 @@ public class Commander extends Constructed {
} else {
for (Card commander : deck.getSideboard()) {
if (bannedCommander.contains(commander.getName())) {
invalid.put("Commander", "Commander banned (" + commander.getName() + ")");
invalid.put("Commander", "Commander banned (" + commander.getName() + ')');
valid = false;
}
if ((!commander.getCardType().contains(CardType.CREATURE) || !commander.getSupertype().contains("Legendary"))
&& (!commander.getCardType().contains(CardType.PLANESWALKER) || !commander.getAbilities().contains(CanBeYourCommanderAbility.getInstance()))) {
invalid.put("Commander", "Commander invalid (" + commander.getName() + ")");
invalid.put("Commander", "Commander invalid (" + commander.getName() + ')');
valid = false;
}
if (deck.getSideboard().size() == 2 && !commander.getAbilities().contains(PartnerAbility.getInstance())) {
invalid.put("Commander", "Commander without Partner (" + commander.getName() + ")");
invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
valid = false;
}
FilterMana commanderColor = CardUtil.getColorIdentity(commander);
@ -174,7 +174,7 @@ public class Commander extends Constructed {
}
for (Card card : deck.getCards()) {
if (!cardHasValidColor(colorIdentity, card)) {
invalid.put(card.getName(), "Invalid color (" + colorIdentity.toString() + ")");
invalid.put(card.getName(), "Invalid color (" + colorIdentity.toString() + ')');
valid = false;
}
}

View file

@ -189,11 +189,11 @@ public class TinyLeaders extends Constructed {
}
}
} else {
invalid.put("Commander", "Commander banned (" + commander.getName() + ")");
invalid.put("Commander", "Commander banned (" + commander.getName() + ')');
valid = false;
}
} else {
invalid.put("Commander", "Commander invalide (" + commander.getName() + ")");
invalid.put("Commander", "Commander invalide (" + commander.getName() + ')');
valid = false;
}
} else {
@ -221,22 +221,22 @@ public class TinyLeaders extends Constructed {
private boolean isCardFormatValid(Card card, Card commander, FilterMana color) {
if (!cardHasValideColor(color, card)) {
invalid.put(card.getName(), "Invalid color (" + commander.getName() + ")");
invalid.put(card.getName(), "Invalid color (" + commander.getName() + ')');
return false;
}
//905.5b - Converted mana cost must be 3 or less
if (card instanceof SplitCard) {
if (((SplitCard) card).getLeftHalfCard().getManaCost().convertedManaCost() > 3) {
invalid.put(card.getName(), "Invalid cost (" + ((SplitCard) card).getLeftHalfCard().getManaCost().convertedManaCost() + ")");
invalid.put(card.getName(), "Invalid cost (" + ((SplitCard) card).getLeftHalfCard().getManaCost().convertedManaCost() + ')');
return false;
}
if (((SplitCard) card).getRightHalfCard().getManaCost().convertedManaCost() > 3) {
invalid.put(card.getName(), "Invalid cost (" + ((SplitCard) card).getRightHalfCard().getManaCost().convertedManaCost() + ")");
invalid.put(card.getName(), "Invalid cost (" + ((SplitCard) card).getRightHalfCard().getManaCost().convertedManaCost() + ')');
return false;
}
} else if (card.getManaCost().convertedManaCost() > 3) {
invalid.put(card.getName(), "Invalid cost (" + card.getManaCost().convertedManaCost() + ")");
invalid.put(card.getName(), "Invalid cost (" + card.getManaCost().convertedManaCost() + ')');
return false;
}
return true;

View file

@ -244,9 +244,9 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
logger.info(new StringBuilder("[").append(game.getPlayer(playerId).getName()).append("], life = ").append(player.getLife()).toString());
StringBuilder sb = new StringBuilder("-> Hand: [");
for (Card card : player.getHand().getCards(game)) {
sb.append(card.getName()).append(";");
sb.append(card.getName()).append(';');
}
logger.info(sb.append("]").toString());
logger.info(sb.append(']').toString());
sb.setLength(0);
sb.append("-> Permanents: [");
for (Permanent permanent : game.getBattlefield().getAllPermanents()) {
@ -258,10 +258,10 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
if (permanent.isAttacking()) {
sb.append("(attacking)");
}
sb.append(";");
sb.append(';');
}
}
logger.info(sb.append("]").toString());
logger.info(sb.append(']').toString());
}
protected void act(Game game) {
@ -329,7 +329,7 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
//System.out.println("[" + game.getPlayer(playerId).getName() + "] Action: not better score");
//}
} else {
logger.info("[" + game.getPlayer(playerId).getName() + "] Action: skip Root.score = " + root.getScore() + " currentScore = " + currentScore);
logger.info('[' + game.getPlayer(playerId).getName() + "] Action: skip Root.score = " + root.getScore() + " currentScore = " + currentScore);
}
}
}
@ -372,7 +372,7 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
}
protected int minimaxAB(SimulationNode2 node, int depth, int alpha, int beta) {
logger.trace("Sim minimaxAB [" + depth + "] -- a: " + alpha + " b: " + beta + " <" + (node != null ? node.getScore() : "null") + ">");
logger.trace("Sim minimaxAB [" + depth + "] -- a: " + alpha + " b: " + beta + " <" + (node != null ? node.getScore() : "null") + '>');
UUID currentPlayerId = node.getGame().getPlayerList().get();
SimulationNode2 bestChild = null;
for (SimulationNode2 child : node.getChildren()) {
@ -569,7 +569,7 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
List<Ability> allActions = currentPlayer.simulatePriority(game);
optimize(game, allActions);
if (logger.isInfoEnabled() && allActions.size() > 0 && depth == maxDepth) {
logger.info("ADDED ACTIONS (" + allActions.size() + ") " + " " + allActions);
logger.info("ADDED ACTIONS (" + allActions.size() + ") " + ' ' + allActions);
}
int counter = 0;
int bestValSubNodes = Integer.MIN_VALUE;
@ -606,18 +606,18 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
} else {
val = addActions(newNode, depth - 1, alpha, beta);
}
logger.debug("Sim Prio " + BLANKS.substring(0, 2 + (maxDepth - depth) * 3) + "[" + depth + "]#" + counter + " <" + val + "> - (" + action.toString() + ") ");
logger.debug("Sim Prio " + BLANKS.substring(0, 2 + (maxDepth - depth) * 3) + '[' + depth + "]#" + counter + " <" + val + "> - (" + action.toString() + ") ");
if (logger.isInfoEnabled() && depth >= maxDepth) {
StringBuilder sb = new StringBuilder("Sim Prio [").append(depth).append("] #").append(counter)
.append(" <").append(val).append("> (").append(action)
.append(action.isModal() ? " Mode = " + action.getModes().getMode().toString() : "")
.append(listTargets(game, action.getTargets())).append(")")
.append(listTargets(game, action.getTargets())).append(')')
.append(logger.isTraceEnabled() ? " #" + newNode.hashCode() : "");
SimulationNode2 logNode = newNode;
while (logNode.getChildren() != null && logNode.getChildren().size() > 0) {
logNode = logNode.getChildren().get(0);
if (logNode.getAbilities() != null && logNode.getAbilities().size() > 0) {
sb.append(" -> [").append(logNode.getDepth()).append("]").append(logNode.getAbilities().toString()).append("<").append(logNode.getScore()).append(">");
sb.append(" -> [").append(logNode.getDepth()).append(']').append(logNode.getAbilities().toString()).append('<').append(logNode.getScore()).append('>');
}
}
logger.info(sb);
@ -1437,7 +1437,7 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ {
StringBuilder sb = new StringBuilder();
if (targets != null) {
for (Target target : targets) {
sb.append("[").append(target.getTargetedName(game)).append("]");
sb.append('[').append(target.getTargetedName(game)).append(']');
}
if (sb.length() > 0) {
sb.insert(0, " targeting ");

View file

@ -174,7 +174,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 {
if (root.abilities.size() == 1) {
for (Ability ability : root.abilities) {
if (ability.getManaCosts().convertedManaCost() == 0 && ability.getCosts().isEmpty()) {
if (actionCache.contains(ability.getRule() + "_" + ability.getSourceId())) {
if (actionCache.contains(ability.getRule() + '_' + ability.getSourceId())) {
doThis = false; // don't do it again
}
}
@ -184,11 +184,11 @@ public class ComputerPlayer7 extends ComputerPlayer6 {
actions = new LinkedList<>(root.abilities);
combat = root.combat;
for (Ability ability : actions) {
actionCache.add(ability.getRule() + "_" + ability.getSourceId());
actionCache.add(ability.getRule() + '_' + ability.getSourceId());
}
}
} else {
logger.info("[" + game.getPlayer(playerId).getName() + "][pre] Action: skip");
logger.info('[' + game.getPlayer(playerId).getName() + "][pre] Action: skip");
}
} else {
logger.debug("Next Action exists!");
@ -211,10 +211,10 @@ public class ComputerPlayer7 extends ComputerPlayer6 {
actions = new LinkedList<>(root.abilities);
combat = root.combat;
} else {
logger.debug("[" + game.getPlayer(playerId).getName() + "] no better score current: " + currentScore + " bestScore: " + bestScore);
logger.debug('[' + game.getPlayer(playerId).getName() + "] no better score current: " + currentScore + " bestScore: " + bestScore);
}
} else {
logger.debug("[" + game.getPlayer(playerId).getName() + "][post] Action: skip");
logger.debug('[' + game.getPlayer(playerId).getName() + "][post] Action: skip");
}
}
}
@ -236,10 +236,10 @@ public class ComputerPlayer7 extends ComputerPlayer6 {
if (depth <= 0 || SimulationNode2.nodeCount > maxNodes || game.gameOver(null)) {
val = GameStateEvaluator2.evaluate(playerId, game);
if (logger.isTraceEnabled()) {
StringBuilder sb = new StringBuilder("Add Actions -- reached end state <").append(val).append(">");
StringBuilder sb = new StringBuilder("Add Actions -- reached end state <").append(val).append('>');
SimulationNode2 logNode = node;
do {
sb.append(new StringBuilder(" <- [" + logNode.getDepth() + "]" + (logNode.getAbilities() != null ? logNode.getAbilities().toString() : "[empty]")));
sb.append(new StringBuilder(" <- [" + logNode.getDepth() + ']' + (logNode.getAbilities() != null ? logNode.getAbilities().toString() : "[empty]")));
logNode = logNode.getParent();
} while ((logNode.getParent() != null));
logger.trace(sb);
@ -253,7 +253,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 {
for (SimulationNode2 logNode : node.getChildren()) {
sb.append(logNode.getAbilities() != null ? logNode.getAbilities().toString() : "null").append(", ");
}
sb.append(")");
sb.append(')');
logger.debug(sb);
}
val = minimaxAB(node, depth - 1, alpha, beta);
@ -308,7 +308,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 {
for (SimulationNode2 logNode : node.getChildren()) {
sb.append(logNode.getAbilities() != null ? logNode.getAbilities().toString() : "null").append(", ");
}
sb.append(")");
sb.append(')');
logger.debug(sb);
}

View file

@ -64,7 +64,7 @@ public class GameStateEvaluator2 {
int onePermScore = evaluatePermanent(permanent, game);
playerScore += onePermScore;
if (logger.isDebugEnabled()) {
sbPlayer.append(permanent.getName()).append("[").append(onePermScore).append("] ");
sbPlayer.append(permanent.getName()).append('[').append(onePermScore).append("] ");
}
}
if (logger.isDebugEnabled()) {
@ -78,7 +78,7 @@ public class GameStateEvaluator2 {
int onePermScore = evaluatePermanent(permanent, game);
opponentScore += onePermScore;
if (logger.isDebugEnabled()) {
sbOpponent.append(permanent.getName()).append("[").append(onePermScore).append("] ");
sbOpponent.append(permanent.getName()).append('[').append(onePermScore).append("] ");
}
}
if (logger.isDebugEnabled()) {
@ -97,7 +97,7 @@ public class GameStateEvaluator2 {
handScore *= 5;
int score = lifeScore + permanentScore + handScore;
logger.debug(score + " total Score (life:" + lifeScore + " permanents:" + permanentScore + " hand:" + handScore + ")");
logger.debug(score + " total Score (life:" + lifeScore + " permanents:" + permanentScore + " hand:" + handScore + ')');
return score;
}

View file

@ -170,7 +170,7 @@ public class SimulatedPlayer2 extends ComputerPlayer {
}
}
// add the specific value for x
newAbility.getManaCostsToPay().add(new ManaCostsImpl(new StringBuilder("{").append(xAmount).append("}").toString()));
newAbility.getManaCostsToPay().add(new ManaCostsImpl(new StringBuilder("{").append(xAmount).append('}').toString()));
newAbility.getManaCostsToPay().setX(xAmount);
if (varCost != null) {
varCost.setPaid();
@ -338,7 +338,7 @@ public class SimulatedPlayer2 extends ComputerPlayer {
binary.setLength(0);
binary.append(Integer.toBinaryString(i));
while (binary.length() < attackersList.size()) {
binary.insert(0, "0");
binary.insert(0, '0');
}
for (int j = 0; j < attackersList.size(); j++) {
if (binary.charAt(j) == '1') {

View file

@ -161,7 +161,7 @@ public class CombatUtil {
UUID attackerId = game.getCombat().getAttackerId();
UUID defenderId = game.getCombat().getDefenders().iterator().next();
if (attackerId == null || defenderId == null) {
log.warn("Couldn't find attacker or defender: " + attackerId + " " + defenderId);
log.warn("Couldn't find attacker or defender: " + attackerId + ' ' + defenderId);
return new CombatInfo();
}
@ -298,7 +298,7 @@ public class CombatUtil {
UUID attackerId = game.getCombat().getAttackerId();
UUID defenderId = game.getCombat().getDefenders().iterator().next();
if (attackerId == null || defenderId == null) {
log.warn("Couldn't find attacker or defender: " + attackerId + " " + defenderId);
log.warn("Couldn't find attacker or defender: " + attackerId + ' ' + defenderId);
return new CombatInfo();
}

View file

@ -199,7 +199,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
@Override
public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game, Map<String, Serializable> options) {
if (log.isDebugEnabled()) {
log.debug("chooseTarget: " + outcome.toString() + ":" + target.toString());
log.debug("chooseTarget: " + outcome.toString() + ':' + target.toString());
}
// sometimes a target selection can be made from a player that does not control the ability
UUID abilityControllerId = playerId;
@ -450,7 +450,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
@Override
public boolean chooseTarget(Outcome outcome, Target target, Ability source, Game game) {
if (log.isDebugEnabled()) {
log.debug("chooseTarget: " + outcome.toString() + ":" + target.toString());
log.debug("chooseTarget: " + outcome.toString() + ':' + target.toString());
}
// sometimes a target selection can be made from a player that does not control the ability
UUID abilityControllerId = playerId;
@ -817,7 +817,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
@Override
public boolean chooseTargetAmount(Outcome outcome, TargetAmount target, Ability source, Game game) {
if (log.isDebugEnabled()) {
log.debug("chooseTarget: " + outcome.toString() + ":" + target.toString());
log.debug("chooseTarget: " + outcome.toString() + ':' + target.toString());
}
UUID opponentId = game.getOpponents(playerId).iterator().next();
if (target.getOriginalTarget() instanceof TargetCreatureOrPlayerAmount) {
@ -1999,7 +1999,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (int i = 1; i < powerElements; i++) {
String binary = Integer.toBinaryString(i);
while (binary.length() < attackersList.size()) {
binary = "0" + binary;
binary = '0' + binary;
}
List<Permanent> trialAttackers = new ArrayList<>();
for (int j = 0; j < attackersList.size(); j++) {
@ -2119,7 +2119,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
StringBuilder sb = new StringBuilder();
sb.append(message).append(": ");
for (MageObject object : list) {
sb.append(object.getName()).append(",");
sb.append(object.getName()).append(',');
}
log.info(sb.toString());
}
@ -2128,7 +2128,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
StringBuilder sb = new StringBuilder();
sb.append(message).append(": ");
for (Ability ability : list) {
sb.append(ability.getRule()).append(",");
sb.append(ability.getRule()).append(',');
}
log.debug(sb.toString());
}

View file

@ -215,7 +215,7 @@ public class ComputerPlayerMCTS extends ComputerPlayer implements Player {
UUID opponentId = game.getCombat().getDefenders().iterator().next();
for (UUID attackerId: combat.getAttackers()) {
this.declareAttacker(attackerId, opponentId, game, false);
sb.append(game.getPermanent(attackerId).getName()).append(",");
sb.append(game.getPermanent(attackerId).getName()).append(',');
}
logger.info(sb.toString());
MCTSNode.logHitMiss();
@ -233,9 +233,9 @@ public class ComputerPlayerMCTS extends ComputerPlayer implements Player {
sb.append(game.getPermanent(groups.get(i).getAttackers().get(0)).getName()).append(" with: ");
for (UUID blockerId: combat.getGroups().get(i).getBlockers()) {
this.declareBlocker(this.getId(), blockerId, groups.get(i).getAttackers().get(0), game);
sb.append(game.getPermanent(blockerId).getName()).append(",");
sb.append(game.getPermanent(blockerId).getName()).append(',');
}
sb.append("|");
sb.append('|');
}
}
logger.info(sb.toString());
@ -448,7 +448,7 @@ public class ComputerPlayerMCTS extends ComputerPlayer implements Player {
StringBuilder sb = new StringBuilder();
sb.append(game.getTurn().getValue(game.getTurnNum()));
for (Player player: game.getPlayers().values()) {
sb.append("[player ").append(player.getName()).append(":").append(player.getLife()).append("]");
sb.append("[player ").append(player.getName()).append(':').append(player.getLife()).append(']');
}
logger.info(sb.toString());
}

View file

@ -567,9 +567,9 @@ public class MCTSNode {
public static void logHitMiss() {
if (USE_ACTION_CACHE) {
StringBuilder sb = new StringBuilder();
sb.append("Playables Cache -- Hits: ").append(playablesHit).append(" Misses: ").append(playablesMiss).append("\n");
sb.append("Attacks Cache -- Hits: ").append(attacksHit).append(" Misses: ").append(attacksMiss).append("\n");
sb.append("Blocks Cache -- Hits: ").append(blocksHit).append(" Misses: ").append(blocksMiss).append("\n");
sb.append("Playables Cache -- Hits: ").append(playablesHit).append(" Misses: ").append(playablesMiss).append('\n');
sb.append("Attacks Cache -- Hits: ").append(attacksHit).append(" Misses: ").append(attacksMiss).append('\n');
sb.append("Blocks Cache -- Hits: ").append(blocksHit).append(" Misses: ").append(blocksMiss).append('\n');
logger.info(sb.toString());
}
}

View file

@ -131,7 +131,7 @@ public class MCTSPlayer extends ComputerPlayer {
binary.setLength(0);
binary.append(Integer.toBinaryString(i));
while (binary.length() < attackersList.size()) {
binary.insert(0, "0");
binary.insert(0, '0');
}
List<UUID> engagement = new ArrayList<UUID>();
for (int j = 0; j < attackersList.size(); j++) {

View file

@ -195,7 +195,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
StringBuilder binary = new StringBuilder();
binary.append(Integer.toBinaryString(value));
while (binary.length() < attackersList.size()) {
binary.insert(0, "0"); //pad with zeros
binary.insert(0, '0'); //pad with zeros
}
for (int i = 0; i < attackersList.size(); i++) {
if (binary.charAt(i) == '1') {

View file

@ -297,7 +297,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements Player {
task.get(maxThink, TimeUnit.SECONDS);
long endTime = System.nanoTime();
long duration = endTime - startTime;
logger.info("Calculated " + SimulationNode.nodeCount + " nodes in " + duration/1000000000.0 + "s");
logger.info("Calculated " + SimulationNode.nodeCount + " nodes in " + duration/1000000000.0 + 's');
nodeCount += SimulationNode.nodeCount;
thinkTime += duration;
} catch (TimeoutException e) {
@ -311,7 +311,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements Player {
}
long endTime = System.nanoTime();
long duration = endTime - startTime;
logger.info("Timeout - Calculated " + SimulationNode.nodeCount + " nodes in " + duration/1000000000.0 + "s");
logger.info("Timeout - Calculated " + SimulationNode.nodeCount + " nodes in " + duration/1000000000.0 + 's');
nodeCount += SimulationNode.nodeCount;
thinkTime += duration;
} catch (ExecutionException e) {

View file

@ -172,7 +172,7 @@ public class SimulatedPlayer extends ComputerPlayer {
binary.setLength(0);
binary.append(Integer.toBinaryString(i));
while (binary.length() < attackersList.size()) {
binary.insert(0, "0");
binary.insert(0, '0');
}
for (int j = 0; j < attackersList.size(); j++) {
if (binary.charAt(j) == '1') {

View file

@ -990,7 +990,7 @@ public class HumanPlayer extends PlayerImpl {
} else {
Permanent creature = game.getPermanent(creatureId);
if (creature != null) {
sb.append(creature.getIdName()).append(" ");
sb.append(creature.getIdName()).append(' ');
}
}
@ -1066,7 +1066,7 @@ public class HumanPlayer extends PlayerImpl {
StringBuilder sb = new StringBuilder(target.getTargetName());
Permanent attacker = game.getPermanent(attackerId);
if (attacker != null) {
sb.append(" (").append(attacker.getName()).append(")");
sb.append(" (").append(attacker.getName()).append(')');
target.setTargetName(sb.toString());
}
}
@ -1493,7 +1493,7 @@ public class HumanPlayer extends PlayerImpl {
this.quit(game);
return;
}
logger.debug("Setting game priority to " + getId() + " [" + methodName + "]");
logger.debug("Setting game priority to " + getId() + " [" + methodName + ']');
game.getState().setPriorityPlayerId(getId());
}
}