--- .../freecol/client/control/InGameController.java | 36 ++++--- .../freecol/client/control/PreGameController.java | 3 +- src/net/sf/freecol/client/gui/GrayLayer.java | 4 +- src/net/sf/freecol/client/gui/ModifierFormat.java | 3 +- .../freecol/client/gui/dialog/PreCombatDialog.java | 3 +- .../sf/freecol/client/gui/menu/InGameMenuBar.java | 3 +- .../freecol/client/gui/panel/BuildQueuePanel.java | 6 +- .../client/gui/panel/WorkProductionPanel.java | 3 +- .../gui/panel/colopedia/FatherDetailPanel.java | 6 +- .../report/ReportContinentalCongressPanel.java | 8 +- .../gui/panel/report/ReportExplorationPanel.java | 6 +- .../gui/panel/report/ReportHistoryPanel.java | 3 +- .../freecol/client/gui/tooltip/RebelToolTip.java | 3 +- src/net/sf/freecol/common/model/Building.java | 10 +- src/net/sf/freecol/common/model/BuildingType.java | 2 +- src/net/sf/freecol/common/model/Colony.java | 16 +-- src/net/sf/freecol/common/model/ColonyTile.java | 2 +- src/net/sf/freecol/common/model/Europe.java | 2 +- src/net/sf/freecol/common/model/Feature.java | 69 +++++++------ .../sf/freecol/common/model/FeatureContainer.java | 18 ++-- src/net/sf/freecol/common/model/FreeColObject.java | 23 +++-- src/net/sf/freecol/common/model/Game.java | 14 ++- src/net/sf/freecol/common/model/HighScore.java | 4 +- src/net/sf/freecol/common/model/HistoryEvent.java | 14 +-- src/net/sf/freecol/common/model/LastSale.java | 12 +-- .../sf/freecol/common/model/LostCityRumour.java | 4 +- src/net/sf/freecol/common/model/Modifier.java | 14 +-- src/net/sf/freecol/common/model/Monarch.java | 6 +- src/net/sf/freecol/common/model/Operand.java | 2 +- src/net/sf/freecol/common/model/Player.java | 10 +- .../sf/freecol/common/model/ProductionCache.java | 2 +- src/net/sf/freecol/common/model/Region.java | 15 ++- src/net/sf/freecol/common/model/Resource.java | 2 +- src/net/sf/freecol/common/model/Role.java | 4 +- src/net/sf/freecol/common/model/Settlement.java | 2 +- .../sf/freecol/common/model/SimpleCombatModel.java | 8 +- src/net/sf/freecol/common/model/Specification.java | 3 +- src/net/sf/freecol/common/model/Tile.java | 4 +- .../freecol/common/model/TileImprovementType.java | 2 +- src/net/sf/freecol/common/model/TileType.java | 2 +- src/net/sf/freecol/common/model/Turn.java | 111 ++------------------- src/net/sf/freecol/common/model/Unit.java | 13 ++- src/net/sf/freecol/common/model/UnitType.java | 5 +- src/net/sf/freecol/common/model/WorkLocation.java | 2 +- .../freecol/common/networking/NewTurnMessage.java | 5 +- src/net/sf/freecol/server/ai/AIColony.java | 16 +-- src/net/sf/freecol/server/ai/EuropeanAIPlayer.java | 20 ++-- src/net/sf/freecol/server/ai/NativeAIPlayer.java | 10 +- src/net/sf/freecol/server/ai/goal/Goal.java | 5 +- .../freecol/server/control/InGameController.java | 10 +- src/net/sf/freecol/server/model/ServerGame.java | 2 +- .../server/model/ServerIndianSettlement.java | 2 +- src/net/sf/freecol/server/model/ServerPlayer.java | 12 +-- src/net/sf/freecol/server/model/ServerRegion.java | 4 +- src/net/sf/freecol/server/model/ServerUnit.java | 2 +- .../net/sf/freecol/common/model/BuildingTest.java | 4 +- .../net/sf/freecol/common/model/ColonyTest.java | 2 +- test/src/net/sf/freecol/common/model/GameTest.java | 10 +- .../net/sf/freecol/common/model/ModifierTest.java | 47 +++++---- .../net/sf/freecol/common/model/MonarchTest.java | 2 +- test/src/net/sf/freecol/common/model/TileTest.java | 2 +- .../freecol/server/generator/MapGeneratorTest.java | 2 +- .../sf/freecol/server/model/ServerPlayerTest.java | 8 +- 63 files changed, 274 insertions(+), 375 deletions(-)
diff --git a/src/net/sf/freecol/client/control/InGameController.java b/src/net/sf/freecol/client/control/InGameController.java index e8ba77ef074..c68d418a4d5 100644 --- a/src/net/sf/freecol/client/control/InGameController.java +++ b/src/net/sf/freecol/client/control/InGameController.java @@ -510,10 +510,10 @@ public final class InGameController extends FreeColClientHolder { private String getSaveGameString(Game game) { final Player player = getMyPlayer(); final String gid = Integer.toHexString(game.getUUID().hashCode()); - final Turn turn = game.getTurn(); + final int turn = game.getTurn(); return (/* player.getName() + "_" */ gid + "_" + Messages.message(player.getNationLabel()) - + "_" + turn.getSaveGameSuffix() + + "_" + Turn.getSaveGameSuffix(turn) + "." + FreeCol.FREECOL_SAVE_EXTENSION) .replaceAll(" ", "_"); } @@ -561,7 +561,7 @@ public final class InGameController extends FreeColClientHolder { // conditional save after user-set period int saveGamePeriod = options.getInteger(ClientOptions.AUTOSAVE_PERIOD); - int turnNumber = game.getTurn().getNumber(); + int turnNumber = game.getTurn(); if (saveGamePeriod >= 1 && turnNumber % saveGamePeriod == 0) { String fileName = prefix + "-" + getSaveGameString(game); saveGame(FreeColDirectories.getAutosaveFile(fileName)); @@ -613,8 +613,8 @@ public final class InGameController extends FreeColClientHolder { * @param key The key for a message to ignore. * @param turn The current {@code Turn}. */ - private synchronized void startIgnoringMessage(String key, Turn turn) { - messagesToIgnore.put(key, turn.getNumber()); + private synchronized void startIgnoringMessage(String key, int turn) { + messagesToIgnore.put(key, turn); logger.finer("Ignore message start: " + key); } @@ -633,8 +633,8 @@ public final class InGameController extends FreeColClientHolder { * * @param turn The {@code Turn} value to test against. */ - private synchronized void reapIgnoredMessages(Turn turn) { - removeInPlace(messagesToIgnore, e -> e.getValue() < turn.getNumber()); + private synchronized void reapIgnoredMessages(int turn) { + removeInPlace(messagesToIgnore, e -> e.getValue() < turn); } /** @@ -645,11 +645,11 @@ public final class InGameController extends FreeColClientHolder { * @param turn The current {@code Turn}. * @return True if the message should continue to be ignored. */ - private synchronized boolean continueIgnoreMessage(String key, Turn turn) { + private synchronized boolean continueIgnoreMessage(String key, int turn) { Integer value; if (key != null && (value = messagesToIgnore.get(key)) != null - && value + 1 == turn.getNumber()) { + && value + 1 == turn) { messagesToIgnore.put(key, value + 1); logger.finer("Ignore message continue: " + key); return true; @@ -674,7 +674,7 @@ public final class InGameController extends FreeColClientHolder { public boolean displayModelMessages(final boolean allMessages, final boolean endOfTurn) { final Player player = getMyPlayer(); - final Turn thisTurn = getGame().getTurn(); + final int thisTurn = getGame().getTurn(); final ArrayList<ModelMessage> messages = new ArrayList<>(); for (ModelMessage m : ((allMessages) ? player.getModelMessages() @@ -3328,7 +3328,7 @@ public final class InGameController extends FreeColClientHolder { || (key = message.getIgnoredMessageKey()) == null) return false; if (flag) { - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); if (!continueIgnoreMessage(key, turn)) { startIgnoringMessage(key, turn); } @@ -4094,20 +4094,18 @@ public final class InGameController extends FreeColClientHolder { logger.warning("Bad turn in newTurn: " + turn); return false; } - Turn newTurn = new Turn(turn); - game.setTurn(newTurn); - logger.info("New turn: " + newTurn + "/" + turn); + game.setTurn(turn); + logger.info("New turn: " + turn); if (getClientOptions().getBoolean(ClientOptions.AUDIO_ALERTS)) { sound("sound.event.alertSound"); } - final Turn currTurn = game.getTurn(); - if (currTurn.isFirstSeasonTurn()) { + if (turn == Turn.FIRST_TURN) { player.addModelMessage(new ModelMessage(MessageType.WARNING, "twoTurnsPerYear", player) - .addStringTemplate("%year%", currTurn.getLabel()) - .addAmount("%amount%", currTurn.getSeasonNumber())); + .addStringTemplate("%year%", Turn.getLabel(turn)) + .addAmount("%amount%", Turn.getSeasonNumber())); } player.clearNationCache(); return true; @@ -4597,7 +4595,7 @@ public final class InGameController extends FreeColClientHolder { // Save the game (if it isn't newly loaded) if (getFreeColServer() != null - && game.getTurn().getNumber() > 0) autoSaveGame(); + && game.getTurn() > 0) autoSaveGame(); // Get turn report out quickly before more message display occurs. player.removeDisplayedModelMessages(); diff --git a/src/net/sf/freecol/client/control/PreGameController.java b/src/net/sf/freecol/client/control/PreGameController.java index 3db4269c65f..33709012e08 100644 --- a/src/net/sf/freecol/client/control/PreGameController.java +++ b/src/net/sf/freecol/client/control/PreGameController.java @@ -37,6 +37,7 @@ import net.sf.freecol.common.model.NationType; import net.sf.freecol.common.model.Player; import net.sf.freecol.common.model.StringTemplate; import net.sf.freecol.common.model.Tile; +import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.model.Unit; import net.sf.freecol.common.option.GameOptions; import net.sf.freecol.common.option.MapGeneratorOptions; @@ -188,7 +189,7 @@ public final class PreGameController extends FreeColClientHolder { } // Tutorial message if needed - if (game.getTurn().getNumber() == 1) { + if (game.getTurn() == Turn.FIRST_TURN) { player.addStartGameMessage(); } igc().nextModelMessage(); diff --git a/src/net/sf/freecol/client/gui/GrayLayer.java b/src/net/sf/freecol/client/gui/GrayLayer.java index 1d3c9e34741..99af3fe0c35 100644 --- a/src/net/sf/freecol/client/gui/GrayLayer.java +++ b/src/net/sf/freecol/client/gui/GrayLayer.java @@ -34,6 +34,7 @@ import net.sf.freecol.client.FreeColClient; import net.sf.freecol.client.gui.panel.InfoPanel; import net.sf.freecol.common.i18n.Messages; import net.sf.freecol.common.model.Player; +import net.sf.freecol.common.model.Turn; /** @@ -101,8 +102,7 @@ public class GrayLayer extends Component { Color colour = null; if (player == null) { - message = Messages.message(freeColClient.getGame().getTurn() - .getLabel()); + message = Messages.message(Turn.getLabel(freeColClient.getGame().getTurn())); colour = Color.WHITE; } else { diff --git a/src/net/sf/freecol/client/gui/ModifierFormat.java b/src/net/sf/freecol/client/gui/ModifierFormat.java index c15c78808dd..8483f51b16c 100644 --- a/src/net/sf/freecol/client/gui/ModifierFormat.java +++ b/src/net/sf/freecol/client/gui/ModifierFormat.java @@ -34,7 +34,6 @@ import net.sf.freecol.common.model.Modifier.ModifierType; import net.sf.freecol.common.model.Nameable; import net.sf.freecol.common.model.Named; import net.sf.freecol.common.model.Scope; -import net.sf.freecol.common.model.Turn; import static net.sf.freecol.common.util.CollectionUtils.*; @@ -100,7 +99,7 @@ public class ModifierFormat { public static JLabel[] getModifierLabels(Modifier modifier, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { String sourceName = getSourceName(modifier.getSource()); if (fcgot != null && modifier.appliesTo(fcgot)) { sourceName += " (" + Messages.getName(fcgot) + ")"; diff --git a/src/net/sf/freecol/client/gui/dialog/PreCombatDialog.java b/src/net/sf/freecol/client/gui/dialog/PreCombatDialog.java index cd4161a6c63..3a9c6fdb200 100644 --- a/src/net/sf/freecol/client/gui/dialog/PreCombatDialog.java +++ b/src/net/sf/freecol/client/gui/dialog/PreCombatDialog.java @@ -42,7 +42,6 @@ import net.sf.freecol.common.model.FreeColGameObject; import net.sf.freecol.common.model.Game; import net.sf.freecol.common.model.Modifier; import net.sf.freecol.common.model.Settlement; -import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.model.Unit; import static net.sf.freecol.common.util.CollectionUtils.*; @@ -68,7 +67,7 @@ public class PreCombatDialog extends FreeColConfirmDialog { final ImageLibrary lib = freeColClient.getGUI().getImageLibrary(); final Game game = attacker.getGame(); final CombatModel combatModel = game.getCombatModel(); - final Turn turn = game.getTurn(); + final int turn = game.getTurn(); final Set<Modifier> attackModifiers = combatModel.getOffensiveModifiers(attacker, defender); final Set<Modifier> defenceModifiers diff --git a/src/net/sf/freecol/client/gui/menu/InGameMenuBar.java b/src/net/sf/freecol/client/gui/menu/InGameMenuBar.java index 856ee5f4142..ba8ffcf4437 100644 --- a/src/net/sf/freecol/client/gui/menu/InGameMenuBar.java +++ b/src/net/sf/freecol/client/gui/menu/InGameMenuBar.java @@ -97,6 +97,7 @@ import net.sf.freecol.common.debug.FreeColDebugger; import net.sf.freecol.common.i18n.Messages; import net.sf.freecol.common.model.StringTemplate; import net.sf.freecol.common.model.TileImprovementType; +import net.sf.freecol.common.model.Turn; /** @@ -333,7 +334,7 @@ public class InGameMenuBar extends FreeColMenuBar { .addAmount("%score%", freeColClient.getMyPlayer().getScore()) .addStringTemplate("%year%", - freeColClient.getGame().getTurn().getLabel())); + Turn.getLabel(freeColClient.getGame().getTurn()))); Rectangle2D displayStringBounds = g2d.getFontMetrics().getStringBounds(displayString, g); int y = Math.round(12f*freeColClient.getGUI().getImageLibrary().getScaleFactor()) diff --git a/src/net/sf/freecol/client/gui/panel/BuildQueuePanel.java b/src/net/sf/freecol/client/gui/panel/BuildQueuePanel.java index b68c3b05add..f1b6237fbd9 100644 --- a/src/net/sf/freecol/client/gui/panel/BuildQueuePanel.java +++ b/src/net/sf/freecol/client/gui/panel/BuildQueuePanel.java @@ -738,7 +738,7 @@ public class BuildQueuePanel extends FreeColPanel implements ItemListener { forEachMapEntry(bt.getRequiredAbilities(), e -> { final String id = e.getKey(); final boolean value = e.getValue(); - if (this.featureContainer.hasAbility(id, null, null) != value + if (this.featureContainer.hasAbility(id, null, Turn.UNDEFINED) != value && this.colony.hasAbility(id) != value) { FreeColSpecObjectType source = first(spec.getTypesProviding(id, value)); @@ -839,7 +839,7 @@ public class BuildQueuePanel extends FreeColPanel implements ItemListener { */ private void updateUnitList() { final Specification spec = getSpecification(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); DefaultListModel<UnitType> units = (DefaultListModel<UnitType>)this.unitList.getModel(); units.clear(); @@ -869,7 +869,7 @@ public class BuildQueuePanel extends FreeColPanel implements ItemListener { if (!checkAbilities(ut, reasons)) unbuildableTypes.add(ut); // Missing unit build ability? - if (!this.featureContainer.hasAbility(Ability.BUILD, ut, null) + if (!this.featureContainer.hasAbility(Ability.BUILD, ut, Turn.UNDEFINED) && !this.colony.hasAbility(Ability.BUILD, ut, turn)) { Ability buildAbility = find(spec.getAbilities(Ability.BUILD), a -> (a.appliesTo(ut) diff --git a/src/net/sf/freecol/client/gui/panel/WorkProductionPanel.java b/src/net/sf/freecol/client/gui/panel/WorkProductionPanel.java index b6e97ba4339..db0d21a1a76 100644 --- a/src/net/sf/freecol/client/gui/panel/WorkProductionPanel.java +++ b/src/net/sf/freecol/client/gui/panel/WorkProductionPanel.java @@ -38,7 +38,6 @@ import net.sf.freecol.common.model.GoodsType; import net.sf.freecol.common.model.Modifier; import net.sf.freecol.common.model.Tile; import net.sf.freecol.common.model.TileType; -import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.model.Unit; import net.sf.freecol.common.model.UnitType; import net.sf.freecol.common.model.WorkLocation; @@ -50,7 +49,7 @@ import static net.sf.freecol.common.util.CollectionUtils.*; */ public class WorkProductionPanel extends FreeColPanel { - private final Turn turn = getGame().getTurn(); + private final int turn = getGame().getTurn(); /** diff --git a/src/net/sf/freecol/client/gui/panel/colopedia/FatherDetailPanel.java b/src/net/sf/freecol/client/gui/panel/colopedia/FatherDetailPanel.java index 6cd2769876c..ae317b0e155 100644 --- a/src/net/sf/freecol/client/gui/panel/colopedia/FatherDetailPanel.java +++ b/src/net/sf/freecol/client/gui/panel/colopedia/FatherDetailPanel.java @@ -153,13 +153,13 @@ public class FatherDetailPanel .add(father.getId() + ".birthAndDeath") .addName("] ") .add(father.getId() + ".text"); - final Turn turn = getMyPlayer().getElectionTurns().get(name); - if (turn != null) { + final int turn = getMyPlayer().getElectionTurns().get(name); + if (turn != Turn.UNDEFINED) { template .addName("\n\n") .add("report.continentalCongress.elected") .addName(" ") - .addStringTemplate(turn.getLabel()); + .addStringTemplate(Turn.getLabel(turn)); } panel.add(header, "span, align center, wrap 40"); diff --git a/src/net/sf/freecol/client/gui/panel/report/ReportContinentalCongressPanel.java b/src/net/sf/freecol/client/gui/panel/report/ReportContinentalCongressPanel.java index 5bfbde184bd..dad5b540479 100644 --- a/src/net/sf/freecol/client/gui/panel/report/ReportContinentalCongressPanel.java +++ b/src/net/sf/freecol/client/gui/panel/report/ReportContinentalCongressPanel.java @@ -109,12 +109,12 @@ public final class ReportContinentalCongressPanel extends ReportPanel { imageScrollPane, null); } final int age = getGame().getAge(); - Map<String, Turn> electionTurns = getMyPlayer().getElectionTurns(); + Map<String, Integer> electionTurns = getMyPlayer().getElectionTurns(); for (FoundingFather father : getSpecification().getFoundingFathers()) { String name = Messages.getName(father); JPanel panel = panels.get(father.getType()); Image image; - Turn turn = null; + int turn = Turn.UNDEFINED; if (player.hasFather(father)) { image = ImageLibrary.getFoundingFatherImage(father, false); turn = electionTurns.get(Messages.nameKey(father)); @@ -126,10 +126,10 @@ public final class ReportContinentalCongressPanel extends ReportPanel { null, father.getId()); button.addActionListener(this); panel.add(button); - panel.add((turn != null) + panel.add((turn != Turn.UNDEFINED) ? Utility.localizedLabel(StringTemplate .template("report.continentalCongress.elected") - .addStringTemplate("%turn%", turn.getLabel())) + .addStringTemplate("%turn%", Turn.getLabel(turn))) : (father == currentFather) ? Utility.localizedLabel("report.continentalCongress.recruiting") : Utility.localizedLabel("report.continentalCongress.available")); diff --git a/src/net/sf/freecol/client/gui/panel/report/ReportExplorationPanel.java b/src/net/sf/freecol/client/gui/panel/report/ReportExplorationPanel.java index e314fd6a064..7ebd2363eca 100644 --- a/src/net/sf/freecol/client/gui/panel/report/ReportExplorationPanel.java +++ b/src/net/sf/freecol/client/gui/panel/report/ReportExplorationPanel.java @@ -31,6 +31,7 @@ import net.sf.freecol.client.FreeColClient; import net.sf.freecol.client.gui.FontLibrary; import net.sf.freecol.client.gui.panel.*; import net.sf.freecol.common.model.Region; +import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.util.*; import static net.sf.freecol.common.util.CollectionUtils.*; @@ -44,7 +45,7 @@ public final class ReportExplorationPanel extends ReportPanel { /** Comparator for discovered regions, by descending turn and score. */ private static final Comparator<Region> regionComparator = Comparator.comparingInt((Region r) -> - r.getDiscoveredIn().getNumber()).reversed() + r.getDiscoveredIn()).reversed() .thenComparingInt(Region::getScoreValue).reversed(); @@ -86,8 +87,7 @@ public final class ReportExplorationPanel extends ReportPanel { Function.identity(), regionComparator)) { reportPanel.add(new JLabel(region.getName())); reportPanel.add(Utility.localizedLabel(region.getType().getNameKey())); - reportPanel.add(Utility.localizedLabel(region.getDiscoveredIn() - .getLabel())); + reportPanel.add(Utility.localizedLabel(Turn.getLabel(region.getDiscoveredIn()))); reportPanel.add(Utility.localizedLabel(region.getDiscoveredBy() .getCountryLabel())); reportPanel.add(new JLabel(String.valueOf(region.getScoreValue()))); diff --git a/src/net/sf/freecol/client/gui/panel/report/ReportHistoryPanel.java b/src/net/sf/freecol/client/gui/panel/report/ReportHistoryPanel.java index 0b1e7d01a44..a3cf39d947c 100644 --- a/src/net/sf/freecol/client/gui/panel/report/ReportHistoryPanel.java +++ b/src/net/sf/freecol/client/gui/panel/report/ReportHistoryPanel.java @@ -26,6 +26,7 @@ import net.miginfocom.swing.MigLayout; import net.sf.freecol.client.FreeColClient; import net.sf.freecol.client.gui.panel.*; import net.sf.freecol.common.model.HistoryEvent; +import net.sf.freecol.common.model.Turn; /** @@ -50,7 +51,7 @@ public final class ReportHistoryPanel extends ReportPanel { reportPanel.setLayout(new MigLayout("wrap 2", "[]20[fill]", "")); for (HistoryEvent event : history) { - reportPanel.add(Utility.localizedLabel(event.getTurn().getLabel())); + reportPanel.add(Utility.localizedLabel(Turn.getLabel(event.getTurn()))); reportPanel.add(Utility.localizedTextArea(event, 40)); } } diff --git a/src/net/sf/freecol/client/gui/tooltip/RebelToolTip.java b/src/net/sf/freecol/client/gui/tooltip/RebelToolTip.java index 797e6214641..dc58b8e6c84 100644 --- a/src/net/sf/freecol/client/gui/tooltip/RebelToolTip.java +++ b/src/net/sf/freecol/client/gui/tooltip/RebelToolTip.java @@ -38,7 +38,6 @@ import net.sf.freecol.common.model.GoodsType; import net.sf.freecol.common.model.Modifier; import net.sf.freecol.common.model.Specification; import net.sf.freecol.common.model.StringTemplate; -import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.option.GameOptions; import static net.sf.freecol.common.util.CollectionUtils.*; @@ -60,7 +59,7 @@ public class RebelToolTip extends JToolTip { final int population = colony.getUnitCount(); final int solPercent = colony.getSoL(); final int rebels = Colony.calculateRebels(population, solPercent); - final Turn turn = colony.getGame().getTurn(); + final int turn = colony.getGame().getTurn(); StringTemplate t; setLayout(new MigLayout("fill, wrap 3", "[300px][50px, right][50px, right]", "")); diff --git a/src/net/sf/freecol/common/model/Building.java b/src/net/sf/freecol/common/model/Building.java index e07c180fc93..cb8bf9a1935 100644 --- a/src/net/sf/freecol/common/model/Building.java +++ b/src/net/sf/freecol/common/model/Building.java @@ -148,7 +148,7 @@ public class Building extends WorkLocation * @return A stream of the applicable modifiers. */ public Stream<Modifier> getCompetenceModifiers(String id, - UnitType unitType, Turn turn) { + UnitType unitType, int turn) { final float competence = getCompetenceFactor(); return (competence == 1.0f) // Floating comparison OK! ? unitType.getModifiers(id, getType(), turn) @@ -246,7 +246,7 @@ public class Building extends WorkLocation ProductionInfo result = new ProductionInfo(); if (!hasOutputs()) return result; final Specification spec = getSpecification(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); final boolean avoidOverflow = hasAbility(Ability.AVOID_EXCESS_PRODUCTION); final int capacity = getColony().getWarehouseCapacity(); @@ -566,7 +566,7 @@ public class Building extends WorkLocation final String id = (goodsType == null) ? null : goodsType.getId(); final Colony colony = getColony(); final Player owner = getOwner(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); return (unitType != null) // With a unit, unit specific bonuses apply @@ -642,7 +642,7 @@ public class Building extends WorkLocation */ @Override public Stream<Ability> getAbilities(String id, FreeColSpecObjectType type, - Turn turn) { + int turn) { // Buildings have no abilities independent of their type (for now). return getType().getAbilities(id, type, turn); } @@ -652,7 +652,7 @@ public class Building extends WorkLocation */ @Override public Stream<Modifier> getModifiers(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { // Buildings have no modifiers independent of type return getType().getModifiers(id, fcgot, turn); } diff --git a/src/net/sf/freecol/common/model/BuildingType.java b/src/net/sf/freecol/common/model/BuildingType.java index 60d7d83efa5..9c6556fbde9 100644 --- a/src/net/sf/freecol/common/model/BuildingType.java +++ b/src/net/sf/freecol/common/model/BuildingType.java @@ -337,7 +337,7 @@ public final class BuildingType extends BuildableType UnitType unitType) { if (goodsType == null) return 0; int amount = getBaseProduction(null, goodsType, unitType); - amount = (int)applyModifiers(amount, null, goodsType.getId(), + amount = (int)applyModifiers(amount, Turn.UNDEFINED, goodsType.getId(), unitType); return (amount < 0) ? 0 : amount; } diff --git a/src/net/sf/freecol/common/model/Colony.java b/src/net/sf/freecol/common/model/Colony.java index c471e6971b8..62d557aa6d8 100644 --- a/src/net/sf/freecol/common/model/Colony.java +++ b/src/net/sf/freecol/common/model/Colony.java @@ -134,7 +134,7 @@ public class Colony extends Settlement implements Nameable, TradeLocation { protected int immigration; /** The turn in which this colony was established. */ - protected Turn established = new Turn(0); + protected int established = 0; /** A list of items to be built. */ protected final BuildQueue<BuildableType> buildQueue @@ -316,7 +316,7 @@ public class Colony extends Settlement implements Nameable, TradeLocation { * * @return The establishment {@code Turn}. */ - public Turn getEstablished() { + public int getEstablished() { return established; } @@ -325,7 +325,7 @@ public class Colony extends Settlement implements Nameable, TradeLocation { * * @param newEstablished The new {@code Turn} of establishment. */ - public void setEstablished(final Turn newEstablished) { + public void setEstablished(final int newEstablished) { this.established = newEstablished; } @@ -2317,7 +2317,7 @@ public class Colony extends Settlement implements Nameable, TradeLocation { * @param amount The amount of modification. */ private void modifySpecialGoods(GoodsType goodsType, int amount) { - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); List<Modifier> mods; mods = toList(goodsType.getModifiers(Modifier.LIBERTY)); @@ -2399,8 +2399,8 @@ public class Colony extends Settlement implements Nameable, TradeLocation { */ @Override public Stream<Ability> getAbilities(String id, FreeColSpecObjectType type, - Turn turn) { - if (turn == null) turn = getGame().getTurn(); + int turn) { + if (turn == Turn.UNDEFINED) turn = getGame().getTurn(); return concat(super.getAbilities(id, type, turn), ((owner == null) ? Stream.<Ability>empty() : owner.getAbilities(id, type, turn))); @@ -2902,7 +2902,7 @@ public class Colony extends Settlement implements Nameable, TradeLocation { // Delegated from Settlement xw.writeAttribute(NAME_TAG, getName()); - xw.writeAttribute(ESTABLISHED_TAG, established.getNumber()); + xw.writeAttribute(ESTABLISHED_TAG, established); // SoL has to be visible for the popular support bonus to be // visible to an attacking rebel player. @@ -2987,7 +2987,7 @@ public class Colony extends Settlement implements Nameable, TradeLocation { public void readAttributes(FreeColXMLReader xr) throws XMLStreamException { super.readAttributes(xr); - established = new Turn(xr.getAttribute(ESTABLISHED_TAG, 0)); + established = xr.getAttribute(ESTABLISHED_TAG, 0); sonsOfLiberty = xr.getAttribute(SONS_OF_LIBERTY_TAG, 0); diff --git a/src/net/sf/freecol/common/model/ColonyTile.java b/src/net/sf/freecol/common/model/ColonyTile.java index c6411f593b0..a422065d766 100644 --- a/src/net/sf/freecol/common/model/ColonyTile.java +++ b/src/net/sf/freecol/common/model/ColonyTile.java @@ -459,7 +459,7 @@ public class ColonyTile extends WorkLocation { final String id = goodsType.getId(); final Colony colony = getColony(); final Player owner = colony.getOwner(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); return (unitType != null) // Unit modifiers apply ? concat(workTile.getProductionModifiers(goodsType, unitType), diff --git a/src/net/sf/freecol/common/model/Europe.java b/src/net/sf/freecol/common/model/Europe.java index 9c6c3bb0c43..47ba746c0f4 100644 --- a/src/net/sf/freecol/common/model/Europe.java +++ b/src/net/sf/freecol/common/model/Europe.java @@ -506,7 +506,7 @@ public class Europe extends UnitLocation */ @Override public Stream<Ability> getAbilities(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { return concat(super.getAbilities(id, fcgot, turn), // Always able to dress a missionary. ((id == null || Ability.DRESS_MISSIONARY.equals(id)) diff --git a/src/net/sf/freecol/common/model/Feature.java b/src/net/sf/freecol/common/model/Feature.java index 80819246769..8d38e15f2b2 100644 --- a/src/net/sf/freecol/common/model/Feature.java +++ b/src/net/sf/freecol/common/model/Feature.java @@ -29,6 +29,7 @@ import javax.xml.stream.XMLStreamException; import net.sf.freecol.common.i18n.Messages; import net.sf.freecol.common.io.FreeColXMLReader; import net.sf.freecol.common.io.FreeColXMLWriter; +import net.sf.freecol.common.model.Turn; import static net.sf.freecol.common.util.CollectionUtils.*; import net.sf.freecol.common.util.Utils; @@ -45,10 +46,10 @@ public abstract class Feature extends FreeColSpecObject private FreeColObject source; /** The first Turn in which this Feature applies. */ - private Turn firstTurn; + private int firstTurn; /** The last Turn in which this Feature applies. */ - private Turn lastTurn; + private int lastTurn; /** The duration of this Feature. By default, the duration is unlimited. */ private int duration = 0; @@ -99,7 +100,7 @@ public abstract class Feature extends FreeColSpecObject * @return True if the feature is time limited. */ public final boolean hasTimeLimit() { - return (firstTurn != null || lastTurn != null); + return (firstTurn != Turn.UNDEFINED || lastTurn != Turn.UNDEFINED); } /** @@ -107,7 +108,7 @@ public abstract class Feature extends FreeColSpecObject * * @return The first turn, or null if none. */ - public final Turn getFirstTurn() { + public final int getFirstTurn() { return firstTurn; } @@ -116,7 +117,7 @@ public abstract class Feature extends FreeColSpecObject * * @param newFirstTurn The new first turn value. */ - public final void setFirstTurn(final Turn newFirstTurn) { + public final void setFirstTurn(final int newFirstTurn) { this.firstTurn = newFirstTurn; } @@ -125,7 +126,7 @@ public abstract class Feature extends FreeColSpecObject * * @return The last turn, or null if none. */ - public final Turn getLastTurn() { + public final int getLastTurn() { return lastTurn; } @@ -134,7 +135,7 @@ public abstract class Feature extends FreeColSpecObject * * @param newLastTurn The new last turn value. */ - public final void setLastTurn(final Turn newLastTurn) { + public final void setLastTurn(final int newLastTurn) { this.lastTurn = newLastTurn; } @@ -210,10 +211,10 @@ public abstract class Feature extends FreeColSpecObject * @param turn The {@code Turn} to test. * @return True if the turn is null or not outside a valid time limit. */ - protected boolean appliesTo(final Turn turn) { - return !(turn != null - && (firstTurn != null && turn.getNumber() < firstTurn.getNumber() - || lastTurn != null && turn.getNumber() > lastTurn.getNumber())); + protected boolean appliesTo(final int turn) { + return !(turn != Turn.UNDEFINED + && (firstTurn != Turn.UNDEFINED && turn < firstTurn + || lastTurn != Turn.UNDEFINED && turn > lastTurn)); } /** @@ -224,7 +225,7 @@ public abstract class Feature extends FreeColSpecObject * @return True if the feature applies. */ protected boolean appliesTo(final FreeColSpecObjectType objectType, - final Turn turn) { + final int turn) { return appliesTo(turn) && appliesTo(objectType); } @@ -235,9 +236,9 @@ public abstract class Feature extends FreeColSpecObject * @return True if the Feature has an lastTurn turn smaller than the * given turn. */ - public boolean isOutOfDate(Turn turn) { - return turn != null && lastTurn != null - && turn.getNumber() > lastTurn.getNumber(); + public boolean isOutOfDate(int turn) { + return turn != Turn.UNDEFINED && lastTurn != Turn.UNDEFINED + && turn > lastTurn; } /** @@ -332,13 +333,11 @@ public abstract class Feature extends FreeColSpecObject xw.writeAttribute(SOURCE_TAG, getSource()); } - if (getFirstTurn() != null) { - xw.writeAttribute(FIRST_TURN_TAG, getFirstTurn().getNumber()); - } + if (getFirstTurn() != Turn.UNDEFINED) + xw.writeAttribute(FIRST_TURN_TAG, getFirstTurn()); - if (getLastTurn() != null) { - xw.writeAttribute(LAST_TURN_TAG, getLastTurn().getNumber()); - } + if (getLastTurn() != Turn.UNDEFINED) + xw.writeAttribute(LAST_TURN_TAG, getLastTurn()); if (duration != 0) { xw.writeAttribute(DURATION_TAG, duration); @@ -375,11 +374,11 @@ public abstract class Feature extends FreeColSpecObject setSource(spec.findType(str)); } - int firstTurn = xr.getAttribute(FIRST_TURN_TAG, UNDEFINED); - if (firstTurn != UNDEFINED) setFirstTurn(new Turn(firstTurn)); + int firstTurn = xr.getAttribute(FIRST_TURN_TAG, Turn.UNDEFINED); + if (firstTurn != Turn.UNDEFINED) setFirstTurn(firstTurn); - int lastTurn = xr.getAttribute(LAST_TURN_TAG, UNDEFINED); - if (lastTurn != UNDEFINED) setLastTurn(new Turn(lastTurn)); + int lastTurn = xr.getAttribute(LAST_TURN_TAG, Turn.UNDEFINED); + if (lastTurn != Turn.UNDEFINED) setLastTurn(lastTurn); duration = xr.getAttribute(DURATION_TAG, 0); @@ -431,18 +430,18 @@ public abstract class Feature extends FreeColSpecObject || this.duration != feature.duration || this.temporary != feature.temporary) return false; - if (firstTurn == null) { - if (feature.firstTurn != null) return false; - } else if (feature.firstTurn == null) { + if (firstTurn == Turn.UNDEFINED) { + if (feature.firstTurn != Turn.UNDEFINED) return false; + } else if (feature.firstTurn == Turn.UNDEFINED) { return false; - } else if (firstTurn.getNumber() != feature.firstTurn.getNumber()) { + } else if (firstTurn != feature.firstTurn) { return false; } - if (lastTurn == null) { - if (feature.lastTurn != null) return false; - } else if (feature.lastTurn == null) { + if (lastTurn == Turn.UNDEFINED) { + if (feature.lastTurn != Turn.UNDEFINED) return false; + } else if (feature.lastTurn == Turn.UNDEFINED) { return false; - } else if (lastTurn.getNumber() != feature.lastTurn.getNumber()) { + } else if (lastTurn != feature.lastTurn) { return false; } List<Scope> tScopes = getScopeList(); @@ -464,8 +463,8 @@ public abstract class Feature extends FreeColSpecObject public int hashCode() { int hash = super.hashCode(); hash += 31 * hash + Utils.hashCode(source); - hash += 31 * hash + ((firstTurn == null) ? 0 : firstTurn.getNumber()); - hash += 31 * hash + ((lastTurn == null) ? 0 : lastTurn.getNumber()); + hash += 31 * hash + ((firstTurn == Turn.UNDEFINED) ? 0 : firstTurn); + hash += 31 * hash + ((lastTurn == Turn.UNDEFINED) ? 0 : lastTurn); hash += 31 * hash + duration; hash += 31 * ((temporary) ? 1 : 0); // FIXME: is this safe? It is an easy way to ignore diff --git a/src/net/sf/freecol/common/model/FeatureContainer.java b/src/net/sf/freecol/common/model/FeatureContainer.java index c76a4969a17..69eec27393c 100644 --- a/src/net/sf/freecol/common/model/FeatureContainer.java +++ b/src/net/sf/freecol/common/model/FeatureContainer.java @@ -124,7 +124,7 @@ public final class FeatureContainer { * @return True if the ability is present. */ public boolean hasAbility(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { return FeatureContainer.hasAbility(getAbilities(id, fcgot, turn)); } @@ -139,7 +139,7 @@ public final class FeatureContainer { * @return A stream of abilities. */ public Stream<Ability> getAbilities(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { Set<Ability> result = new HashSet<>(); if (abilitiesPresent()) { synchronized (abilitiesLock) { @@ -220,7 +220,7 @@ public final class FeatureContainer { */ public Stream<Modifier> getModifiers(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { if (!modifiersPresent()) return Stream.<Modifier>empty(); Set<Modifier> mset = new HashSet<>(); synchronized (modifiersLock) { @@ -246,7 +246,7 @@ public final class FeatureContainer { * modifier applies to. * @return The modified number. */ - public final float applyModifiers(float number, Turn turn, + public final float applyModifiers(float number, int turn, String id, FreeColSpecObjectType fcgot) { return applyModifiers(number, turn, getModifiers(id, fcgot, turn)); } @@ -259,7 +259,7 @@ public final class FeatureContainer { * @param mods The {@code Modifier}s to apply. * @return The modified number. */ - public static float applyModifiers(float number, Turn turn, + public static float applyModifiers(float number, int turn, Collection<Modifier> mods) { return (mods == null || mods.isEmpty()) ? number : applyModifiers_internal(number, turn, @@ -466,7 +466,7 @@ public final class FeatureContainer { */ public void replaceSource(FreeColSpecObjectType oldSource, FreeColSpecObjectType newSource) { - for (Ability ability : transform(getAbilities(null, null, null), + for (Ability ability : transform(getAbilities(null, null, Turn.UNDEFINED), a -> oldSource == null || a.getSource() == oldSource)) { removeAbility(ability); Ability newAbility = new Ability(ability); @@ -474,7 +474,7 @@ public final class FeatureContainer { addAbility(newAbility); } - for (Modifier modifier : transform(getModifiers(null, null, null), + for (Modifier modifier : transform(getModifiers(null, null, Turn.UNDEFINED), m -> oldSource == null || m.getSource() == oldSource)) { removeModifier(modifier); Modifier newModifier = new Modifier(modifier); @@ -494,7 +494,7 @@ public final class FeatureContainer { StringBuilder sb = new StringBuilder(256); sb.append("[FeatureContainer"); int siz = sb.length(); - for (Ability ability : iterable(getAbilities(null, null, null))) { + for (Ability ability : iterable(getAbilities(null, null, Turn.UNDEFINED))) { sb.append(' ').append(ability); } if (sb.length() > siz) { @@ -502,7 +502,7 @@ public final class FeatureContainer { sb.append(']'); } siz = sb.length(); - for (Modifier modifier : iterable(getModifiers(null, null, null))) { + for (Modifier modifier : iterable(getModifiers(null, null, Turn.UNDEFINED))) { sb.append(' ').append(modifier); } if (sb.length() > siz) { diff --git a/src/net/sf/freecol/common/model/FreeColObject.java b/src/net/sf/freecol/common/model/FreeColObject.java index 72af78d16f8..45dd1d8a85b 100644 --- a/src/net/sf/freecol/common/model/FreeColObject.java +++ b/src/net/sf/freecol/common/model/FreeColObject.java @@ -42,6 +42,7 @@ import net.sf.freecol.common.ObjectWithId; import net.sf.freecol.common.io.FreeColXMLReader; import net.sf.freecol.common.io.FreeColXMLWriter; import net.sf.freecol.common.io.FreeColXMLWriter.WriteScope; +import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.util.Introspector; import net.sf.freecol.common.util.LogBuilder; import static net.sf.freecol.common.util.CollectionUtils.*; @@ -394,7 +395,7 @@ public abstract class FreeColObject * @return True if the ability is present. */ public final boolean hasAbility(String id, FreeColSpecObjectType fcgot) { - return hasAbility(id, fcgot, null); + return hasAbility(id, fcgot, Turn.UNDEFINED); } /** @@ -407,7 +408,7 @@ public abstract class FreeColObject * @return True if the ability is present. */ public final boolean hasAbility(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { return FeatureContainer.hasAbility(getAbilities(id, fcgot, turn)); } @@ -449,7 +450,7 @@ public abstract class FreeColObject */ public final Stream<Ability> getAbilities(String id, FreeColSpecObjectType fcgot) { - return getAbilities(id, fcgot, null); + return getAbilities(id, fcgot, Turn.UNDEFINED); } /** @@ -465,7 +466,7 @@ public abstract class FreeColObject */ public Stream<Ability> getAbilities(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { FeatureContainer fc = getFeatureContainer(); return (fc == null) ? Stream.<Ability>empty() : fc.getAbilities(id, fcgot, turn); @@ -523,7 +524,7 @@ public abstract class FreeColObject * @return True if the modifier is present. */ public final boolean hasModifier(String id, FreeColSpecObjectType fcgot) { - return hasModifier(id, fcgot, null); + return hasModifier(id, fcgot, Turn.UNDEFINED); } /** @@ -536,7 +537,7 @@ public abstract class FreeColObject * @return True if the modifier is present. */ public boolean hasModifier(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { return any(getModifiers(id, fcgot, turn)); } @@ -605,7 +606,7 @@ public abstract class FreeColObject */ public Stream<Modifier> getModifiers(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { FeatureContainer fc = getFeatureContainer(); return (fc == null) ? Stream.<Modifier>empty() : fc.getModifiers(id, fcgot, turn); @@ -620,7 +621,7 @@ public abstract class FreeColObject * @param id The object identifier. * @return The modified number. */ - public final float applyModifiers(float number, Turn turn, String id) { + public final float applyModifiers(float number, int turn, String id) { return applyModifiers(number, turn, id, null); } @@ -635,7 +636,7 @@ public abstract class FreeColObject * modifier applies to. * @return The modified number. */ - public final float applyModifiers(float number, Turn turn, + public final float applyModifiers(float number, int turn, String id, FreeColSpecObjectType fcgot) { return applyModifiers(number, turn, getModifiers(id, fcgot, turn)); } @@ -648,7 +649,7 @@ public abstract class FreeColObject * @param mods The {@code Modifier}s to apply. * @return The modified number. */ - public static final float applyModifiers(float number, Turn turn, + public static final float applyModifiers(float number, int turn, Collection<Modifier> mods) { return FeatureContainer.applyModifiers(number, turn, mods); } @@ -661,7 +662,7 @@ public abstract class FreeColObject * @param mods The {@code Modifier}s to apply. * @return The modified number. */ - public static final float applyModifiers(float number, Turn turn, + public static final float applyModifiers(float number, int turn, Stream<Modifier> mods) { return FeatureContainer.applyModifiers(number, turn, mods); } diff --git a/src/net/sf/freecol/common/model/Game.java b/src/net/sf/freecol/common/model/Game.java index b49ac365718..aafd4181cc2 100644 --- a/src/net/sf/freecol/common/model/Game.java +++ b/src/net/sf/freecol/common/model/Game.java @@ -161,7 +161,7 @@ public class Game extends FreeColGameObject { protected Player currentPlayer = null; /** The current turn. */ - private Turn turn = new Turn(1); + private int turn = 1; /** Whether the War of Spanish Succession has already taken place. */ private boolean spanishSuccession = false; @@ -927,16 +927,20 @@ public class Game extends FreeColGameObject { * * @return The current {@code Turn}. */ - public Turn getTurn() { + public int getTurn() { return turn; } + public int getYear() { + return Turn.getYear(turn); + } + /** * Sets the current turn in this game. * * @param newTurn The new {@code Turn} to set. */ - public void setTurn(Turn newTurn) { + public void setTurn(final int newTurn) { turn = newTurn; } @@ -1338,7 +1342,7 @@ public class Game extends FreeColGameObject { xw.writeAttribute(UUID_TAG, getUUID()); - xw.writeAttribute(TURN_TAG, getTurn().getNumber()); + xw.writeAttribute(TURN_TAG, getTurn()); xw.writeAttribute(SPANISH_SUCCESSION_TAG, spanishSuccession); @@ -1411,7 +1415,7 @@ public class Game extends FreeColGameObject { } } - turn = new Turn(xr.getAttribute(TURN_TAG, 1)); + turn = xr.getAttribute(TURN_TAG, 1); spanishSuccession = xr.getAttribute(SPANISH_SUCCESSION_TAG, false); diff --git a/src/net/sf/freecol/common/model/HighScore.java b/src/net/sf/freecol/common/model/HighScore.java index 5c55dbab06a..384b89abfc1 100644 --- a/src/net/sf/freecol/common/model/HighScore.java +++ b/src/net/sf/freecol/common/model/HighScore.java @@ -156,7 +156,7 @@ public class HighScore extends FreeColObject { private HighScore(Player player) { Game game = player.getGame(); this.date = new Date(); - this.retirementTurn = game.getTurn().getNumber(); + this.retirementTurn = game.getTurn(); this.score = player.getScore(); this.level = find(ScoreLevel.values(), sl -> sl.getMinimumScore() <= this.score, @@ -167,7 +167,7 @@ public class HighScore extends FreeColObject { this.nColonies = count(player.getColonies()); this.nUnits = player.getUnitCount(); this.independenceTurn = (player.getPlayerType() - == Player.PlayerType.INDEPENDENT) ? game.getTurn().getNumber() + == Player.PlayerType.INDEPENDENT) ? game.getTurn() : -1; this.nationName = Messages.message(player.getNationLabel()); this.difficulty = game.getSpecification().getDifficultyLevel(); diff --git a/src/net/sf/freecol/common/model/HistoryEvent.java b/src/net/sf/freecol/common/model/HistoryEvent.java index 91e68321e85..39bf2cd063b 100644 --- a/src/net/sf/freecol/common/model/HistoryEvent.java +++ b/src/net/sf/freecol/common/model/HistoryEvent.java @@ -84,7 +84,7 @@ public class HistoryEvent extends StringTemplate { /** The turn in which the event took place */ - private Turn turn; + private int turn; /** The type of event. */ private HistoryEventType eventType; @@ -109,7 +109,7 @@ public class HistoryEvent extends StringTemplate { * @param player An optional {@code Player} responsible for * this event. */ - public HistoryEvent(Turn turn, HistoryEventType eventType, Player player) { + public HistoryEvent(int turn, HistoryEventType eventType, Player player) { super(eventType.getDescriptionKey(), null, TemplateType.TEMPLATE); this.turn = turn; this.eventType = eventType; @@ -132,7 +132,7 @@ public class HistoryEvent extends StringTemplate { * * @return The turn. */ - public final Turn getTurn() { + public final int getTurn() { return turn; } @@ -219,7 +219,7 @@ public class HistoryEvent extends StringTemplate { protected void writeAttributes(FreeColXMLWriter xw) throws XMLStreamException { super.writeAttributes(xw); - xw.writeAttribute(TURN_TAG, this.turn.getNumber()); + xw.writeAttribute(TURN_TAG, this.turn); xw.writeAttribute(EVENT_TYPE_TAG, this.eventType); @@ -235,7 +235,7 @@ public class HistoryEvent extends StringTemplate { protected void readAttributes(FreeColXMLReader xr) throws XMLStreamException { super.readAttributes(xr); - turn = new Turn(xr.getAttribute(TURN_TAG, 0)); + turn = xr.getAttribute(TURN_TAG, 0); eventType = xr.getAttribute(EVENT_TYPE_TAG, HistoryEventType.class, (HistoryEventType)null); @@ -274,7 +274,7 @@ public class HistoryEvent extends StringTemplate { @Override public int hashCode() { int hash = super.hashCode(); - hash = 31 * hash + this.turn.hashCode(); + hash = 31 * hash + this.turn; hash = 31 * hash + this.eventType.ordinal(); if (this.playerId != null) hash = 31 * hash + this.playerId.hashCode(); hash = 31 * hash + this.score; @@ -289,7 +289,7 @@ public class HistoryEvent extends StringTemplate { StringBuilder sb = new StringBuilder(32); sb.append('[').append(getId()) .append(' ').append(eventType) - .append(" (").append(turn.getYear()).append(')'); + .append(" (").append(Turn.getYear(turn)).append(')'); if (playerId != null) { sb.append(" playerId=").append(playerId) .append(" score=").append(score); diff --git a/src/net/sf/freecol/common/model/LastSale.java b/src/net/sf/freecol/common/model/LastSale.java index 59c8edf1065..23102b43d0f 100644 --- a/src/net/sf/freecol/common/model/LastSale.java +++ b/src/net/sf/freecol/common/model/LastSale.java @@ -34,7 +34,7 @@ public final class LastSale extends FreeColObject { public static final String TAG = "lastSale"; /** When a sale was made. */ - private Turn when; + private int when; /** The price per unit returned from the sale. */ private int price; @@ -54,7 +54,7 @@ public final class LastSale extends FreeColObject { * @param price The per-unit price of the sale. */ public LastSale(Location where, GoodsType what, - Turn when, int price) { + int when, int price) { this(makeKey(where, what), when, price); } @@ -65,7 +65,7 @@ public final class LastSale extends FreeColObject { * @param when In which {@code Turn} the sale occurred. * @param price The per-unit price of the sale. */ - public LastSale(String id, Turn when, int price) { + public LastSale(String id, int when, int price) { setId(id); this.when = when; this.price = price; @@ -87,7 +87,7 @@ public final class LastSale extends FreeColObject { * * @return The {@code Turn} when the sale was made. */ - public Turn getWhen() { + public int getWhen() { return when; } @@ -126,7 +126,7 @@ public final class LastSale extends FreeColObject { protected void writeAttributes(FreeColXMLWriter xw) throws XMLStreamException { super.writeAttributes(xw); - xw.writeAttribute(WHEN_TAG, when.getNumber()); + xw.writeAttribute(WHEN_TAG, when); xw.writeAttribute(PRICE_TAG, price); } @@ -138,7 +138,7 @@ public final class LastSale extends FreeColObject { public void readAttributes(FreeColXMLReader xr) throws XMLStreamException { super.readAttributes(xr); - when = new Turn(xr.getAttribute(WHEN_TAG, 0)); + when = xr.getAttribute(WHEN_TAG, 0); price = xr.getAttribute(PRICE_TAG, 0); } diff --git a/src/net/sf/freecol/common/model/LostCityRumour.java b/src/net/sf/freecol/common/model/LostCityRumour.java index 12526637a2c..07158bbcf1b 100644 --- a/src/net/sf/freecol/common/model/LostCityRumour.java +++ b/src/net/sf/freecol/common/model/LostCityRumour.java @@ -278,13 +278,13 @@ public class LostCityRumour extends TileItem { ? new ModelMessage(ModelMessage.MessageType.LOST_CITY_RUMOUR, RumourType.NOTHING.getAlternateDescriptionKey("mounds"), player) - : (game.getTurn().getYear() % 100 == 12 + : (game.getYear() % 100 == 12 && randomInt(logger, "Mayans?", random, 4) == 0) ? new ModelMessage(ModelMessage.MessageType.LOST_CITY_RUMOUR, RumourType.NOTHING.getAlternateDescriptionKey("mayans"), player) .addAmount("%years%", - MAYAN_PROPHESY_YEAR - game.getTurn().getYear()) + MAYAN_PROPHESY_YEAR - game.getYear()) : new ModelMessage(ModelMessage.MessageType.LOST_CITY_RUMOUR, NameCache.getRumourNothingKey(random), player); diff --git a/src/net/sf/freecol/common/model/Modifier.java b/src/net/sf/freecol/common/model/Modifier.java index 0d42e3039aa..755cc58c3de 100644 --- a/src/net/sf/freecol/common/model/Modifier.java +++ b/src/net/sf/freecol/common/model/Modifier.java @@ -294,7 +294,7 @@ public class Modifier extends Feature { * @return A new timed modifier. */ public static Modifier makeTimedModifier(String id, Modifier template, - Turn start) { + int start) { Modifier modifier = new Modifier(id, template); float inc = template.getIncrement(); int duration = template.getDuration(); @@ -304,7 +304,7 @@ public class Modifier extends Feature { duration = (int)(template.getValue()/-inc); } modifier.setIncrement(template.getIncrementType(), inc, start, - new Turn(start.getNumber() + duration)); + start + duration); return modifier; } @@ -343,10 +343,10 @@ public class Modifier extends Feature { * @param turn The {@code Turn} to check. * @return The turn-dependent modifier value. */ - public final float getValue(Turn turn) { + public final float getValue(int turn) { if (appliesTo(turn)) { if (hasIncrement()) { - float f = (turn.getNumber() - getFirstTurn().getNumber()) + float f = (turn - getFirstTurn()) * increment; return apply(value, f, incrementType); } else { @@ -430,8 +430,8 @@ public class Modifier extends Feature { */ public final Modifier setIncrement(final ModifierType incrementType, final float increment, - Turn firstTurn, Turn lastTurn) { - if (firstTurn == null) { + int firstTurn, int lastTurn) { + if (firstTurn == Turn.UNDEFINED) { throw new IllegalArgumentException("Null firstTurn"); } this.incrementType = incrementType; @@ -514,7 +514,7 @@ public class Modifier extends Feature { * @param turn The {@code Turn} to evaluate increments in. * @return The modified number. */ - public float applyTo(float number, Turn turn) { + public float applyTo(float number, int turn) { return (incrementType == null) ? apply(number, value) : apply(number, getValue(turn), getType()); } diff --git a/src/net/sf/freecol/common/model/Monarch.java b/src/net/sf/freecol/common/model/Monarch.java index d603c0f059e..6bfc6260844 100644 --- a/src/net/sf/freecol/common/model/Monarch.java +++ b/src/net/sf/freecol/common/model/Monarch.java @@ -410,7 +410,7 @@ public final class Monarch extends FreeColGameObject implements Named { final Specification spec = getSpecification(); List<RandomChoice<MonarchAction>> choices = new ArrayList<>(); int dx = 1 + spec.getInteger(GameOptions.MONARCH_MEDDLING); - int turn = getGame().getTurn().getNumber(); + int turn = getGame().getTurn(); int grace = (6 - dx) * 10; // 10-50 // Nothing happens during the first few turns, if there are no @@ -466,7 +466,7 @@ public final class Monarch extends FreeColGameObject implements Named { public int raiseTax(Random random) { final Specification spec = getSpecification(); int taxAdjustment = spec.getInteger(GameOptions.TAX_ADJUSTMENT); - int turn = getGame().getTurn().getNumber(); + int turn = getGame().getTurn(); int oldTax = player.getTax(); int adjust = Math.max(1, (6 - taxAdjustment) * 10); // 20-60 adjust = 1 + randomInt(logger, "Tax rise", random, 5 + turn/adjust); @@ -547,7 +547,7 @@ public final class Monarch extends FreeColGameObject implements Named { int interventionTurns = spec.getInteger(GameOptions.INTERVENTION_TURNS); if (interventionTurns > 0) { Force ivf = getInterventionForce(); - int updates = getGame().getTurn().getNumber() / interventionTurns; + int updates = getGame().getTurn() / interventionTurns; for (AbstractUnit unit : ivf.getLandUnitsList()) { // add units depending on current turn int value = unit.getNumber() + updates; diff --git a/src/net/sf/freecol/common/model/Operand.java b/src/net/sf/freecol/common/model/Operand.java index c4d661b7acb..5a393b3e8f7 100644 --- a/src/net/sf/freecol/common/model/Operand.java +++ b/src/net/sf/freecol/common/model/Operand.java @@ -194,7 +194,7 @@ public class Operand extends Scope { result = game.invokeMethod(methodName, Integer.class, 0); break; case YEAR: - result = game.getTurn().getYear(); + result = Turn.getYear(game.getTurn()); break; case OPTION: result = game.getSpecification().getInteger(getType()); diff --git a/src/net/sf/freecol/common/model/Player.java b/src/net/sf/freecol/common/model/Player.java index d2cc3472e93..4d399cd4841 100644 --- a/src/net/sf/freecol/common/model/Player.java +++ b/src/net/sf/freecol/common/model/Player.java @@ -1170,7 +1170,7 @@ public class Player extends FreeColGameObject implements Nameable { if (!isColonial()) return; final Specification spec = getSpecification(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); final int current = immigrationRequired; int base = spec.getInteger(GameOptions.CROSSES_INCREMENT); // If the religious unrest bonus is present, immigrationRequired @@ -1429,7 +1429,7 @@ public class Player extends FreeColGameObject implements Nameable { * * @return A map of father id to {@code Turn}s. */ - public java.util.Map<String, Turn> getElectionTurns() { + public java.util.Map<String, Integer> getElectionTurns() { return transform(getHistory(), matchKey(HistoryEvent.HistoryEventType.FOUNDING_FATHER, HistoryEvent::getEventType), @@ -1614,7 +1614,7 @@ public class Player extends FreeColGameObject implements Nameable { : StringTemplate.template("model.indianSettlement.lastSale") .addNamed("%goodsType%", what) .addAmount("%price%", data.getPrice()) - .addStringTemplate("%turn%", data.getWhen().getLabel()); + .addStringTemplate("%turn%", Turn.getLabel(data.getWhen())); } /** @@ -3591,7 +3591,7 @@ public class Player extends FreeColGameObject implements Nameable { * @param what A description of the cheating. */ public void logCheat(String what) { - logger.finest("CHEAT: " + getGame().getTurn().getNumber() + logger.finest("CHEAT: " + getGame().getTurn() + " " + lastPart(getNationId(), ".") + " " + what); } @@ -3810,7 +3810,7 @@ public class Player extends FreeColGameObject implements Nameable { ability.toXML(xw); } - Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); for (Modifier modifier : transform(getSortedModifiers(), m -> m.isTemporary() && !m.isOutOfDate(turn))) { modifier.toXML(xw); diff --git a/src/net/sf/freecol/common/model/ProductionCache.java b/src/net/sf/freecol/common/model/ProductionCache.java index 9d57639701c..e417010b6dc 100644 --- a/src/net/sf/freecol/common/model/ProductionCache.java +++ b/src/net/sf/freecol/common/model/ProductionCache.java @@ -137,7 +137,7 @@ public class ProductionCache { + getGoodsCount(g.getType())); } else { surplus.setAmount((int)FeatureContainer - .applyModifiers(surplus.getAmount(), null, modifiers)); + .applyModifiers(surplus.getAmount(), Turn.UNDEFINED, modifiers)); } goods.add(surplus); } diff --git a/src/net/sf/freecol/common/model/Region.java b/src/net/sf/freecol/common/model/Region.java index fda087516b9..8f345f9b751 100644 --- a/src/net/sf/freecol/common/model/Region.java +++ b/src/net/sf/freecol/common/model/Region.java @@ -145,7 +145,7 @@ public class Region extends FreeColGameObject implements Nameable { protected boolean discoverable = false; /** Which Turn the region was discovered in. */ - protected Turn discoveredIn; + protected int discoveredIn; /** Which Player the Region was discovered by. */ protected Player discoveredBy; @@ -366,7 +366,7 @@ public class Region extends FreeColGameObject implements Nameable { * * @return The discovery turn. */ - public final Turn getDiscoveredIn() { + public final int getDiscoveredIn() { return this.discoveredIn; } @@ -375,7 +375,7 @@ public class Region extends FreeColGameObject implements Nameable { * * @param newDiscoveredIn The new discoveredy turn. */ - public final void setDiscoveredIn(final Turn newDiscoveredIn) { + public final void setDiscoveredIn(final int newDiscoveredIn) { this.discoveredIn = newDiscoveredIn; } @@ -422,7 +422,7 @@ public class Region extends FreeColGameObject implements Nameable { * @param turn The {@code Turn} of discovery. * @return A list of discovered {@code Region}s. */ - public List<Region> discover(Player player, Turn turn) { + public List<Region> discover(Player player, int turn) { List<Region> result = new ArrayList<>(); this.discoveredBy = player; this.discoveredIn = turn; @@ -519,8 +519,8 @@ public class Region extends FreeColGameObject implements Nameable { xw.writeAttribute(PARENT_TAG, parent); } - if (discoveredIn != null) { - xw.writeAttribute(DISCOVERED_IN_TAG, discoveredIn.getNumber()); + if (discoveredIn != Turn.UNDEFINED) { + xw.writeAttribute(DISCOVERED_IN_TAG, discoveredIn); } if (discoveredBy != null) { @@ -574,8 +574,7 @@ public class Region extends FreeColGameObject implements Nameable { scoreValue = xr.getAttribute(SCORE_VALUE_TAG, 0); - int turn = xr.getAttribute(DISCOVERED_IN_TAG, UNDEFINED); - discoveredIn = (turn == UNDEFINED) ? null : new Turn(turn); + discoveredIn = xr.getAttribute(DISCOVERED_IN_TAG, Turn.UNDEFINED); discoveredBy = xr.findFreeColGameObject(getGame(), DISCOVERED_BY_TAG, Player.class, (Player)null, false); diff --git a/src/net/sf/freecol/common/model/Resource.java b/src/net/sf/freecol/common/model/Resource.java index 47f5545269b..8abcc8525ab 100644 --- a/src/net/sf/freecol/common/model/Resource.java +++ b/src/net/sf/freecol/common/model/Resource.java @@ -210,7 +210,7 @@ public class Resource extends TileItem { @Override public int applyBonus(GoodsType goodsType, UnitType unitType, int potential) { - int amount = -potential + (int)applyModifiers(potential, null, + int amount = -potential + (int)applyModifiers(potential, Turn.UNDEFINED, type.getModifiers(goodsType.getId(), unitType)); return potential + ((quantity == UNLIMITED || quantity > amount) ? amount diff --git a/src/net/sf/freecol/common/model/Role.java b/src/net/sf/freecol/common/model/Role.java index 315213874a9..6480acbbbc2 100644 --- a/src/net/sf/freecol/common/model/Role.java +++ b/src/net/sf/freecol/common/model/Role.java @@ -277,7 +277,7 @@ public class Role extends BuildableType { * @return The offense value. */ public double getOffence() { - return applyModifiers(0.0f, null, Modifier.OFFENCE); + return applyModifiers(0.0f, Turn.UNDEFINED, Modifier.OFFENCE); } /** @@ -295,7 +295,7 @@ public class Role extends BuildableType { * @return The defence value. */ private double getDefence() { - return applyModifiers(0.0f, null, Modifier.DEFENCE); + return applyModifiers(0.0f, Turn.UNDEFINED, Modifier.DEFENCE); } /** diff --git a/src/net/sf/freecol/common/model/Settlement.java b/src/net/sf/freecol/common/model/Settlement.java index 51ce5ff56a9..7fcdbb32665 100644 --- a/src/net/sf/freecol/common/model/Settlement.java +++ b/src/net/sf/freecol/common/model/Settlement.java @@ -807,7 +807,7 @@ public abstract class Settlement extends GoodsLocation if (ability.isIndependent()) ability.toXML(xw); } - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); for (Modifier modifier : getSortedModifiers()) { if (modifier.hasIncrement() && modifier.isOutOfDate(turn)) continue; diff --git a/src/net/sf/freecol/common/model/SimpleCombatModel.java b/src/net/sf/freecol/common/model/SimpleCombatModel.java index 907584a7910..53d7a6b95da 100644 --- a/src/net/sf/freecol/common/model/SimpleCombatModel.java +++ b/src/net/sf/freecol/common/model/SimpleCombatModel.java @@ -149,7 +149,7 @@ public class SimpleCombatModel extends CombatModel { || combatIsAttack(attacker, defender) || combatIsSettlementAttack(attacker, defender)) { Set<Modifier> mods = getOffensiveModifiers(attacker, defender); - Turn turn = attacker.getGame().getTurn(); + int turn = attacker.getGame().getTurn(); result = FeatureContainer.applyModifiers(0.0f, turn, mods); if (lb != null) { logModifiers(lb, mods); @@ -202,7 +202,7 @@ public class SimpleCombatModel extends CombatModel { || combatIsSettlementAttack(attacker, defender) || combatIsBombard(attacker, defender)) { Set<Modifier> mods = getDefensiveModifiers(attacker, defender); - Turn turn = defender.getGame().getTurn(); + int turn = defender.getGame().getTurn(); result = FeatureContainer.applyModifiers(0.0f, turn, mods); if (lb != null) { logModifiers(lb, mods); @@ -232,7 +232,7 @@ public class SimpleCombatModel extends CombatModel { || combatIsAttack(attacker, defender) || combatIsSettlementAttack(attacker, defender)) { final Unit attackerUnit = (Unit)attacker; - final Turn turn = attackerUnit.getGame().getTurn(); + final int turn = attackerUnit.getGame().getTurn(); // Base offense result.add(new Modifier(Modifier.OFFENCE, @@ -423,7 +423,7 @@ public class SimpleCombatModel extends CombatModel { || combatIsAttack(attacker, defender) || combatIsBombard(attacker, defender)) { final Unit defenderUnit = (Unit)defender; - final Turn turn = defenderUnit.getGame().getTurn(); + final int turn = defenderUnit.getGame().getTurn(); // Base defence result.add(new Modifier(Modifier.DEFENCE, diff --git a/src/net/sf/freecol/common/model/Specification.java b/src/net/sf/freecol/common/model/Specification.java index 6b293ae37b1..54e5bc41228 100644 --- a/src/net/sf/freecol/common/model/Specification.java +++ b/src/net/sf/freecol/common/model/Specification.java @@ -1891,8 +1891,7 @@ public final class Specification { * @param turn The {@code Turn} to check. * @return The age of the given turn. */ - public int getAge(Turn turn) { - int n = turn.getNumber(); + public int getAge(final int n) { return (n < ages[0]) ? -1 : (n < ages[1]) ? 0 : (n < ages[2]) ? 1 diff --git a/src/net/sf/freecol/common/model/Tile.java b/src/net/sf/freecol/common/model/Tile.java index 444ba599470..42e11ca8317 100644 --- a/src/net/sf/freecol/common/model/Tile.java +++ b/src/net/sf/freecol/common/model/Tile.java @@ -1367,7 +1367,7 @@ public final class Tile extends UnitLocation implements Named, Ownable { public double getDefenceValue() { final TileType type = getType(); return (type == null) ? 0.0 - : applyModifiers(1.0f, null, type.getDefenceModifiers()); + : applyModifiers(1.0f, Turn.UNDEFINED, type.getDefenceModifiers()); } /** @@ -2344,7 +2344,7 @@ public final class Tile extends UnitLocation implements Named, Ownable { @Override public Stream<Ability> getAbilities(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { // Delegate to type return getType().getAbilities(id, fcgot, turn); } diff --git a/src/net/sf/freecol/common/model/TileImprovementType.java b/src/net/sf/freecol/common/model/TileImprovementType.java index 91574a535c4..1d40350ec12 100644 --- a/src/net/sf/freecol/common/model/TileImprovementType.java +++ b/src/net/sf/freecol/common/model/TileImprovementType.java @@ -370,7 +370,7 @@ public final class TileImprovementType extends FreeColSpecObjectType { if (tt == null) { // simple bonus int production = tile.getPotentialProduction(goodsType, colonistType); if (production > 0) { - float chg = applyModifiers(production, null, + float chg = applyModifiers(production, Turn.UNDEFINED, goodsType.getId()); value = (int)(chg - production); } diff --git a/src/net/sf/freecol/common/model/TileType.java b/src/net/sf/freecol/common/model/TileType.java index 21893cf7829..374aa158678 100644 --- a/src/net/sf/freecol/common/model/TileType.java +++ b/src/net/sf/freecol/common/model/TileType.java @@ -345,7 +345,7 @@ public final class TileType extends FreeColSpecObjectType UnitType unitType) { if (goodsType == null) return 0; int amount = getBaseProduction(null, goodsType, unitType); - amount = (int)applyModifiers(amount, null, goodsType.getId(), + amount = (int)applyModifiers(amount, Turn.UNDEFINED, goodsType.getId(), unitType); return (amount < 0) ? 0 : amount; } diff --git a/src/net/sf/freecol/common/model/Turn.java b/src/net/sf/freecol/common/model/Turn.java index c185508a575..d1acb941478 100644 --- a/src/net/sf/freecol/common/model/Turn.java +++ b/src/net/sf/freecol/common/model/Turn.java @@ -37,20 +37,8 @@ public class Turn { /** The number of seasons. */ private static int seasonNumber = 2; - - /** The numerical value of the Turn, never less than one. */ - private int turn = 1; - - - /** - * Creates a new {@code Turn} instance. - * - * @param turn The numeric value of the turn. - */ - public Turn(int turn) { - this.turn = turn; - } - + public static int UNDEFINED = FreeColObject.UNDEFINED; + public static int FIRST_TURN = 1; /** * Initialize the fundamental Turn year constants. Called from @@ -125,33 +113,6 @@ public class Turn { } /** - * Get the next turn, with a turn number one greater. - * - * @return The new {@code Turn}. - */ - public Turn next() { - return new Turn(turn + 1); - } - - /** - * Gets the turn number. - * - * @return The number of turns. - */ - public int getNumber() { - return turn; - } - - /** - * Gets the year this turn is in. - * - * @return The calculated year based on the turn number. - */ - public int getYear() { - return getYear(turn); - } - - /** * Gets the year the given turn is in. * * @param turn The turn number to get the year for. @@ -177,25 +138,6 @@ public class Turn { } /** - * Gets the season index of this turn. - * - * @return The season index corresponding to the current turn - * number, or negative if before the season year. - */ - public int getSeason() { - return getSeason(turn); - } - - /** - * Gets a localization template for this turn. - * - * @return A {@code StringTemplate} describing the turn. - */ - public StringTemplate getLabel() { - return getLabel(turn); - } - - /** * Gets a localization template for a given turn. * * @param turn The integer value of the turn to describe. @@ -213,31 +155,22 @@ public class Turn { } /** - * Is this turn the first one? - * - * @return True if this turn is the first turn. - */ - public boolean isFirstTurn() { - return turn == 1; - } - - /** * Is this turn the season year? * * @return True if this turn is the season year. */ - public boolean isFirstSeasonTurn() { + public static boolean isFirstSeasonTurn(final int turn) { return turn == yearToTurn(getSeasonYear()); } /** - * Get the suffix for a save game name for this turn. + * Get the suffix for a save game name for given turn. * * @return The save game suffix. */ - public String getSaveGameSuffix() { - final int season = getSeason(); - String result = String.valueOf(getYear()); + public static String getSaveGameSuffix(int turn) { + final int season = getSeason(turn); + String result = String.valueOf(getYear(turn)); if (season >= 0) { final int SeasonNumberDigits = String.valueOf(getSeasonNumber()).length(); // for leading zeroes result += "_" + String.format("%0"+String.valueOf(SeasonNumberDigits)+"d", season+1) @@ -258,34 +191,4 @@ public class Turn { : (turns >= 0) ? Integer.toString(turns) : ">" + Integer.toString(-turns - 1); } - - - // Override Object - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object o) { - if (o instanceof Turn) { - return this.turn == ((Turn)o).turn; - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - return turn; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return String.valueOf(turn); - } } diff --git a/src/net/sf/freecol/common/model/Unit.java b/src/net/sf/freecol/common/model/Unit.java index 436da2aa33c..04bb8f1ed06 100644 --- a/src/net/sf/freecol/common/model/Unit.java +++ b/src/net/sf/freecol/common/model/Unit.java @@ -2388,8 +2388,7 @@ public class Unit extends GoodsLocation */ @Override public int getInitialMovesLeft() { - Turn turn = getGame().getTurn(); - return (int)applyModifiers(unitType.getMovement(), turn, + return (int)applyModifiers(unitType.getMovement(), getGame().getTurn(), Modifier.MOVEMENT_BONUS, unitType); } @@ -3174,7 +3173,7 @@ public class Unit extends GoodsLocation * @return The line of sight of this {@code Unit}. */ public int getLineOfSight() { - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); return (int)applyModifiers(unitType.getLineOfSight(), turn, Stream.concat(this.getModifiers(Modifier.LINE_OF_SIGHT_BONUS, unitType, turn), @@ -3628,7 +3627,7 @@ public class Unit extends GoodsLocation * @return The set of {@code Modifier}s found. */ public Set<Modifier> getCombatModifiers(String id, - FreeColSpecObjectType fcgot, Turn turn) { + FreeColSpecObjectType fcgot, int turn) { final Player owner = getOwner(); final UnitType unitType = getType(); Set<Modifier> result = new HashSet<>(); @@ -4181,7 +4180,7 @@ public class Unit extends GoodsLocation */ @Override public Stream <Ability> getAbilities(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { final Player owner = getOwner(); final UnitType unitType = getType(); @@ -4214,7 +4213,7 @@ public class Unit extends GoodsLocation * @param turn The turn that applies. * @return A stream of {@code Ability}s found. */ - private Stream<Ability> getLocationAbilities(String id, Turn turn) { + private Stream<Ability> getLocationAbilities(String id, int turn) { final UnitType unitType = getType(); final Settlement settlement = getSettlement(); if (settlement != null) { @@ -4242,7 +4241,7 @@ public class Unit extends GoodsLocation */ @Override public Stream<Modifier> getModifiers(String id, FreeColSpecObjectType fcgot, - Turn turn) { + int turn) { final Player owner = getOwner(); final UnitType unitType = getType(); diff --git a/src/net/sf/freecol/common/model/UnitType.java b/src/net/sf/freecol/common/model/UnitType.java index dbccfebc7bc..d386854b203 100644 --- a/src/net/sf/freecol/common/model/UnitType.java +++ b/src/net/sf/freecol/common/model/UnitType.java @@ -31,6 +31,7 @@ import javax.xml.stream.XMLStreamException; import net.sf.freecol.common.io.FreeColXMLReader; import net.sf.freecol.common.io.FreeColXMLWriter; import net.sf.freecol.common.model.Colony.NoBuildReason; +import net.sf.freecol.common.model.Turn; import net.sf.freecol.common.model.UnitChangeType.UnitChange; import static net.sf.freecol.common.util.CollectionUtils.*; @@ -184,7 +185,7 @@ public final class UnitType extends BuildableType implements Consumer { * @return The offence value. */ public double getOffence() { - return applyModifiers(offence, null, Modifier.OFFENCE); + return applyModifiers(offence, Turn.UNDEFINED, Modifier.OFFENCE); } /** @@ -211,7 +212,7 @@ public final class UnitType extends BuildableType implements Consumer { * @return The defence value. */ public double getDefence() { - return applyModifiers(defence, null, Modifier.DEFENCE); + return applyModifiers(defence, Turn.UNDEFINED, Modifier.DEFENCE); } /** diff --git a/src/net/sf/freecol/common/model/WorkLocation.java b/src/net/sf/freecol/common/model/WorkLocation.java index 61f6c6b8e88..d20bb69d026 100644 --- a/src/net/sf/freecol/common/model/WorkLocation.java +++ b/src/net/sf/freecol/common/model/WorkLocation.java @@ -568,7 +568,7 @@ public abstract class WorkLocation extends UnitLocation public int getUnitProduction(Unit unit, GoodsType goodsType) { if (unit == null || unit.getWorkType() != goodsType) return 0; final UnitType unitType = unit.getType(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); return Math.max(0, (int)applyModifiers(getBaseProduction(getProductionType(), goodsType, unitType), diff --git a/src/net/sf/freecol/common/networking/NewTurnMessage.java b/src/net/sf/freecol/common/networking/NewTurnMessage.java index 7824ef4420b..38c46e1946b 100644 --- a/src/net/sf/freecol/common/networking/NewTurnMessage.java +++ b/src/net/sf/freecol/common/networking/NewTurnMessage.java @@ -20,7 +20,6 @@ package net.sf.freecol.common.networking; import net.sf.freecol.common.model.Game; -import net.sf.freecol.common.model.Turn; import net.sf.freecol.server.FreeColServer; import net.sf.freecol.server.model.ServerPlayer; @@ -42,8 +41,8 @@ public class NewTurnMessage extends AttributeMessage { * * @param turn The new {@code Turn}. */ - public NewTurnMessage(Turn turn) { - super(TAG, TURN_TAG, String.valueOf(turn.getNumber())); + public NewTurnMessage(int turn) { + super(TAG, TURN_TAG, String.valueOf(turn)); } /** diff --git a/src/net/sf/freecol/server/ai/AIColony.java b/src/net/sf/freecol/server/ai/AIColony.java index 48352cf23c3..f93a1277f27 100644 --- a/src/net/sf/freecol/server/ai/AIColony.java +++ b/src/net/sf/freecol/server/ai/AIColony.java @@ -103,7 +103,7 @@ public class AIColony extends AIObject implements PropertyChangeListener { = new ArrayList<>(); /** When should the workers in this Colony be rearranged? */ - private Turn rearrangeTurn = new Turn(0); + private int rearrangeTurn = 0; /** * Goods that should be completely exported and only exported to @@ -228,13 +228,13 @@ public class AIColony extends AIObject implements PropertyChangeListener { } // Skip this colony if it does not yet need rearranging. - final int turn = getGame().getTurn().getNumber(); - if (rearrangeTurn.getNumber() > turn) { + final int turn = getGame().getTurn(); + if (rearrangeTurn > turn) { if (colony.getCurrentlyBuilding() == null && colonyPlan != null && colonyPlan.getBestBuildableType() != null) { logger.warning(colony.getName() + " could be building but" - + " is asleep until turn: " + rearrangeTurn.getNumber() + + " is asleep until turn: " + rearrangeTurn + "( > " + turn + ")"); } else { return; @@ -311,7 +311,7 @@ public class AIColony extends AIObject implements PropertyChangeListener { preferScouts, aw); if (scratch == null) { lb.add(", failed to assign workers."); - rearrangeTurn = new Turn(turn + 1); + rearrangeTurn = turn + 1; return; } lb.add(", assigned ", workers.size(), " workers"); @@ -403,7 +403,7 @@ public class AIColony extends AIObject implements PropertyChangeListener { for (UnitWas uw : was) lb.add("\n ", uw); // Set the next rearrangement turn. - rearrangeTurn = new Turn(turn + nextRearrange); + rearrangeTurn = turn + nextRearrange; } /** @@ -607,7 +607,7 @@ public class AIColony extends AIObject implements PropertyChangeListener { AIMessage.askPutOutsideColony(getAIUnit(u)); } if (colony.getUnitCount() <= 0) avertAutoDestruction(); - rearrangeTurn = new Turn(getGame().getTurn().getNumber()); + rearrangeTurn = getGame().getTurn(); } /** @@ -1348,7 +1348,7 @@ public class AIColony extends AIObject implements PropertyChangeListener { * run fully next time it is invoked. */ public void requestRearrange() { - rearrangeTurn = new Turn(0); + rearrangeTurn = 0; } diff --git a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java index 43931858669..10594fd8478 100644 --- a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java +++ b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java @@ -517,7 +517,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer { } } - if (game.getTurn().getNumber() > 300 + if (game.getTurn() > 300 // FIXME: put it into a const in class Turn && player.isAtWar() && randoms[cheatIndex++] < offensiveLandUnitCheatPercent) { // - collect enemies, prefer not to antagonize the strong or @@ -1386,7 +1386,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer { */ @Override public int scoutsNeeded() { - return 3 - (getGame().getTurn().getNumber() / 100); + return 3 - (getGame().getTurn() / 100); } /** @@ -1492,17 +1492,17 @@ public class EuropeanAIPlayer extends MissionAIPlayer { */ private boolean peaceHolds(Player p) { final Player player = getPlayer(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); final double peaceProb = getSpecification() .getInteger(GameOptions.PEACE_PROBABILITY) / 100.0; int peaceTurn = -1; for (HistoryEvent h : player.getHistory()) { if (p.getId().equals(h.getPlayerId()) - && h.getTurn().getNumber() > peaceTurn) { + && h.getTurn() > peaceTurn) { switch (h.getEventType()) { case MAKE_PEACE: case FORM_ALLIANCE: - peaceTurn = h.getTurn().getNumber(); + peaceTurn = h.getTurn(); break; case DECLARE_WAR: peaceTurn = -1; @@ -1514,7 +1514,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer { } if (peaceTurn < 0) return false; - int n = turn.getNumber() - peaceTurn; + int n = turn - peaceTurn; float prob = (float)Math.pow(peaceProb, n); // Apply Franklin's modifier prob = p.applyModifiers(prob, turn, Modifier.PEACE_TREATY); @@ -2237,7 +2237,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer { @Override public void startWorking() { final Player player = getPlayer(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); final Specification spec = getSpecification(); initializeFromSpecification(spec); @@ -2257,13 +2257,13 @@ public class EuropeanAIPlayer extends MissionAIPlayer { LogBuilder lb = new LogBuilder(1024); int colonyCount = getAIColonies().size(); lb.add(player.getDebugName(), - " in ", turn, "/", turn.getNumber(), + " in ", turn, " units=", getAIUnits().size(), " colonies=", colonyCount, " declare=", (player.checkDeclareIndependence() == null), " v-land-REF=", player.getRebelStrengthRatio(false), " v-naval-REF=", player.getRebelStrengthRatio(true)); - if (turn.isFirstTurn()) initializeMissions(lb); + if (turn == Turn.FIRST_TURN) initializeMissions(lb); determineStances(lb); if (colonyCount > 0) { @@ -2601,7 +2601,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer { || goodsType.isBuildingMaterial()) { // By age 3 we should be able to produce enough ourselves. // FIXME: check whether we have an armory, at least - int turn = getGame().getTurn().getNumber(); + int turn = getGame().getTurn(); ret = turn < 300; lb.add(((ret) ? "accepted" : "rejected"), ": special-goods-in-turn-", turn, "."); diff --git a/src/net/sf/freecol/server/ai/NativeAIPlayer.java b/src/net/sf/freecol/server/ai/NativeAIPlayer.java index 32192138cf1..4d2e91deaee 100644 --- a/src/net/sf/freecol/server/ai/NativeAIPlayer.java +++ b/src/net/sf/freecol/server/ai/NativeAIPlayer.java @@ -725,18 +725,18 @@ public class NativeAIPlayer extends MissionAIPlayer { @Override public void startWorking() { final Player player = getPlayer(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); final int nSettlements = player.getSettlementCount(); final Random air = getAIRandom(); LogBuilder lb = new LogBuilder(1024); - lb.add(player.getDebugName(), " in ", turn, "/", turn.getNumber()); + lb.add(player.getDebugName(), " in ", turn); clearAIUnits(); determineStances(lb); List<AIUnit> more; - if (turn.isFirstTurn()) { + if (turn == Turn.FIRST_TURN) { initializeMissions(lb); more = getAIUnits(); } else { @@ -800,7 +800,7 @@ public class NativeAIPlayer extends MissionAIPlayer { */ public void updateTrade(NativeTrade nt, int anger) { final Specification spec = getSpecification(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); final IndianSettlement is = nt.getIndianSettlement(); final Unit unit = nt.getUnit(); Set<Modifier> modifiers = new HashSet<>(); @@ -862,7 +862,7 @@ public class NativeAIPlayer extends MissionAIPlayer { final IndianSettlement is = nt.getIndianSettlement(); final Unit unit = nt.getUnit(); final Player other = unit.getOwner(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); NativeTradeItem ours; int anger, haggle; diff --git a/src/net/sf/freecol/server/ai/goal/Goal.java b/src/net/sf/freecol/server/ai/goal/Goal.java index 77117f7e230..685df866d5c 100644 --- a/src/net/sf/freecol/server/ai/goal/Goal.java +++ b/src/net/sf/freecol/server/ai/goal/Goal.java @@ -79,7 +79,7 @@ public abstract class Goal extends AIObject implements GoalConstants { player = p; parentGoal = g; relativeWeight = w; - getGame().getTurn().getNumber(); + getGame().getTurn(); needsPlanning = true; //a newly created Goal always needs planning isFinished = false; //only plan() should set this to true! availableUnitsList = new ArrayList<>(); @@ -307,7 +307,7 @@ public abstract class Goal extends AIObject implements GoalConstants { protected void requestWorker(GoodsType gt, int minProduction) { //FIXME: Uncomment after AIPlayer.addWorkerWish() has been written. - //int turnsWithoutUnit = getGame().getTurn().getNumber() - turnLastUnitAdded; + //int turnsWithoutUnit = getGame().getTurn() - turnLastUnitAdded; //player.addWorkerWish(this, gt, minProduction, getAbsoluteWeight(), turnsWithoutUnit); } @@ -325,7 +325,6 @@ public abstract class Goal extends AIObject implements GoalConstants { */ public final void addUnit(AIUnit u) { logger.finest("Entering method addUnit() for "+getDebugDescription()+" with unit: "+u.getId()); - getGame().getTurn().getNumber(); availableUnitsList.add(u); u.setGoal(this); needsPlanning = true; //adding a unit to the Goal means it might need planning diff --git a/src/net/sf/freecol/server/control/InGameController.java b/src/net/sf/freecol/server/control/InGameController.java index e59925b7ad3..16f41254801 100644 --- a/src/net/sf/freecol/server/control/InGameController.java +++ b/src/net/sf/freecol/server/control/InGameController.java @@ -551,7 +551,7 @@ public final class InGameController extends Controller { serverPlayer.csChangeStance(Stance.PEACE, independent, true, cs); independent.changePlayerType(PlayerType.INDEPENDENT); Game game = getGame(); - Turn turn = game.getTurn(); + int turn = game.getTurn(); independent.setTax(0); independent.reinitialiseMarket(); HistoryEvent h = new HistoryEvent(turn, @@ -1350,11 +1350,11 @@ public final class InGameController extends Controller { // Do not add history event to cs as we are going to update the // entire player. Likewise clear model messages. - Turn turn = game.getTurn(); + int turn = game.getTurn(); HistoryEvent h = new HistoryEvent(turn, HistoryEvent.HistoryEventType.DECLARE_INDEPENDENCE, serverPlayer); final int independenceTurn = spec.getInteger(GameOptions.INDEPENDENCE_TURN); - h.setScore(Math.max(0, independenceTurn - turn.getNumber())); + h.setScore(Math.max(0, independenceTurn - turn)); cs.addGlobalHistory(game, h); serverPlayer.clearModelMessages(); cs.addMessage(serverPlayer, @@ -1659,7 +1659,7 @@ public final class InGameController extends Controller { Player indianPlayer = is.getOwner(); int gold = 0; - int year = getGame().getTurn().getNumber(); + int year = getGame().getTurn(); RandomRange gifts = is.getType().getGifts(unit); if (is.getLastTribute() + TURNS_PER_TRIBUTE < year && gifts != null) { @@ -3598,7 +3598,7 @@ public final class InGameController extends Controller { // Update the name and note the history. cs.addPartial(See.only(serverPlayer), serverPlayer, "newLandName"); - Turn turn = serverPlayer.getGame().getTurn(); + final int turn = serverPlayer.getGame().getTurn(); HistoryEvent h = new HistoryEvent(turn, HistoryEvent.HistoryEventType.DISCOVER_NEW_WORLD, serverPlayer) .addName("%name%", name); diff --git a/src/net/sf/freecol/server/model/ServerGame.java b/src/net/sf/freecol/server/model/ServerGame.java index 2995e0cbfd2..d5324c08d7f 100644 --- a/src/net/sf/freecol/server/model/ServerGame.java +++ b/src/net/sf/freecol/server/model/ServerGame.java @@ -319,7 +319,7 @@ public class ServerGame extends Game implements ServerModelObject { lastTime = now; Session.completeAll(cs); - setTurn(getTurn().next()); + setTurn(getTurn()+1); logger.finest("Turn is now " + getTurn() + duration); cs.add(See.all(), ChangePriority.CHANGE_NORMAL, new NewTurnMessage(getTurn())); diff --git a/src/net/sf/freecol/server/model/ServerIndianSettlement.java b/src/net/sf/freecol/server/model/ServerIndianSettlement.java index 742f1c7a0a8..4d23dc1b530 100644 --- a/src/net/sf/freecol/server/model/ServerIndianSettlement.java +++ b/src/net/sf/freecol/server/model/ServerIndianSettlement.java @@ -153,7 +153,7 @@ public class ServerIndianSettlement extends IndianSettlement if (missionary == null) return; final ServerPlayer other = (ServerPlayer)missionary.getOwner(); final Tile tile = getTile(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); // Check for braves converted by missionaries float convert = getConvertProgress(); diff --git a/src/net/sf/freecol/server/model/ServerPlayer.java b/src/net/sf/freecol/server/model/ServerPlayer.java index d25a3306787..8c69b8680d2 100644 --- a/src/net/sf/freecol/server/model/ServerPlayer.java +++ b/src/net/sf/freecol/server/model/ServerPlayer.java @@ -400,7 +400,7 @@ public class ServerPlayer extends Player implements ServerModelObject { // Set initial immigration target int i0 = spec.getInteger(GameOptions.INITIAL_IMMIGRATION); - immigrationRequired = (int)applyModifiers((float)i0, null, + immigrationRequired = (int)applyModifiers((float)i0, Turn.UNDEFINED, Modifier.RELIGIOUS_UNREST_BONUS); // Add initial gold @@ -525,7 +525,7 @@ public class ServerPlayer extends Player implements ServerModelObject { // The player does not have any valid units or settlements on the map. int mandatory = spec.getInteger(GameOptions.MANDATORY_COLONY_YEAR); - if (getGame().getTurn().getYear() >= mandatory) { + if (Turn.getYear(getGame().getTurn()) >= mandatory) { // After the season cutover year there must be a presence // in the New World. logger.info(getName() + " dead, no presence >= " + mandatory); @@ -1699,7 +1699,7 @@ outer: for (Effect effect : effects) { gt -> market.hasBeenTraded(gt))) { boolean add = market.getAmountInMarket(type) < type.getInitialAmount(); - int amount = game.getTurn().getNumber() / 10; + int amount = game.getTurn() / 10; if (type == extraType) amount = 2 * amount + 1; if (amount <= 0) continue; amount = randomInt(logger, "Market adjust " + type, random, amount); @@ -1890,7 +1890,7 @@ outer: for (Effect effect : effects) { final Game game = getGame(); final Specification spec = game.getSpecification(); final ServerEurope europe = (ServerEurope)getEurope(); - final Turn turn = game.getTurn(); + final int turn = game.getTurn(); boolean europeDirty = false, visibilityChange = false; addFather(father); @@ -3914,7 +3914,7 @@ outer: for (Effect effect : effects) { */ public Modifier makeTeaPartyModifier() { final Specification spec = getGame().getSpecification(); - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); Modifier modifier = first(spec.getModifiers(Modifier.COLONY_GOODS_PARTY)); if (modifier != null) { modifier = Modifier.makeTimedModifier("model.goods.bells", @@ -4114,7 +4114,7 @@ outer: for (Effect effect : effects) { // Must be a first contact! final Game game = getGame(); - Turn turn = game.getTurn(); + int turn = game.getTurn(); if (isIndian()) { if (other.isIndian()) { return false; // Ignore native-to-native contacts. diff --git a/src/net/sf/freecol/server/model/ServerRegion.java b/src/net/sf/freecol/server/model/ServerRegion.java index a9e23b8a110..8669c4fba62 100644 --- a/src/net/sf/freecol/server/model/ServerRegion.java +++ b/src/net/sf/freecol/server/model/ServerRegion.java @@ -132,7 +132,7 @@ public class ServerRegion extends Region { if (this.parent != null) this.parent.addChild(this); this.claimable = false; this.discoverable = false; - this.discoveredIn = null; + this.discoveredIn = Turn.UNDEFINED; this.discoveredBy = null; this.scoreValue = 0; } @@ -219,7 +219,7 @@ public class ServerRegion extends Region { * @param newName The name of the region. * @param cs A {@code ChangeSet} to update. */ - public void csDiscover(Player player, Turn turn, String newName, + public void csDiscover(Player player, int turn, String newName, ChangeSet cs) { if (!getDiscoverable()) return; final int score = (getSpecification().getBoolean(GameOptions.EXPLORATION_POINTS)) diff --git a/src/net/sf/freecol/server/model/ServerUnit.java b/src/net/sf/freecol/server/model/ServerUnit.java index fbab6d901d4..1c6e4b86be3 100644 --- a/src/net/sf/freecol/server/model/ServerUnit.java +++ b/src/net/sf/freecol/server/model/ServerUnit.java @@ -228,7 +228,7 @@ public class ServerUnit extends Unit implements ServerModelObject { AbstractGoods deliver = getWorkImprovement().getType() .getProduction(tile.getType()); if (deliver != null) { // Deliver goods if any - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); int amount = deliver.getAmount(); amount = (int)this.applyModifiers(amount, turn, Modifier.TILE_TYPE_CHANGE_PRODUCTION, deliver.getType()); diff --git a/test/src/net/sf/freecol/common/model/BuildingTest.java b/test/src/net/sf/freecol/common/model/BuildingTest.java index e76063613d7..0bcad28ac85 100644 --- a/test/src/net/sf/freecol/common/model/BuildingTest.java +++ b/test/src/net/sf/freecol/common/model/BuildingTest.java @@ -684,7 +684,7 @@ public class BuildingTest extends FreeColTestCase { public void testStockade() { final Game game = getGame(); - final Turn turn = game.getTurn(); + final int turn = game.getTurn(); game.setMap(getTestMap(true)); List<Modifier> modifiers; @@ -830,7 +830,7 @@ public class BuildingTest extends FreeColTestCase { public void testTownhallProduction() { final Game game = getGame(); game.setMap(getTestMap(true)); - final Turn turn = game.getTurn(); + final int turn = game.getTurn(); Colony colony = getStandardColony(6); Player owner = colony.getOwner(); diff --git a/test/src/net/sf/freecol/common/model/ColonyTest.java b/test/src/net/sf/freecol/common/model/ColonyTest.java index 7e7af885529..2b727b9bbb4 100644 --- a/test/src/net/sf/freecol/common/model/ColonyTest.java +++ b/test/src/net/sf/freecol/common/model/ColonyTest.java @@ -198,7 +198,7 @@ public class ColonyTest extends FreeColTestCase { colony.addModifier(serverPlayer.makeTeaPartyModifier()); assertEquals(1, countParties(colony)); Modifier m = serverPlayer.makeTeaPartyModifier(); - m.setFirstTurn(new Turn(game.getTurn().getNumber() + 1)); + m.setFirstTurn(game.getTurn() + 1); colony.addModifier(m); assertEquals(2, countParties(colony)); } diff --git a/test/src/net/sf/freecol/common/model/GameTest.java b/test/src/net/sf/freecol/common/model/GameTest.java index b2a74a30cc1..e679adb87f2 100644 --- a/test/src/net/sf/freecol/common/model/GameTest.java +++ b/test/src/net/sf/freecol/common/model/GameTest.java @@ -77,27 +77,27 @@ public class GameTest extends FreeColTestCase { assertEquals(1492, Turn.getYear(1)); assertEquals(1, Turn.yearToTurn(1492)); assertEquals(-1, Turn.getSeason(1)); - assertEquals(0, spec().getAge(new Turn(1))); + assertEquals(0, spec().getAge(1)); assertEquals(1599, Turn.getYear(108)); assertEquals(108, Turn.yearToTurn(1599)); assertEquals(-1, Turn.getSeason(108)); - assertEquals(0, spec().getAge(new Turn(108))); + assertEquals(0, spec().getAge(108)); assertEquals(1600, Turn.getYear(109)); assertEquals(109, Turn.yearToTurn(1600, 0)); assertEquals(0, Turn.getSeason(109)); - assertEquals(1, spec().getAge(new Turn(109))); + assertEquals(1, spec().getAge(109)); assertEquals(1600, Turn.getYear(110)); assertEquals(110, Turn.yearToTurn(1600, 1)); assertEquals(1, Turn.getSeason(110)); - assertEquals(1, spec().getAge(new Turn(308))); + assertEquals(1, spec().getAge(308)); assertEquals(1700, Turn.getYear(309)); assertEquals(309, Turn.yearToTurn(1700, 0)); assertEquals(0, Turn.getSeason(309)); - assertEquals(2, spec().getAge(new Turn(309))); + assertEquals(2, spec().getAge(309)); assertEquals(1700, Turn.getYear(310)); assertEquals(310, Turn.yearToTurn(1700, 1)); diff --git a/test/src/net/sf/freecol/common/model/ModifierTest.java b/test/src/net/sf/freecol/common/model/ModifierTest.java index 0911273a633..bfc6583e42c 100644 --- a/test/src/net/sf/freecol/common/model/ModifierTest.java +++ b/test/src/net/sf/freecol/common/model/ModifierTest.java @@ -189,31 +189,31 @@ public class ModifierTest extends FreeColTestCase { Modifier modifier2 = new Modifier("test", 2, ModifierType.ADDITIVE); - modifier1.setFirstTurn(new Turn(10)); - modifier1.setLastTurn(new Turn(30)); - modifier2.setFirstTurn(new Turn(20)); - modifier2.setLastTurn(new Turn(40)); + modifier1.setFirstTurn(10); + modifier1.setLastTurn(30); + modifier2.setFirstTurn(20); + modifier2.setLastTurn(40); assertTrue(modifier1.hasTimeLimit()); assertTrue(modifier2.hasTimeLimit()); - assertFalse(modifier1.appliesTo(frigate, new Turn(5))); - assertFalse(modifier1.appliesTo(frigate, new Turn(35))); - assertFalse(modifier1.isOutOfDate(new Turn(25))); - assertTrue(modifier1.appliesTo(frigate, new Turn(25))); + assertFalse(modifier1.appliesTo(frigate, 5)); + assertFalse(modifier1.appliesTo(frigate, 35)); + assertFalse(modifier1.isOutOfDate(25)); + assertTrue(modifier1.appliesTo(frigate, 25)); - assertFalse(modifier2.appliesTo(frigate, new Turn(5))); - assertFalse(modifier2.appliesTo(frigate, new Turn(5))); - assertFalse(modifier2.isOutOfDate(new Turn(25))); - assertTrue(modifier2.appliesTo(frigate, new Turn(25))); + assertFalse(modifier2.appliesTo(frigate, 5)); + assertFalse(modifier2.appliesTo(frigate, 5)); + assertFalse(modifier2.isOutOfDate(25)); + assertTrue(modifier2.appliesTo(frigate, 25)); FeatureContainer featureContainer = new FeatureContainer(); featureContainer.addModifier(modifier1); featureContainer.addModifier(modifier2); - List<Modifier> modifiers = toList(featureContainer.getModifiers("test", frigate, new Turn(15))); + List<Modifier> modifiers = toList(featureContainer.getModifiers("test", frigate, 15)); assertEquals(1, modifiers.size()); assertEquals(modifier1, first(modifiers)); - modifiers = toList(featureContainer.getModifiers("test", frigate, new Turn(35))); + modifiers = toList(featureContainer.getModifiers("test", frigate, 35)); assertEquals(1, modifiers.size()); assertEquals(modifier2, first(modifiers)); } @@ -225,28 +225,27 @@ public class ModifierTest extends FreeColTestCase { ModifierType.ADDITIVE); modifier1.setIncrement(ModifierType.ADDITIVE, 1, - new Turn(10), new Turn(15)); - assertFalse(modifier1.appliesTo(frigate, new Turn(9))); - assertTrue(modifier1.appliesTo(frigate, new Turn(10))); + 10, 15); + assertFalse(modifier1.appliesTo(frigate, 9)); + assertTrue(modifier1.appliesTo(frigate, 10)); assertTrue(modifier1.hasIncrement()); FeatureContainer featureContainer = new FeatureContainer(); featureContainer.addModifier(modifier1); featureContainer.addModifier(modifier2); - Turn turn; // only modifier2 - assertEquals(3f, featureContainer.applyModifiers(1, new Turn(9), + assertEquals(3f, featureContainer.applyModifiers(1, 9, "test", frigate)); // both modifiers - assertEquals(4f, featureContainer.applyModifiers(1, new Turn(10), + assertEquals(4f, featureContainer.applyModifiers(1, 10, "test", frigate)); - assertEquals(5f, featureContainer.applyModifiers(1, new Turn(11), + assertEquals(5f, featureContainer.applyModifiers(1, 11, "test", frigate)); - assertEquals(9f, featureContainer.applyModifiers(1, new Turn(15), + assertEquals(9f, featureContainer.applyModifiers(1, 15, "test", frigate)); // only modifier2 - assertEquals(3f, featureContainer.applyModifiers(1, new Turn(16), + assertEquals(3f, featureContainer.applyModifiers(1, 16, "test", frigate)); } @@ -342,6 +341,6 @@ public class ModifierTest extends FreeColTestCase { featureContainer.addModifier(modifier3); assertEquals(Modifier.UNKNOWN, - featureContainer.applyModifiers(1, new Turn(15), "test", null)); + featureContainer.applyModifiers(1, 15, "test", null)); } } diff --git a/test/src/net/sf/freecol/common/model/MonarchTest.java b/test/src/net/sf/freecol/common/model/MonarchTest.java index 510afb38561..521360adc61 100644 --- a/test/src/net/sf/freecol/common/model/MonarchTest.java +++ b/test/src/net/sf/freecol/common/model/MonarchTest.java @@ -60,7 +60,7 @@ public class MonarchTest extends FreeColTestCase { assertTrue(choices.isEmpty()); Colony colony = getStandardColony(); - game.setTurn(new Turn(100)); + game.setTurn(100); dutch.setTax(Monarch.MINIMUM_TAX_RATE / 2); choices = dutch.getMonarch().getActionChoices(); assertTrue(choicesContain(choices, MonarchAction.RAISE_TAX_WAR)); diff --git a/test/src/net/sf/freecol/common/model/TileTest.java b/test/src/net/sf/freecol/common/model/TileTest.java index 606e0f72cd7..dfa042c0674 100644 --- a/test/src/net/sf/freecol/common/model/TileTest.java +++ b/test/src/net/sf/freecol/common/model/TileTest.java @@ -480,7 +480,7 @@ public class TileTest extends FreeColTestCase { // Add a sugar resource, there should now be two sugar bonuses // on tile1. - final Turn turn = getGame().getTurn(); + final int turn = getGame().getTurn(); assertTrue(tile1.canProduce(sugar, null)); int oldBase = tile1.getBaseProduction(null, sugar, null); Resource addedSugar = new Resource(game, tile1, sugarResource); diff --git a/test/src/net/sf/freecol/server/generator/MapGeneratorTest.java b/test/src/net/sf/freecol/server/generator/MapGeneratorTest.java index aea6944b7c8..712a2a33d47 100644 --- a/test/src/net/sf/freecol/server/generator/MapGeneratorTest.java +++ b/test/src/net/sf/freecol/server/generator/MapGeneratorTest.java @@ -223,7 +223,7 @@ public class MapGeneratorTest extends FreeColTestCase { Player player = new Player(game, FreeColObject.ID_ATTRIBUTE_TAG); ServerUnit unit = new ServerUnit(game, null, player, spec().getUnitType("model.unit.caravel")); - pacific.discover(player, new Turn(1)); + pacific.discover(player, 1); assertFalse(pacific.getDiscoverable()); assertNull(pacific.getDiscoverableRegion()); diff --git a/test/src/net/sf/freecol/server/model/ServerPlayerTest.java b/test/src/net/sf/freecol/server/model/ServerPlayerTest.java index 2a058ea9d37..6e259e5f9a5 100644 --- a/test/src/net/sf/freecol/server/model/ServerPlayerTest.java +++ b/test/src/net/sf/freecol/server/model/ServerPlayerTest.java @@ -119,7 +119,7 @@ public class ServerPlayerTest extends FreeColTestCase { // Pretend time is passing. // Have to advance time as yearly goods removal is initially low. - game.setTurn(new Turn(200)); + game.setTurn(200); List<Integer> setValues = new ArrayList<>(); setValues.add(20); MockPseudoRandom mockRandom = new MockPseudoRandom(setValues, true); @@ -306,7 +306,7 @@ public class ServerPlayerTest extends FreeColTestCase { ServerPlayer.IS_ALIVE, dutch.checkForDeath()); - game.setTurn(new Turn(1600)); + game.setTurn(1600); assertEquals("Should be game over, no new world presence >= 1600", ServerPlayer.IS_DEAD, dutch.checkForDeath()); @@ -331,7 +331,7 @@ public class ServerPlayerTest extends FreeColTestCase { assertEquals("Should not be game over, units between new world and europe", 0, dutch.checkForDeath()); - game.setTurn(new Turn(1600)); + game.setTurn(1600); assertEquals("Should be game over, no new world presence >= 1600", -1, dutch.checkForDeath()); } @@ -355,7 +355,7 @@ public class ServerPlayerTest extends FreeColTestCase { assertEquals("Should not be game over, units between new world and europe", 0, dutch.checkForDeath()); - game.setTurn(new Turn(1600)); + game.setTurn(1600); assertEquals("Should be game over, no new world presence >= 1600", -1, dutch.checkForDeath()); } -- 2.11.0.rc0.7.gbe5a750 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Freecol-developers mailing list Freecol-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freecol-developers