mirror of https://github.com/FreeCol/freecol.git
Differentiate static routines (findbugs).
This commit is contained in:
parent
bb1168c1e4
commit
f315953ae3
|
@ -656,7 +656,7 @@ public class ClientOptions extends OptionGroup {
|
|||
* @return The current colony {@code Comparator}.
|
||||
*/
|
||||
public Comparator<Colony> getColonyComparator() {
|
||||
return getColonyComparator(getInteger(COLONY_COMPARATOR));
|
||||
return getColonyComparatorInternal(getInteger(COLONY_COMPARATOR));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -665,7 +665,7 @@ public class ClientOptions extends OptionGroup {
|
|||
* @param The colony comparator option integer value.
|
||||
* @return The corresponding colony {@code Comparator}.
|
||||
*/
|
||||
private static Comparator<Colony> getColonyComparator(int type) {
|
||||
private static Comparator<Colony> getColonyComparatorInternal(int type) {
|
||||
switch (type) {
|
||||
case COLONY_COMPARATOR_AGE:
|
||||
return colonyAgeComparator;
|
||||
|
|
|
@ -225,10 +225,34 @@ public final class ImageLibrary {
|
|||
return this.scaleFactor;
|
||||
}
|
||||
|
||||
public Dimension scaleDimension(Dimension size) {
|
||||
/**
|
||||
* Scale a dimension with the current internal scale.
|
||||
*
|
||||
* @param size The {@code Dimension} to scale.
|
||||
* @return The scaled {@code Dimension}.
|
||||
*/
|
||||
public Dimension scale(Dimension size) {
|
||||
return scaleDimension(size, this.scaleFactor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale a dimension with the current internal scale and an extra override.
|
||||
*
|
||||
* @param size The {@code Dimension} to scale.
|
||||
* @param extraFactor An extra scaling.
|
||||
* @return The scaled {@code Dimension}.
|
||||
*/
|
||||
public Dimension scale(Dimension size, float extraFactor) {
|
||||
return scaleDimension(size, this.scaleFactor * extraFactor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Absolute dimenion scaling helper routine.
|
||||
*
|
||||
* @param size The {@code Dimension} to scale.
|
||||
* @param scaleFactor The scale to use.
|
||||
* @return The scaled {@code Dimension}.
|
||||
*/
|
||||
public static Dimension scaleDimension(Dimension size, float scaleFactor) {
|
||||
return new Dimension(Math.round(size.width * scaleFactor),
|
||||
Math.round(size.height * scaleFactor));
|
||||
|
@ -255,11 +279,11 @@ public final class ImageLibrary {
|
|||
case 0:
|
||||
return null;
|
||||
case 1:
|
||||
return getScaledImage(keys.get(0), size, false);
|
||||
return getSizedImageInternal(keys.get(0), size, false);
|
||||
default:
|
||||
keys.sort(Comparator.naturalOrder());
|
||||
String key = keys.get(Math.abs(id.hashCode() % count));
|
||||
return getScaledImage(key, size, false);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -513,6 +537,16 @@ public final class ImageLibrary {
|
|||
|
||||
// Fundamental image retrieval
|
||||
|
||||
/**
|
||||
* Just get an image without any scaling.
|
||||
*
|
||||
* @param key The image key.
|
||||
* @return The image found.
|
||||
*/
|
||||
public static BufferedImage getUnscaledImage(String key) {
|
||||
return ResourceManager.getImage(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the image for the given identifier, scaling and grayscale choice.
|
||||
*
|
||||
|
@ -526,8 +560,8 @@ public final class ImageLibrary {
|
|||
* @param grayscale If true, return the grayscale version of the image.
|
||||
* @return The {@code BufferedImage} found by the {@code ResourceManager}.
|
||||
*/
|
||||
private static BufferedImage getScaledImage(String id, float scale,
|
||||
boolean grayscale) {
|
||||
private static BufferedImage getScaledImageInternal(String id, float scale,
|
||||
boolean grayscale) {
|
||||
return ResourceManager.getImage(id, scale, grayscale);
|
||||
}
|
||||
|
||||
|
@ -539,8 +573,9 @@ public final class ImageLibrary {
|
|||
* @param grayscale If true, return the grayscale version of the image.
|
||||
* @return The {@code BufferedImage} found by the {@code ResourceManager}.
|
||||
*/
|
||||
public static BufferedImage getScaledImage(String id, Dimension size,
|
||||
boolean grayscale) {
|
||||
private static BufferedImage getSizedImageInternal(String id,
|
||||
Dimension size,
|
||||
boolean grayscale) {
|
||||
return ResourceManager.getImage(id, size, grayscale);
|
||||
}
|
||||
|
||||
|
@ -551,23 +586,19 @@ public final class ImageLibrary {
|
|||
* @return The {@code BufferedImage} found by the {@code ResourceManager}.
|
||||
*/
|
||||
public BufferedImage getScaledImage(String key) {
|
||||
return getScaledImage(key, this.scaleFactor, false);
|
||||
return getScaledImageInternal(key, this.scaleFactor, false);
|
||||
}
|
||||
|
||||
public BufferedImage getSmallImage(String key) {
|
||||
return getScaledImage(key, this.scaleFactor * SMALL_SCALE, false);
|
||||
return getScaledImageInternal(key, this.scaleFactor * SMALL_SCALE, false);
|
||||
}
|
||||
|
||||
public BufferedImage getSmallerImage(String key) {
|
||||
return getScaledImage(key, this.scaleFactor * SMALLER_SCALE, false);
|
||||
return getScaledImageInternal(key, this.scaleFactor * SMALLER_SCALE, false);
|
||||
}
|
||||
|
||||
public BufferedImage getTinyImage(String key) {
|
||||
return getScaledImage(key, this.scaleFactor * TINY_SCALE, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getUnscaledImage(String key) {
|
||||
return ResourceManager.getImage(key);
|
||||
return getScaledImageInternal(key, this.scaleFactor * TINY_SCALE, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -637,7 +668,7 @@ public final class ImageLibrary {
|
|||
public static BufferedImage getFoundingFatherImage(FoundingFather father,
|
||||
boolean grayscale) {
|
||||
final String key = "image.flavor." + father.getId();
|
||||
return getScaledImage(key, NORMAL_SCALE, grayscale);
|
||||
return getScaledImageInternal(key, NORMAL_SCALE, grayscale);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -677,6 +708,14 @@ public final class ImageLibrary {
|
|||
return getUnscaledImage(key);
|
||||
}
|
||||
|
||||
public static BufferedImage getLCRImage(Dimension size) {
|
||||
return getSizedImageInternal(LOST_CITY_RUMOUR, size, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getLibertyImage() {
|
||||
return getSizedImageInternal(BELLS, ICON_SIZE, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getMeetingImage(Player meet) {
|
||||
final String base = "image.flavor.event.meeting.";
|
||||
String key = base + meet.getNationResourceKey();
|
||||
|
@ -695,15 +734,14 @@ public final class ImageLibrary {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the appropriate BufferedImage for a FreeColObject. Please,
|
||||
* use a more specific method!
|
||||
* Get the appropriate BufferedImage for a FreeColObject.
|
||||
*
|
||||
* @param display The {@code FreeColObject} to display.
|
||||
* @param size The image size.
|
||||
* @return The appropriate {@code BufferedImage}.
|
||||
*/
|
||||
public static BufferedImage getObjectImage(FreeColObject display,
|
||||
Dimension size) {
|
||||
private static BufferedImage getObjectImageInternal(FreeColObject display,
|
||||
Dimension size) {
|
||||
final FreeColObject derived = display.getDisplayObject();
|
||||
// Not all types have a meaningful image.
|
||||
BufferedImage image = (derived instanceof BuildingType)
|
||||
|
@ -711,7 +749,7 @@ public final class ImageLibrary {
|
|||
: (derived instanceof GoodsType)
|
||||
? getGoodsTypeImage((GoodsType)derived, size)
|
||||
: (derived instanceof LostCityRumour)
|
||||
? getScaledImage(LOST_CITY_RUMOUR, size, false)
|
||||
? getLCRImage(size)
|
||||
: (derived instanceof Nation)
|
||||
? getNationImage((Nation)derived, size)
|
||||
: (derived instanceof ResourceType)
|
||||
|
@ -731,21 +769,33 @@ public final class ImageLibrary {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the appropriate BufferedImage for a FreeColObject. Please,
|
||||
* use a more specific method!
|
||||
* Get the appropriate BufferedImage for a FreeColObject.
|
||||
*
|
||||
* Please use a more specific method!
|
||||
*
|
||||
* @param display The {@code FreeColObject} to display.
|
||||
* @param scale How much the image should be scaled.
|
||||
* @return The appropriate {@code BufferedImage}.
|
||||
*/
|
||||
public BufferedImage getObjectImage(FreeColObject display, float scale) {
|
||||
final float combinedScale = this.scaleFactor * scale;
|
||||
final Dimension size = scaleDimension(ICON_SIZE, combinedScale);
|
||||
return getObjectImage(display, size);
|
||||
return getObjectImageInternal(display, scale(ICON_SIZE, scale));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the appropriate BufferedImage for a FreeColObject.
|
||||
*
|
||||
* Please use a more specific method!
|
||||
*
|
||||
* @param display The {@code FreeColObject} to display.
|
||||
* @param size The image size.
|
||||
* @return The appropriate {@code BufferedImage}.
|
||||
*/
|
||||
public BufferedImage getObjectImage(FreeColObject display, Dimension size) {
|
||||
return getObjectImageInternal(display, size);
|
||||
}
|
||||
|
||||
public static BufferedImage getReplacementImage(Dimension size) {
|
||||
return getScaledImage(ResourceManager.REPLACEMENT_IMAGE, size, false);
|
||||
return getSizedImageInternal(ResourceManager.REPLACEMENT_IMAGE, size, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -755,37 +805,6 @@ public final class ImageLibrary {
|
|||
return "image.buildingicon." + buildingType.getId();
|
||||
}
|
||||
|
||||
public static BufferedImage getBuildingTypeImage(BuildingType buildingType,
|
||||
float scale) {
|
||||
final String key = getBuildingTypeKey(buildingType);
|
||||
return getScaledImage(key, scale, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getBuildingTypeImage(BuildingType buildingType,
|
||||
Dimension size) {
|
||||
final String key = getBuildingTypeKey(buildingType);
|
||||
return getScaledImage(key, size, false);
|
||||
}
|
||||
|
||||
private static BufferedImage getBuildingTypeImage(BuildingType buildingType,
|
||||
Player player,
|
||||
float scale) {
|
||||
final String key = getBuildingTypeKey(buildingType);
|
||||
final String extraKey = key + "." + player.getNationResourceKey();
|
||||
final boolean hasExtra = ResourceManager.hasImageResource(extraKey);
|
||||
return getScaledImage((hasExtra) ? extraKey : key, scale, false);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledBuildingImage(Building building) {
|
||||
return getBuildingTypeImage(building.getType(), building.getOwner(),
|
||||
this.scaleFactor);
|
||||
}
|
||||
|
||||
public BufferedImage getSmallBuildingImage(Building building) {
|
||||
return getBuildingTypeImage(building.getType(), building.getOwner(),
|
||||
this.scaleFactor * SMALL_SCALE);
|
||||
}
|
||||
|
||||
public static BufferedImage getBuildableTypeImage(BuildableType buildable,
|
||||
Dimension size) {
|
||||
return (buildable instanceof BuildingType)
|
||||
|
@ -797,32 +816,62 @@ public final class ImageLibrary {
|
|||
Player player) {
|
||||
float scale = this.scaleFactor * SMALL_SCALE;
|
||||
return (buildable instanceof BuildingType)
|
||||
? getBuildingTypeImage((BuildingType)buildable, player, scale)
|
||||
? getScaledBuildingTypeImage((BuildingType)buildable, player, scale)
|
||||
: getUnitTypeImage((UnitType)buildable, scale);
|
||||
}
|
||||
|
||||
public static BufferedImage getBuildingTypeImage(BuildingType buildingType,
|
||||
Dimension size) {
|
||||
final String key = getBuildingTypeKey(buildingType);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledBuildingTypeImage(BuildingType buildingType,
|
||||
float scale) {
|
||||
final String key = getBuildingTypeKey(buildingType);
|
||||
return getScaledImageInternal(key, scale, false);
|
||||
}
|
||||
|
||||
private BufferedImage getScaledBuildingTypeImage(BuildingType buildingType,
|
||||
Player player,
|
||||
float scale) {
|
||||
final String key = getBuildingTypeKey(buildingType);
|
||||
final String extraKey = key + "." + player.getNationResourceKey();
|
||||
final boolean hasExtra = ResourceManager.hasImageResource(extraKey);
|
||||
return getScaledImageInternal((hasExtra) ? extraKey : key, scale, false);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledBuildingImage(Building building) {
|
||||
return getScaledBuildingTypeImage(building.getType(),
|
||||
building.getOwner(),
|
||||
this.scaleFactor);
|
||||
}
|
||||
|
||||
public BufferedImage getSmallBuildingImage(Building building) {
|
||||
return getScaledBuildingTypeImage(building.getType(),
|
||||
building.getOwner(),
|
||||
this.scaleFactor * SMALL_SCALE);
|
||||
}
|
||||
|
||||
|
||||
// Goods image handling
|
||||
|
||||
public static BufferedImage getGoodsTypeImage(GoodsType gt,
|
||||
Dimension size) {
|
||||
final String key = "image.icon." + gt.getId();
|
||||
return getScaledImage(key, size, false);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledGoodsTypeImage(GoodsType gt) {
|
||||
return getGoodsTypeImage(gt,
|
||||
scaleDimension(ICON_SIZE, this.scaleFactor));
|
||||
return getGoodsTypeImage(gt, scale(ICON_SIZE));
|
||||
}
|
||||
|
||||
public BufferedImage getSmallGoodsTypeImage(GoodsType gt) {
|
||||
return getGoodsTypeImage(gt,
|
||||
scaleDimension(ICON_SIZE, this.scaleFactor * SMALL_SCALE));
|
||||
return getGoodsTypeImage(gt, scale(ICON_SIZE, SMALL_SCALE));
|
||||
}
|
||||
|
||||
public BufferedImage getSmallerGoodsTypeImage(GoodsType gt) {
|
||||
return getGoodsTypeImage(gt,
|
||||
scaleDimension(ICON_SIZE, this.scaleFactor * SMALLER_SCALE));
|
||||
return getGoodsTypeImage(gt, scale(ICON_SIZE, SMALLER_SCALE));
|
||||
}
|
||||
|
||||
|
||||
|
@ -874,11 +923,11 @@ public final class ImageLibrary {
|
|||
|
||||
public static BufferedImage getNationImage(Nation nation, Dimension size) {
|
||||
|
||||
return getScaledImage(getNationKey(nation), size, false);
|
||||
return getSizedImageInternal(getNationKey(nation), size, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getNationImage(Nation nation, float scale) {
|
||||
return getScaledImage(getNationKey(nation), scale, false);
|
||||
return getScaledImageInternal(getNationKey(nation), scale, false);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledNationImage(Nation nation) {
|
||||
|
@ -954,7 +1003,7 @@ public final class ImageLibrary {
|
|||
public BufferedImage getBeachCornerImage(int index, int x, int y) {
|
||||
final String key = "image.tile.model.tile.beach.corner" + index
|
||||
+ ".r" + ((isSpecialEven(x, y)) ? "0" : "1");
|
||||
return getScaledImage(key, this.tileSize, false);
|
||||
return getSizedImageInternal(key, this.tileSize, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -968,7 +1017,7 @@ public final class ImageLibrary {
|
|||
public BufferedImage getBeachEdgeImage(int index, int x, int y) {
|
||||
final String key = "image.tile.model.tile.beach.edge" + index
|
||||
+ ".r"+ ((isSpecialEven(x, y)) ? "0" : "1");
|
||||
return getScaledImage(key, this.tileSize, false);
|
||||
return getSizedImageInternal(key, this.tileSize, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -986,33 +1035,21 @@ public final class ImageLibrary {
|
|||
+ ((type==null) ? "model.tile.unexplored" : type.getId())
|
||||
+ ".border." + direction
|
||||
+ ".r" + ((isSpecialEven(x, y)) ? "0" : "1");
|
||||
return getScaledImage(key, this.tileSize, false);
|
||||
return getSizedImageInternal(key, this.tileSize, false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the forest image for a terrain type.
|
||||
* Get the forest image for a terrain type.
|
||||
*
|
||||
* @param type The type of the terrain-image to return.
|
||||
* @param riverStyle An optional river style to apply.
|
||||
* @param size The image size.
|
||||
* @return The image at the given index.
|
||||
*/
|
||||
public BufferedImage getForestImage(TileType type) {
|
||||
return getForestImage(type, this.tileForestSize);
|
||||
}
|
||||
|
||||
public static BufferedImage getForestImage(TileType type, Dimension size) {
|
||||
final String key = "image.tileforest." + type.getId();
|
||||
return getScaledImage(key, size, false);
|
||||
}
|
||||
|
||||
public BufferedImage getForestImage(TileType type,
|
||||
TileImprovementStyle riverStyle) {
|
||||
return getForestImage(type, riverStyle, this.tileForestSize);
|
||||
}
|
||||
|
||||
private static BufferedImage getForestImage(TileType type,
|
||||
TileImprovementStyle riverStyle,
|
||||
Dimension size) {
|
||||
private static BufferedImage getForestImageInternal(TileType type,
|
||||
TileImprovementStyle riverStyle,
|
||||
Dimension size) {
|
||||
String key;
|
||||
if (riverStyle != null) {
|
||||
String mask = riverStyle.getMask();
|
||||
|
@ -1021,38 +1058,45 @@ public final class ImageLibrary {
|
|||
+ (("0000".equals(mask)) ? "0100" : mask);
|
||||
// Safety check providing fallback for incomplete mods
|
||||
if (ResourceManager.hasImageResource(key)) {
|
||||
return getScaledImage(key, size, false);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
}
|
||||
key = "image.tileforest." + type.getId();
|
||||
return getScaledImage(key, size, false);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getForestImage(TileType type, Dimension size) {
|
||||
return getForestImageInternal(type, null, size);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledForestImage(TileType type) {
|
||||
return getForestImageInternal(type, null, this.tileForestSize);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledForestImage(TileType type,
|
||||
TileImprovementStyle riverStyle) {
|
||||
return getForestImageInternal(type, riverStyle, this.tileForestSize);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the overlay image for the given tile.
|
||||
*
|
||||
* @param tile The tile for which to return an image.
|
||||
* @return A pseudo-random terrain image.
|
||||
*/
|
||||
public BufferedImage getOverlayImage(Tile tile) {
|
||||
return getOverlayImage(tile.getType(), tile.getId(),
|
||||
this.tileOverlaySize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the overlay-image for the given type and scale.
|
||||
* Get the overlay-image for the given type and scale.
|
||||
* Currently used for hills and mountains.
|
||||
*
|
||||
* @param type The type of the terrain-image to return.
|
||||
* @param id A string used to get a random image.
|
||||
* @param size The size of the image to return.
|
||||
* @param overlayCache An optional overlay cache to draw from.
|
||||
* @return The terrain-image at the given index.
|
||||
*/
|
||||
public static BufferedImage getOverlayImage(TileType type, String id,
|
||||
Dimension size) {
|
||||
final String prefix = "image.tileoverlay." + type.getId();
|
||||
List<String> keys = ResourceManager.getImageKeys(prefix);
|
||||
private static BufferedImage getOverlayImageInternal(TileType type,
|
||||
String id,
|
||||
Dimension size,
|
||||
Set<String> overlayCache) {
|
||||
final String prefix = "image.tileoverlay." + type.getId() + ".r";
|
||||
List<String> keys = (overlayCache == null)
|
||||
? ResourceManager.getImageKeys(prefix)
|
||||
: transform(overlayCache, k -> k.startsWith(prefix));
|
||||
return getRandomizedImage(keys, id, size);
|
||||
}
|
||||
|
||||
|
@ -1060,18 +1104,19 @@ public final class ImageLibrary {
|
|||
return ResourceManager.getImageKeySet("image.tileoverlay.");
|
||||
}
|
||||
|
||||
public BufferedImage getOverlayImage(Tile tile, Set<String> overlayCache) {
|
||||
return getOverlayImage(tile.getType(), tile.getId(),
|
||||
this.tileOverlaySize, overlayCache);
|
||||
public static BufferedImage getOverlayImage(TileType type, Dimension size) {
|
||||
return getOverlayImageInternal(type, type.getId(), size, null);
|
||||
}
|
||||
|
||||
public static BufferedImage getOverlayImage(TileType type, String id,
|
||||
Dimension size,
|
||||
Set<String> overlayCache) {
|
||||
final String prefix = "image.tileoverlay." + type.getId() + ".r";
|
||||
final List<String> keys = transform(overlayCache,
|
||||
k -> k.startsWith(prefix));
|
||||
return getRandomizedImage(keys, id, size);
|
||||
public BufferedImage getScaledOverlayImage(Tile tile) {
|
||||
return getOverlayImageInternal(tile.getType(), tile.getId(),
|
||||
this.tileOverlaySize, null);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledOverlayImage(Tile tile,
|
||||
Set<String> overlayCache) {
|
||||
return getOverlayImageInternal(tile.getType(), tile.getId(),
|
||||
this.tileOverlaySize, overlayCache);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1082,18 +1127,17 @@ public final class ImageLibrary {
|
|||
public static BufferedImage getResourceTypeImage(ResourceType rt,
|
||||
Dimension size,
|
||||
boolean grayscale) {
|
||||
return getScaledImage(getResourceTypeKey(rt), size, grayscale);
|
||||
return getSizedImageInternal(getResourceTypeKey(rt), size, grayscale);
|
||||
}
|
||||
|
||||
private static BufferedImage getResourceTypeImage(ResourceType rt,
|
||||
float scale,
|
||||
boolean grayscale) {
|
||||
return getScaledImage(getResourceTypeKey(rt), scale, grayscale);
|
||||
return getScaledImageInternal(getResourceTypeKey(rt), scale, grayscale);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledResourceTypeImage(ResourceType rt) {
|
||||
return getResourceTypeImage(rt,
|
||||
this.scaleFactor, false);
|
||||
return getResourceTypeImage(rt, this.scaleFactor, false);
|
||||
}
|
||||
|
||||
public BufferedImage getSmallResourceTypeImage(ResourceType rt) {
|
||||
|
@ -1106,14 +1150,9 @@ public final class ImageLibrary {
|
|||
this.scaleFactor, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the river image with the given style.
|
||||
*
|
||||
* @param style a {@code TileImprovementStyle} value
|
||||
* @return The image with the given style.
|
||||
*/
|
||||
public BufferedImage getRiverImage(TileImprovementStyle style) {
|
||||
return getRiverImage(style.getString(), this.tileSize);
|
||||
|
||||
private static String getRiverStyleKey(String style) {
|
||||
return RIVER_STYLE_PREFIX + style;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1123,15 +1162,15 @@ public final class ImageLibrary {
|
|||
* @param size the image size
|
||||
* @return The image with the given style.
|
||||
*/
|
||||
private static BufferedImage getRiverImageInternal(String style,
|
||||
Dimension size) {
|
||||
return getSizedImageInternal(getRiverStyleKey(style), size, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getRiverImage(String style, Dimension size) {
|
||||
final String key = RIVER_STYLE_PREFIX + style;
|
||||
return getScaledImage(key, size, false);
|
||||
return getRiverImageInternal(style, size);
|
||||
}
|
||||
|
||||
public BufferedImage getRiverImage(String style) {
|
||||
return getRiverImage(style, this.scaleFactor);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the river image with the given style and scale.
|
||||
*
|
||||
|
@ -1139,12 +1178,27 @@ public final class ImageLibrary {
|
|||
* @param scale A scale factor.
|
||||
* @return The image with the given style.
|
||||
*/
|
||||
private BufferedImage getRiverImage(String style, float scale) {
|
||||
return getRiverImage(style, scaleDimension(this.tileSize, scale));
|
||||
private BufferedImage getScaledRiverImage(String style, float scale) {
|
||||
return getRiverImageInternal(style,
|
||||
scaleDimension(this.tileSize, scale));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the river image with the given style.
|
||||
*
|
||||
* @param style a {@code TileImprovementStyle} value
|
||||
* @return The image with the given style.
|
||||
*/
|
||||
public BufferedImage getScaledRiverImage(TileImprovementStyle style) {
|
||||
return getRiverImageInternal(style.getString(), this.tileSize);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledRiverImage(String style) {
|
||||
return getScaledRiverImage(style, this.scaleFactor);
|
||||
}
|
||||
|
||||
public BufferedImage getSmallerRiverImage(String style) {
|
||||
return getRiverImage(style, this.scaleFactor * SMALLER_SCALE);
|
||||
return getScaledRiverImage(style, this.scaleFactor * SMALLER_SCALE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1163,7 +1217,7 @@ public final class ImageLibrary {
|
|||
int x, int y) {
|
||||
final String key = "image.tile.model.tile.delta." + direction
|
||||
+ ((magnitude == 1) ? ".small" : ".large");
|
||||
return getScaledImage(key, this.tileSize, false);
|
||||
return getSizedImageInternal(key, this.tileSize, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1182,20 +1236,6 @@ public final class ImageLibrary {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the tile improvement image with for a given identifier.
|
||||
*
|
||||
* @param id The tile improvement identifier.
|
||||
* @return The image found, or null if it does not exist.
|
||||
*/
|
||||
public BufferedImage getTileImprovementImage(String id) {
|
||||
final String key = "image.tile." + id;
|
||||
return (!ResourceManager.hasImageResource(key)) ? null
|
||||
// Has its own Overlay Image in Misc, use it
|
||||
: getScaledImage(key, this.tileSize, false);
|
||||
}
|
||||
|
||||
|
||||
private static String getSettlementTypeKey(SettlementType settlementType) {
|
||||
return "image.tileitem." + settlementType.getId();
|
||||
}
|
||||
|
@ -1203,13 +1243,13 @@ public final class ImageLibrary {
|
|||
private static BufferedImage getSettlementTypeImage(SettlementType settlementType,
|
||||
float scale) {
|
||||
final String key = getSettlementTypeKey(settlementType);
|
||||
return getScaledImage(key, scale, false);
|
||||
return getScaledImageInternal(key, scale, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getSettlementTypeImage(SettlementType settlementType,
|
||||
Dimension size) {
|
||||
final String key = getSettlementTypeKey(settlementType);
|
||||
return getScaledImage(key, size, false);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1258,12 +1298,12 @@ public final class ImageLibrary {
|
|||
*/
|
||||
public static BufferedImage getSettlementImage(Settlement settlement,
|
||||
float scale) {
|
||||
return getScaledImage(getSettlementKey(settlement), scale, false);
|
||||
return getScaledImageInternal(getSettlementKey(settlement), scale, false);
|
||||
}
|
||||
|
||||
public static BufferedImage getSettlementImage(Settlement settlement,
|
||||
Dimension size) {
|
||||
return getScaledImage(getSettlementKey(settlement), size, false);
|
||||
return getSizedImageInternal(getSettlementKey(settlement), size, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1285,26 +1325,51 @@ public final class ImageLibrary {
|
|||
}
|
||||
|
||||
|
||||
public static String getTerrainImageKey(TileType type, int x, int y) {
|
||||
return "image.tile."
|
||||
+ ((type == null) ? "model.tile.unexplored" : type.getId())
|
||||
+ ".center.r" + (isSpecialEven(x, y) ? "0" : "1");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the terrain-image for the given type.
|
||||
* Gets the terrain-image for the given type.
|
||||
*
|
||||
* @param type The type of the terrain-image to return.
|
||||
* @param x The x-coordinate of the location of the tile that is being
|
||||
* drawn.
|
||||
* @param y The x-coordinate of the location of the tile that is being
|
||||
* drawn.
|
||||
* @param size The image size.
|
||||
* @return The terrain-image at the given index.
|
||||
*/
|
||||
public BufferedImage getTerrainImage(TileType type, int x, int y) {
|
||||
return getTerrainImage(type, x, y, this.tileSize);
|
||||
private static BufferedImage getTerrainImageInternal(TileType type,
|
||||
int x, int y,
|
||||
Dimension size) {
|
||||
return getSizedImageInternal(getTerrainImageKey(type, x, y),
|
||||
size, false);
|
||||
}
|
||||
|
||||
|
||||
public static BufferedImage getTerrainImage(TileType type, int x, int y,
|
||||
Dimension size) {
|
||||
final String key = "image.tile."
|
||||
+ ((type == null) ? "model.tile.unexplored" : type.getId())
|
||||
+ ".center.r" + (isSpecialEven(x, y) ? "0" : "1");
|
||||
return getScaledImage(key, size, false);
|
||||
return getTerrainImageInternal(type, x, y, size);
|
||||
}
|
||||
|
||||
public BufferedImage getScaledTerrainImage(TileType type, int x, int y) {
|
||||
return getTerrainImageInternal(type, x, y, this.tileSize);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the tile improvement image with for a given identifier.
|
||||
*
|
||||
* @param id The tile improvement identifier.
|
||||
* @return The image found, or null if it does not exist.
|
||||
*/
|
||||
public BufferedImage getTileImprovementImage(String id) {
|
||||
final String key = "image.tile." + id;
|
||||
return (!ResourceManager.hasImageResource(key)) ? null
|
||||
// Has its own Overlay Image in Misc, use it
|
||||
: getSizedImageInternal(key, this.tileSize, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1353,7 +1418,7 @@ public final class ImageLibrary {
|
|||
float scale) {
|
||||
final String key = getUnitTypeImageKey(unitType, roleId,
|
||||
nativeEthnicity);
|
||||
return getScaledImage(key, scale, grayscale);
|
||||
return getScaledImageInternal(key, scale, grayscale);
|
||||
}
|
||||
|
||||
private static BufferedImage getUnitTypeImage(UnitType unitType,
|
||||
|
@ -1368,7 +1433,7 @@ public final class ImageLibrary {
|
|||
Dimension size) {
|
||||
final String key = getUnitTypeImageKey(unitType, roleId,
|
||||
nativeEthnicity);
|
||||
return getScaledImage(key, size, false);
|
||||
return getSizedImageInternal(key, size, false);
|
||||
}
|
||||
|
||||
private static BufferedImage getUnitTypeImage(UnitType unitType,
|
||||
|
|
|
@ -1390,7 +1390,8 @@ public final class MapViewer extends FreeColClientHolder {
|
|||
g.translate(xt - xt0, yt - yt0);
|
||||
xt0 = xt; yt0 = yt;
|
||||
|
||||
BufferedImage overlayImage = lib.getOverlayImage(t, overlayCache);
|
||||
BufferedImage overlayImage
|
||||
= lib.getScaledOverlayImage(t, overlayCache);
|
||||
RescaleOp rop = (player == null || player.canSee(t)) ? null : fow;
|
||||
tv.displayTileItems(g, t, rop, overlayImage);
|
||||
tv.displaySettlementWithChipsOrPopulationNumber(g, t, withNumbers,
|
||||
|
|
|
@ -204,8 +204,7 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
-1);
|
||||
BufferedImage terrainImage = ImageLibrary.getTerrainImage(
|
||||
type, 0, 0, size2);
|
||||
BufferedImage overlayImage = ImageLibrary.getOverlayImage(
|
||||
type, type.getId(), size2);
|
||||
BufferedImage overlayImage = ImageLibrary.getOverlayImage(type, size2);
|
||||
BufferedImage forestImage = type.isForested()
|
||||
? ImageLibrary.getForestImage(type, size2)
|
||||
: null;
|
||||
|
@ -246,17 +245,16 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
*/
|
||||
public BufferedImage createTileImageWithBeachBorderAndItems(Tile tile) {
|
||||
if (!tile.isExplored())
|
||||
return lib.getTerrainImage(null, tile.getX(), tile.getY());
|
||||
return lib.getScaledTerrainImage(null, tile.getX(), tile.getY());
|
||||
final TileType tileType = tile.getType();
|
||||
Dimension terrainTileSize = lib.tileSize;
|
||||
BufferedImage overlayImage = lib.getOverlayImage(tile);
|
||||
final int compoundHeight = (overlayImage != null)
|
||||
? overlayImage.getHeight()
|
||||
: tileType.isForested()
|
||||
? lib.tileForestSize.height
|
||||
: terrainTileSize.height;
|
||||
BufferedImage image = new BufferedImage(
|
||||
terrainTileSize.width, compoundHeight, BufferedImage.TYPE_INT_ARGB);
|
||||
BufferedImage overlayImage = lib.getScaledOverlayImage(tile);
|
||||
final int compoundHeight
|
||||
= (overlayImage != null) ? overlayImage.getHeight()
|
||||
: (tileType.isForested()) ? lib.tileForestSize.height
|
||||
: terrainTileSize.height;
|
||||
BufferedImage image = new BufferedImage(terrainTileSize.width,
|
||||
compoundHeight, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g = image.createGraphics();
|
||||
g.translate(0, compoundHeight - terrainTileSize.height);
|
||||
displayTileWithBeachAndBorder(g, tile);
|
||||
|
@ -277,7 +275,7 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
public BufferedImage createTileImage(Tile tile, Player player) {
|
||||
final TileType tileType = tile.getType();
|
||||
Dimension terrainTileSize = lib.tileSize;
|
||||
BufferedImage overlayImage = lib.getOverlayImage(tile);
|
||||
BufferedImage overlayImage = lib.getScaledOverlayImage(tile);
|
||||
final int compoundHeight = (overlayImage != null)
|
||||
? overlayImage.getHeight()
|
||||
: (tileType.isForested()) ? lib.tileForestSize.height
|
||||
|
@ -308,7 +306,7 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
public BufferedImage createColonyTileImage(Tile tile, Colony colony) {
|
||||
final TileType tileType = tile.getType();
|
||||
Dimension terrainTileSize = lib.tileSize;
|
||||
BufferedImage overlayImage = lib.getOverlayImage(tile);
|
||||
BufferedImage overlayImage = lib.getScaledOverlayImage(tile);
|
||||
final int compoundHeight = (overlayImage != null)
|
||||
? overlayImage.getHeight()
|
||||
: tileType.isForested()
|
||||
|
@ -343,8 +341,8 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
int xx = (((2 - x) + y) * tileSize.width) / 2;
|
||||
int yy = ((x + y) * tileSize.height) / 2;
|
||||
g.translate(xx, yy);
|
||||
BufferedImage overlayImage = lib.getOverlayImage(
|
||||
tiles[x][y], overlayCache);
|
||||
BufferedImage overlayImage
|
||||
= lib.getScaledOverlayImage(tiles[x][y], overlayCache);
|
||||
displayColonyTile(g, tiles[x][y], colony, overlayImage);
|
||||
g.translate(-xx, -yy);
|
||||
}
|
||||
|
@ -459,7 +457,7 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
final int y = tile.getY();
|
||||
|
||||
// ATTENTION: we assume that all base tiles have the same size
|
||||
g.drawImage(lib.getTerrainImage(tileType, x, y), 0, 0, null);
|
||||
g.drawImage(lib.getScaledTerrainImage(tileType, x, y), 0, 0, null);
|
||||
|
||||
if (!tile.isExplored()) return;
|
||||
if (!tile.isLand() && tile.getStyle() > 0) {
|
||||
|
@ -503,7 +501,7 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
} else if (!tile.isLand() || borderingTile.isLand()) {
|
||||
int bTIndex = borderingTileType.getIndex();
|
||||
if (bTIndex < tileType.getIndex()
|
||||
&& !lib.getTerrainImage(tileType, 0, 0).equals(lib.getTerrainImage(borderingTileType, 0, 0))) {
|
||||
&& !lib.getTerrainImageKey(tileType, 0, 0).equals(lib.getTerrainImageKey(borderingTileType, 0, 0))) {
|
||||
// Draw land terrain with bordering land type, or
|
||||
// ocean/high seas limit, if the tiles do not
|
||||
// share same graphics (ocean & great river)
|
||||
|
@ -734,8 +732,8 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
}
|
||||
// Forest
|
||||
if (tile.isForested()) {
|
||||
BufferedImage forestImage = lib.getForestImage(
|
||||
tile.getType(), tile.getRiverStyle());
|
||||
BufferedImage forestImage = lib.getScaledForestImage(tile.getType(),
|
||||
tile.getRiverStyle());
|
||||
g1.drawImage(forestImage,
|
||||
0, (tileHeight - forestImage.getHeight()), null);
|
||||
}
|
||||
|
@ -782,7 +780,7 @@ public final class TileViewer extends FreeColClientHolder {
|
|||
rp.displayRoad(g, tile);
|
||||
} else {
|
||||
BufferedImage im = (ti.isRiver())
|
||||
? lib.getRiverImage(ti.getStyle())
|
||||
? lib.getScaledRiverImage(ti.getStyle())
|
||||
: lib.getTileImprovementImage(ti.getType().getId());
|
||||
if (im != null) g.drawImage(im, 0, 0, null);
|
||||
}
|
||||
|
|
|
@ -186,7 +186,7 @@ public class Flag {
|
|||
public static final double BEND_X = DECORATION_SIZE;
|
||||
public static final double BEND_Y = DECORATION_SIZE / SQRT_3;
|
||||
|
||||
private static final GeneralPath star = getStar();
|
||||
private static final GeneralPath star = get5Star();
|
||||
|
||||
/**
|
||||
* The distribution of stars in the "union", based on historical
|
||||
|
@ -1108,7 +1108,7 @@ public class Flag {
|
|||
*
|
||||
* @return the basic star shape
|
||||
*/
|
||||
private static GeneralPath getStar() {
|
||||
private static GeneralPath get5Star() {
|
||||
GeneralPath star = new GeneralPath(GeneralPath.WIND_NON_ZERO);
|
||||
double angle = 2 * Math.PI / 5;
|
||||
double radius = STAR_SIZE / 2;
|
||||
|
|
|
@ -223,7 +223,7 @@ public final class UnitLabel extends FreeColLabel
|
|||
} else {
|
||||
Icon imageIcon = new ImageIcon(lib.getScaledUnitImage(unit));
|
||||
if (unit.getLocation() instanceof ColonyTile) {
|
||||
Dimension tileSize = lib.scaleDimension(ImageLibrary.TILE_SIZE);
|
||||
Dimension tileSize = lib.scale(ImageLibrary.TILE_SIZE);
|
||||
tileSize.width /= 2;
|
||||
tileSize.height = imageIcon.getIconHeight();
|
||||
setSize(tileSize);
|
||||
|
|
|
@ -2009,7 +2009,7 @@ public final class ColonyPanel extends PortPanel
|
|||
setOpaque(false);
|
||||
// Size and position:
|
||||
Dimension size = getGUI().getTileImageLibrary()
|
||||
.scaleDimension(ImageLibrary.TILE_SIZE);
|
||||
.scale(ImageLibrary.TILE_SIZE);
|
||||
setSize(size);
|
||||
setLocation(((2 - x) + y) * size.width / 2,
|
||||
(x + y) * size.height / 2);
|
||||
|
|
|
@ -303,8 +303,7 @@ public final class MapEditorTransformPanel extends FreeColPanel {
|
|||
Messages.message("mapEditorTransformPanel.resource"),
|
||||
new ResourceTransform()));
|
||||
|
||||
listPanel.add(buildButton(ImageLibrary
|
||||
.getScaledImage(ImageLibrary.LOST_CITY_RUMOUR, riverSize, false),
|
||||
listPanel.add(buildButton(ImageLibrary.getLCRImage(riverSize),
|
||||
Messages.getName(ModelMessage.MessageType.LOST_CITY_RUMOUR),
|
||||
new LostCityRumourTransform()));
|
||||
|
||||
|
|
|
@ -367,7 +367,7 @@ public final class MiniMap extends JPanel implements MouseInputListener {
|
|||
if (getParent() != null) {
|
||||
int miniRectX = (getGUI().getFocus().getX() - firstColumn) * tileSize;
|
||||
int miniRectY = (getGUI().getFocus().getY() - firstRow) * tileSize / 4;
|
||||
Dimension mapTileSize = library.scaleDimension(ImageLibrary.TILE_SIZE);
|
||||
Dimension mapTileSize = library.scale(ImageLibrary.TILE_SIZE);
|
||||
int miniRectWidth = (getParent().getWidth() / mapTileSize.width + 1) * tileSize;
|
||||
int miniRectHeight = (getParent().getHeight() / mapTileSize.height + 1) * tileSize / 2;
|
||||
if (miniRectX + miniRectWidth / 2 > width) {
|
||||
|
|
|
@ -150,7 +150,7 @@ public final class TilePanel extends FreeColPanel {
|
|||
int expertPotential = amount;
|
||||
final UnitType expert = spec.getExpertForProducing(gt);
|
||||
if (expert != null) {
|
||||
expertPotential = (int)expert.applyModifiers(amount,
|
||||
expertPotential = (int)expert.apply(amount,
|
||||
getGame().getTurn(), gt.getId());
|
||||
}
|
||||
if (amount > 0) {
|
||||
|
|
|
@ -125,14 +125,14 @@ public abstract class ColopediaGameObjectTypePanel<T extends FreeColSpecObjectTy
|
|||
*/
|
||||
protected void addSubTrees(DefaultMutableTreeNode root, String id,
|
||||
List<T> types) {
|
||||
final ImageLibrary lib = getImageLibrary();
|
||||
String name = getName();
|
||||
ColopediaTreeItem cti = new ColopediaTreeItem(this, id, name, null);
|
||||
DefaultMutableTreeNode node = new DefaultMutableTreeNode(cti);
|
||||
int width = ImageLibrary.ICON_SIZE.width;
|
||||
int height = ImageLibrary.ICON_SIZE.height;
|
||||
for (FreeColSpecObjectType type : types) {
|
||||
Image image = ImageLibrary
|
||||
.getObjectImage(type, ImageLibrary.ICON_SIZE);
|
||||
Image image = lib.getObjectImage(type, ImageLibrary.ICON_SIZE);
|
||||
int x = (width - image.getWidth(null)) / 2;
|
||||
int y = (height - image.getHeight(null)) / 2;
|
||||
BufferedImage centeredImage
|
||||
|
|
|
@ -86,10 +86,9 @@ public class FatherDetailPanel
|
|||
for (FoundingFather foundingFather : spec.getFoundingFathers()) {
|
||||
fathersByType.get(foundingFather.getType()).add(foundingFather);
|
||||
}
|
||||
ImageIcon icon = new ImageIcon(ImageLibrary
|
||||
.getScaledImage(ImageLibrary.BELLS, ImageLibrary.ICON_SIZE, false));
|
||||
ImageIcon icon = new ImageIcon(ImageLibrary.getLibertyImage());
|
||||
for (FoundingFatherType fatherType : FoundingFatherType.values()) {
|
||||
String id = FoundingFather.getTypeKey(fatherType);
|
||||
String id = fatherType.getTypeKey();
|
||||
String typeName = Messages.message(id);
|
||||
DefaultMutableTreeNode node
|
||||
= new DefaultMutableTreeNode(new ColopediaTreeItem(this, id,
|
||||
|
|
|
@ -82,8 +82,7 @@ public class NationTypeDetailPanel
|
|||
nations.addAll(getSpecification().getEuropeanNationTypes());
|
||||
nations.addAll(getSpecification().getREFNationTypes());
|
||||
nations.addAll(getSpecification().getIndianNationTypes());
|
||||
ImageIcon icon = new ImageIcon(ImageLibrary
|
||||
.getScaledImage(ImageLibrary.BELLS, ImageLibrary.ICON_SIZE, false));
|
||||
ImageIcon icon = new ImageIcon(ImageLibrary.getLibertyImage());
|
||||
for (NationType type : nations) {
|
||||
parent.add(buildItem(type, icon));
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ public final class ReportContinentalCongressPanel extends ReportPanel {
|
|||
JScrollPane imageScrollPane = new JScrollPane(panel,
|
||||
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
|
||||
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
tabs.addTab(Messages.message(FoundingFather.getTypeKey(type)), null,
|
||||
tabs.addTab(Messages.message(type.getTypeKey()), null,
|
||||
imageScrollPane, null);
|
||||
}
|
||||
final int age = getGame().getAge();
|
||||
|
|
|
@ -1178,7 +1178,7 @@ public class DebugUtils {
|
|||
int amount = sis.getGoodsCount(gt);
|
||||
int prod = sis.getTotalProductionOf(gt);
|
||||
if (amount > 0 || prod != 0) {
|
||||
lb.add(Messages.message(AbstractGoods.getLabel(gt, amount)),
|
||||
lb.add(Messages.message(new AbstractGoods(gt, amount).getLabel()),
|
||||
" ", ((prod > 0) ? "+" : ""), prod, "\n");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -924,7 +924,7 @@ public class FreeColXMLReader extends StreamReaderDelegate
|
|||
public <T extends FreeColObject> T readFreeColObject(Game game)
|
||||
throws XMLStreamException {
|
||||
final String tag = getLocalName();
|
||||
Class<T> returnClass = FreeColObject.getFreeColObjectClass(tag);
|
||||
Class<T> returnClass = FreeColObject.getFreeColObjectClassByName(tag);
|
||||
if (returnClass == null) {
|
||||
throw new XMLStreamException("No class: " + tag);
|
||||
}
|
||||
|
|
|
@ -141,15 +141,6 @@ public class AbstractGoods extends FreeColObject implements Named {
|
|||
return getAmount() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a label for these goods.
|
||||
*
|
||||
* @return The label for these goods.
|
||||
*/
|
||||
public StringTemplate getLabel() {
|
||||
return getLabel(getType(), getAmount());
|
||||
}
|
||||
|
||||
/**
|
||||
* Are these goods storable.
|
||||
*
|
||||
|
@ -159,6 +150,17 @@ public class AbstractGoods extends FreeColObject implements Named {
|
|||
return getType().isStorable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a label for these goods.
|
||||
*
|
||||
* @return The label for these goods.
|
||||
*/
|
||||
public StringTemplate getLabel() {
|
||||
return StringTemplate.template("model.abstractGoods.label")
|
||||
.addNamed("%goods%", getType())
|
||||
.addAmount("%amount%", getAmount());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a label for these goods.
|
||||
*
|
||||
|
@ -172,27 +174,16 @@ public class AbstractGoods extends FreeColObject implements Named {
|
|||
.addAmount("%amount%", getAmount());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a label given a goods type and amount.
|
||||
*
|
||||
* @param type The {@code GoodsType} to display.
|
||||
* @param amount The amount of goods.
|
||||
* @return The goods label.
|
||||
*/
|
||||
public static StringTemplate getLabel(GoodsType type, int amount) {
|
||||
return StringTemplate.template("model.abstractGoods.label")
|
||||
.addNamed("%goods%", type)
|
||||
.addAmount("%amount%", amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a label given a key and amount.
|
||||
*
|
||||
* Used for arbitrary objects, such as the missionary's bible.
|
||||
*
|
||||
* @param key A key for the goods to display.
|
||||
* @param amount The amount of goods.
|
||||
* @return The goods label.
|
||||
*/
|
||||
public static StringTemplate getLabel(String key, int amount) {
|
||||
public static StringTemplate getAbstractLabel(String key, int amount) {
|
||||
return StringTemplate.template("model.abstractGoods.label")
|
||||
.add("%goods%", key)
|
||||
.addAmount("%amount%", amount);
|
||||
|
|
|
@ -144,20 +144,9 @@ public class AbstractUnit extends FreeColObject {
|
|||
* @return A {@code StringTemplate} describing the abstract unit.
|
||||
*/
|
||||
public StringTemplate getLabel() {
|
||||
return getLabel(getId(), getRoleId(), getNumber());
|
||||
return getLabelInternal(getId(), getRoleId(), getNumber());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a template describing an arbitrary single abstract unit.
|
||||
*
|
||||
* @param typeId The unit type identifier.
|
||||
* @param roleId The role identifier.
|
||||
* @return A {@code StringTemplate} describing the abstract unit.
|
||||
*/
|
||||
public static StringTemplate getLabel(String typeId, String roleId) {
|
||||
return getLabel(typeId, roleId, 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets a template describing an arbitrary abstract unit.
|
||||
*
|
||||
|
@ -166,8 +155,9 @@ public class AbstractUnit extends FreeColObject {
|
|||
* @param number The number of units.
|
||||
* @return A {@code StringTemplate} describing the abstract unit.
|
||||
*/
|
||||
public static StringTemplate getLabel(String typeId, String roleId,
|
||||
int number) {
|
||||
private static StringTemplate getLabelInternal(String typeId,
|
||||
String roleId,
|
||||
int number) {
|
||||
StringTemplate tmpl = Messages.getUnitLabel(null, typeId, number,
|
||||
null, roleId, null);
|
||||
return StringTemplate.template("model.abstractUnit.label")
|
||||
|
|
|
@ -270,9 +270,9 @@ public class Building extends WorkLocation
|
|||
if (available >= capacity) {
|
||||
minimumRatio = maximumRatio = 0.0;
|
||||
} else {
|
||||
int divisor = (int)getType().applyModifiers(0f, turn,
|
||||
int divisor = (int)getType().apply(0f, turn,
|
||||
Modifier.BREEDING_DIVISOR);
|
||||
int factor = (int)getType().applyModifiers(0f, turn,
|
||||
int factor = (int)getType().apply(0f, turn,
|
||||
Modifier.BREEDING_FACTOR);
|
||||
int production = (available < goodsType.getBreedingNumber()
|
||||
|| divisor <= 0) ? 0
|
||||
|
@ -291,7 +291,7 @@ public class Building extends WorkLocation
|
|||
// Unattended production always applies for buildings!
|
||||
production += getBaseProduction(null, goodsType, null);
|
||||
production = applyModifiers(production, turn,
|
||||
getProductionModifiers(goodsType, null));
|
||||
getProductionModifiers(goodsType, null));
|
||||
production = (int)Math.floor(production);
|
||||
// Beware! If we ever unify this code with ColonyTile,
|
||||
// ColonyTiles have outputs with zero amount.
|
||||
|
|
|
@ -351,8 +351,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(),
|
||||
unitType);
|
||||
amount = (int)apply(amount, null, goodsType.getId(), unitType);
|
||||
return (amount < 0) ? 0 : amount;
|
||||
}
|
||||
|
||||
|
|
|
@ -932,7 +932,7 @@ public class Colony extends Settlement implements TradeLocation {
|
|||
* @return True if the building is available at zero cost.
|
||||
*/
|
||||
public boolean isAutomaticBuild(BuildingType buildingType) {
|
||||
float value = owner.applyModifiers(100f, getGame().getTurn(),
|
||||
float value = owner.apply(100f, getGame().getTurn(),
|
||||
Modifier.BUILDING_PRICE_BONUS, buildingType);
|
||||
return value == 0f && canBuild(buildingType);
|
||||
}
|
||||
|
@ -1281,7 +1281,7 @@ public class Colony extends Settlement implements TradeLocation {
|
|||
|
||||
float membership = (liberty * 100.0f) / (LIBERTY_PER_REBEL * uc);
|
||||
membership = applyModifiers(membership, getGame().getTurn(),
|
||||
getOwner().getModifiers(Modifier.SOL));
|
||||
getOwner().getModifiers(Modifier.SOL));
|
||||
if (membership < 0.0f) {
|
||||
membership = 0.0f;
|
||||
} else if (membership > 100.0f) {
|
||||
|
@ -1411,7 +1411,7 @@ public class Colony extends Settlement implements TradeLocation {
|
|||
* @return True if the population can be reduced.
|
||||
*/
|
||||
public boolean canReducePopulation() {
|
||||
return getUnitCount() > applyModifiers(0f, getGame().getTurn(),
|
||||
return getUnitCount() > apply(0f, getGame().getTurn(),
|
||||
Modifier.MINIMUM_COLONY_SIZE);
|
||||
}
|
||||
|
||||
|
@ -2621,8 +2621,7 @@ public class Colony extends Settlement implements TradeLocation {
|
|||
*/
|
||||
@Override
|
||||
public int getGoodsCapacity() {
|
||||
return (int)applyModifiers(0f, getGame().getTurn(),
|
||||
Modifier.WAREHOUSE_STORAGE);
|
||||
return (int)apply(0f, getGame().getTurn(), Modifier.WAREHOUSE_STORAGE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -123,7 +123,7 @@ public final class FeatureContainer {
|
|||
* @param abilities A stream of {@code Ability}s to check.
|
||||
* @return True if the abilities are `satisfied'.
|
||||
*/
|
||||
public static boolean hasAbility(Stream<Ability> abilities) {
|
||||
public static boolean allAbilities(Stream<Ability> abilities) {
|
||||
boolean ret = false;
|
||||
for (Ability ability : iterable(abilities)) {
|
||||
if (!ability.getValue()) return false;
|
||||
|
@ -144,7 +144,7 @@ public final class FeatureContainer {
|
|||
*/
|
||||
public boolean hasAbility(String id, FreeColSpecObjectType fcgot,
|
||||
Turn turn) {
|
||||
return FeatureContainer.hasAbility(getAbilities(id, fcgot, turn));
|
||||
return FeatureContainer.allAbilities(getAbilities(id, fcgot, turn));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -264,22 +264,6 @@ public final class FeatureContainer {
|
|||
return (mset.isEmpty()) ? Stream.<Modifier>empty() : mset.stream();
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies this objects modifiers with the given identifier to the
|
||||
* given number.
|
||||
*
|
||||
* @param number The number to modify.
|
||||
* @param turn An optional applicable {@code Turn}.
|
||||
* @param id The object identifier.
|
||||
* @param fcgot An optional {@code FreeColSpecObjectType} the
|
||||
* modifier applies to.
|
||||
* @return The modified number.
|
||||
*/
|
||||
public final float applyModifiers(float number, Turn turn,
|
||||
String id, FreeColSpecObjectType fcgot) {
|
||||
return applyModifiers(number, turn, getModifiers(id, fcgot, turn));
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a collection of modifiers to the given float value.
|
||||
*
|
||||
|
@ -291,7 +275,7 @@ public final class FeatureContainer {
|
|||
public static float applyModifiers(float number, Turn turn,
|
||||
Collection<Modifier> mods) {
|
||||
return (mods == null || mods.isEmpty()) ? number
|
||||
: applyModifiers_internal(number, turn,
|
||||
: applyModifiersInternal(number, turn,
|
||||
sort(mods, Modifier.ascendingModifierIndexComparator));
|
||||
}
|
||||
|
||||
|
@ -306,7 +290,7 @@ public final class FeatureContainer {
|
|||
public static float applyModifiers(float number, Turn turn,
|
||||
Stream<Modifier> mods) {
|
||||
return (mods == null) ? number
|
||||
: applyModifiers_internal(number, turn,
|
||||
: applyModifiersInternal(number, turn,
|
||||
sort(mods, Modifier.ascendingModifierIndexComparator));
|
||||
}
|
||||
|
||||
|
@ -318,8 +302,8 @@ public final class FeatureContainer {
|
|||
* @param mods The {@code Modifier}s to apply.
|
||||
* @return The modified number.
|
||||
*/
|
||||
private static float applyModifiers_internal(float number, Turn turn,
|
||||
Collection<Modifier> mods) {
|
||||
private static float applyModifiersInternal(float number, Turn turn,
|
||||
Collection<Modifier> mods) {
|
||||
float result = number;
|
||||
for (Modifier m : mods) {
|
||||
float value = m.getValue(turn);
|
||||
|
|
|
@ -57,6 +57,15 @@ public class FoundingFather extends FreeColSpecObjectType {
|
|||
public String getKey() {
|
||||
return getEnumKey(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a message key for the type of a FoundingFather.
|
||||
*
|
||||
* @return The message key.
|
||||
*/
|
||||
public String getTypeKey() {
|
||||
return "model.foundingFather." + downCase(this.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/** The type of this FoundingFather. */
|
||||
|
@ -112,17 +121,7 @@ public class FoundingFather extends FreeColSpecObjectType {
|
|||
* @return A type key.
|
||||
*/
|
||||
public String getTypeKey() {
|
||||
return getTypeKey(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a message key for the type of a FoundingFather.
|
||||
*
|
||||
* @param type The {@code FoundingFatherType} to make a key for.
|
||||
* @return The message key.
|
||||
*/
|
||||
public static String getTypeKey(FoundingFatherType type) {
|
||||
return "model.foundingFather." + type.getKey();
|
||||
return type.getTypeKey();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -95,7 +95,7 @@ public abstract class FreeColObject
|
|||
* @return The class, or null if none found.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T extends FreeColObject> Class<T> getFreeColObjectClass(String name) {
|
||||
public static <T extends FreeColObject> Class<T> getFreeColObjectClassByName(String name) {
|
||||
final String type = "net.sf.freecol.common.model."
|
||||
+ capitalize(name);
|
||||
final Class<T> c = (Class<T>)Introspector.getClassByName(type);
|
||||
|
@ -177,7 +177,7 @@ public abstract class FreeColObject
|
|||
* @param id The identifier to examine.
|
||||
* @return The type part of the identifier, or null on error.
|
||||
*/
|
||||
public static String getIdType(String id) {
|
||||
public static String getIdTypeByName(String id) {
|
||||
if (id != null) {
|
||||
int col = id.lastIndexOf(':');
|
||||
return (col >= 0) ? id.substring(0, col) : id;
|
||||
|
@ -191,7 +191,7 @@ public abstract class FreeColObject
|
|||
* @return The type part of the identifier, or null on error.
|
||||
*/
|
||||
public String getIdType() {
|
||||
return getIdType(getId());
|
||||
return getIdTypeByName(getId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -432,7 +432,7 @@ public abstract class FreeColObject
|
|||
*/
|
||||
public final boolean hasAbility(String id, FreeColSpecObjectType fcgot,
|
||||
Turn turn) {
|
||||
return FeatureContainer.hasAbility(getAbilities(id, fcgot, turn));
|
||||
return FeatureContainer.allAbilities(getAbilities(id, fcgot, turn));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -654,8 +654,8 @@ public abstract class FreeColObject
|
|||
* @param id The object identifier.
|
||||
* @return The modified number.
|
||||
*/
|
||||
public final float applyModifiers(float number, Turn turn, String id) {
|
||||
return applyModifiers(number, turn, id, null);
|
||||
public final float apply(float number, Turn turn, String id) {
|
||||
return apply(number, turn, id, null);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -669,24 +669,11 @@ public abstract class FreeColObject
|
|||
* modifier applies to.
|
||||
* @return The modified number.
|
||||
*/
|
||||
public final float applyModifiers(float number, Turn turn,
|
||||
String id, FreeColSpecObjectType fcgot) {
|
||||
public final float apply(float number, Turn turn, String id,
|
||||
FreeColSpecObjectType fcgot) {
|
||||
return applyModifiers(number, turn, getModifiers(id, fcgot, turn));
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a collection of modifiers to the given number.
|
||||
*
|
||||
* @param number The number to modify.
|
||||
* @param turn An optional applicable {@code Turn}.
|
||||
* @param mods The {@code Modifier}s to apply.
|
||||
* @return The modified number.
|
||||
*/
|
||||
public static final float applyModifiers(float number, Turn turn,
|
||||
Collection<Modifier> mods) {
|
||||
return FeatureContainer.applyModifiers(number, turn, mods);
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a stream of modifiers to the given number.
|
||||
*
|
||||
|
@ -700,6 +687,19 @@ public abstract class FreeColObject
|
|||
return FeatureContainer.applyModifiers(number, turn, mods);
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a collection of modifiers to the given number.
|
||||
*
|
||||
* @param number The number to modify.
|
||||
* @param turn An optional applicable {@code Turn}.
|
||||
* @param mods The {@code Modifier}s to apply.
|
||||
* @return The modified number.
|
||||
*/
|
||||
public static final float applyModifiers(float number, Turn turn,
|
||||
Collection<Modifier> mods) {
|
||||
return FeatureContainer.applyModifiers(number, turn, mods);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the given modifier to this object.
|
||||
*
|
||||
|
|
|
@ -291,7 +291,8 @@ public class Game extends FreeColGameObject {
|
|||
* @return The new uninitialized object, or null on error.
|
||||
*/
|
||||
public static <T extends FreeColObject> T newInstance(Game game,
|
||||
Class<T> returnClass, boolean server) {
|
||||
Class<T> returnClass,
|
||||
boolean server) {
|
||||
// Do not restrict trying the full (Game,String) constructor
|
||||
// to just server objects as there are simpler FCOs that
|
||||
// implement it (e.g. Goods).
|
||||
|
@ -330,30 +331,6 @@ public class Game extends FreeColGameObject {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate an uninitialized FreeColGameObject within this game.
|
||||
*
|
||||
* @param <T> The actual return type.
|
||||
* @param returnClass The required {@code FreeColObject} class.
|
||||
* @param server Create a server object if possible.
|
||||
* @return The new uninitialized object, or null on error.
|
||||
*/
|
||||
public <T extends FreeColObject> T newInstance(Class<T> returnClass,
|
||||
boolean server) {
|
||||
return newInstance(this, returnClass, server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate an uninitialized FreeColGameObject within a game.
|
||||
*
|
||||
* @param <T> The actual return type.
|
||||
* @param returnClass The required {@code FreeColObject} class.
|
||||
* @return The new uninitialized object, or null on error.
|
||||
*/
|
||||
public <T extends FreeColObject> T newInstance(Class<T> returnClass) {
|
||||
return newInstance(this, returnClass, false); // Default to non-server
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the difficulty level of this game.
|
||||
*
|
||||
|
@ -1500,7 +1477,7 @@ public class Game extends FreeColGameObject {
|
|||
* @return The location class.
|
||||
*/
|
||||
public static Class<? extends FreeColGameObject> getLocationClass(String id) {
|
||||
return locationClasses.get(capitalize(FreeColObject.getIdType(id)));
|
||||
return locationClasses.get(capitalize(FreeColObject.getIdTypeByName(id)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1514,11 +1491,12 @@ public class Game extends FreeColGameObject {
|
|||
* the stream.
|
||||
*/
|
||||
public <T extends FreeColObject> T unserialize(String xml,
|
||||
Class<T> returnClass) throws XMLStreamException {
|
||||
Class<T> returnClass)
|
||||
throws XMLStreamException {
|
||||
try {
|
||||
FreeColXMLReader xr = new FreeColXMLReader(new StringReader(xml));
|
||||
xr.nextTag();
|
||||
T ret = newInstance(returnClass);
|
||||
T ret = newInstance(this, returnClass, false);
|
||||
ret.readFromXML(xr);
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -1038,8 +1038,8 @@ public class IndianSettlement extends Settlement implements TradeLocation {
|
|||
amount -= retain;
|
||||
if (unit != null) {
|
||||
amount = Math.round(applyModifiers((float)amount,
|
||||
getGame().getTurn(),
|
||||
unit.getModifiers(Modifier.TRADE_VOLUME_PENALTY)));
|
||||
getGame().getTurn(),
|
||||
unit.getModifiers(Modifier.TRADE_VOLUME_PENALTY)));
|
||||
}
|
||||
if (amount < TRADE_MINIMUM_SIZE) continue;
|
||||
if (amount > GoodsContainer.CARGO_SIZE) {
|
||||
|
|
|
@ -214,7 +214,7 @@ public class LostCityRumour extends TileItem {
|
|||
percentGood = 100;
|
||||
} else {
|
||||
// Otherwise apply any unit exploration bonus
|
||||
float mod = unit.applyModifiers(1.0f, getGame().getTurn(),
|
||||
float mod = unit.apply(1.0f, getGame().getTurn(),
|
||||
Modifier.EXPLORE_LOST_CITY_RUMOUR);
|
||||
percentBad = Math.round(percentBad / mod);
|
||||
percentGood = Math.round(percentGood * mod);
|
||||
|
|
|
@ -1257,8 +1257,8 @@ public class Player extends FreeColGameObject implements Nameable {
|
|||
// has already been reduced. We want to apply the bonus to the
|
||||
// sum of the *unreduced* immigration target and the increment.
|
||||
int unreduced = Math.round(current
|
||||
/ applyModifiers(1f, turn, Modifier.RELIGIOUS_UNREST_BONUS));
|
||||
immigrationRequired = (int)applyModifiers(unreduced + base, turn,
|
||||
/ apply(1f, turn, Modifier.RELIGIOUS_UNREST_BONUS));
|
||||
immigrationRequired = (int)apply(unreduced + base, turn,
|
||||
Modifier.RELIGIOUS_UNREST_BONUS);;
|
||||
logger.finest("Immigration for " + getId() + " updated " + current
|
||||
+ " -> " + immigrationRequired);
|
||||
|
@ -1371,8 +1371,7 @@ public class Player extends FreeColGameObject implements Nameable {
|
|||
final List<GoodsType> goodsTypes = spec.getLibertyGoodsTypeList();
|
||||
int nextTurn = sum(getColonies(), c ->
|
||||
sum(goodsTypes, gt -> c.getTotalProductionOf(gt)));
|
||||
return (int)applyModifiers((float)nextTurn, getGame().getTurn(),
|
||||
Modifier.LIBERTY);
|
||||
return (int)apply((float)nextTurn, getGame().getTurn(), Modifier.LIBERTY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3245,8 +3244,7 @@ public class Player extends FreeColGameObject implements Nameable {
|
|||
gt -> gt != spec.getPrimaryFoodType(),
|
||||
gt -> tile.getPotentialProduction(gt, null))
|
||||
+ 100;
|
||||
return (int)applyModifiers(price, getGame().getTurn(),
|
||||
Modifier.LAND_PAYMENT_MODIFIER);
|
||||
return (int)apply(price, getGame().getTurn(), Modifier.LAND_PAYMENT_MODIFIER);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -275,7 +275,7 @@ public class Role extends BuildableType {
|
|||
* @return The offense value.
|
||||
*/
|
||||
public double getOffence() {
|
||||
return applyModifiers(0.0f, null, Modifier.OFFENCE);
|
||||
return apply(0.0f, null, Modifier.OFFENCE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -293,7 +293,7 @@ public class Role extends BuildableType {
|
|||
* @return The defence value.
|
||||
*/
|
||||
private double getDefence() {
|
||||
return applyModifiers(0.0f, null, Modifier.DEFENCE);
|
||||
return apply(0.0f, null, Modifier.DEFENCE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -234,7 +234,7 @@ public abstract class Settlement extends GoodsLocation
|
|||
* @return The line of sight value.
|
||||
*/
|
||||
public int getLineOfSight() {
|
||||
return (int)applyModifiers((float)getType().getVisibleRadius(),
|
||||
return (int)apply((float)getType().getVisibleRadius(),
|
||||
getGame().getTurn(), Modifier.LINE_OF_SIGHT_BONUS);
|
||||
}
|
||||
|
||||
|
|
|
@ -1434,8 +1434,7 @@ public final class Tile extends UnitLocation implements Named, Ownable {
|
|||
* @return The percentage defence bonus.
|
||||
*/
|
||||
public int getDefenceBonusPercentage() {
|
||||
return (int)getType().applyModifiers(100f, getGame().getTurn(),
|
||||
Modifier.DEFENCE)
|
||||
return (int)getType().apply(100f, getGame().getTurn(), Modifier.DEFENCE)
|
||||
- 100;
|
||||
}
|
||||
|
||||
|
@ -1719,7 +1718,7 @@ public final class Tile extends UnitLocation implements Named, Ownable {
|
|||
|
||||
int amount = getBaseProduction(null, goodsType, unitType);
|
||||
amount = (int)applyModifiers(amount, getGame().getTurn(),
|
||||
getProductionModifiers(goodsType, unitType));
|
||||
getProductionModifiers(goodsType, unitType));
|
||||
return (amount < 0) ? 0 : amount;
|
||||
}
|
||||
|
||||
|
|
|
@ -393,8 +393,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,
|
||||
goodsType.getId());
|
||||
float chg = apply(production, null, goodsType.getId());
|
||||
value = (int)(chg - production);
|
||||
}
|
||||
} else { // tile type change
|
||||
|
|
|
@ -422,8 +422,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(),
|
||||
unitType);
|
||||
amount = (int)apply(amount, null, goodsType.getId(), unitType);
|
||||
return (amount < 0) ? 0 : amount;
|
||||
}
|
||||
|
||||
|
|
|
@ -448,7 +448,7 @@ public class Unit extends GoodsLocation
|
|||
if (Messages.containsKey(equipmentKey)) {
|
||||
// Currently only used for missionary which does not
|
||||
// have equipment that directly corresponds to goods.
|
||||
extra = AbstractGoods.getLabel(equipmentKey, 1);
|
||||
extra = AbstractGoods.getAbstractLabel(equipmentKey, 1);
|
||||
} else {
|
||||
// Other roles can be characterized by their goods.
|
||||
List<AbstractGoods> requiredGoods
|
||||
|
@ -2525,8 +2525,7 @@ public class Unit extends GoodsLocation
|
|||
@Override
|
||||
public int getInitialMovesLeft() {
|
||||
Turn turn = getGame().getTurn();
|
||||
return (int)applyModifiers(this.type.getMovement(), turn,
|
||||
Modifier.MOVEMENT_BONUS, this.type);
|
||||
return (int)apply(this.type.getMovement(), turn, Modifier.MOVEMENT_BONUS, this.type);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2553,9 +2552,8 @@ public class Unit extends GoodsLocation
|
|||
*/
|
||||
public int getSailTurns() {
|
||||
float base = getSpecification().getInteger(GameOptions.TURNS_TO_SAIL);
|
||||
return (int)getOwner().applyModifiers(base, getGame().getTurn(),
|
||||
Modifier.SAIL_HIGH_SEAS,
|
||||
this.type);
|
||||
return (int)getOwner().apply(base, getGame().getTurn(),
|
||||
Modifier.SAIL_HIGH_SEAS, this.type);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3637,8 +3635,8 @@ public class Unit extends GoodsLocation
|
|||
public float getConvertProbability() {
|
||||
final Specification spec = getSpecification();
|
||||
int opt = spec.getInteger(GameOptions.NATIVE_CONVERT_PROBABILITY);
|
||||
return 0.01f * applyModifiers(opt, getGame().getTurn(),
|
||||
Modifier.NATIVE_CONVERT_BONUS);
|
||||
return 0.01f * apply(opt, getGame().getTurn(),
|
||||
Modifier.NATIVE_CONVERT_BONUS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3707,7 +3705,7 @@ public class Unit extends GoodsLocation
|
|||
float fee = (getSpecification()
|
||||
.getInteger(GameOptions.TREASURE_TRANSPORT_FEE)
|
||||
* getTreasureAmount()) / 100.0f;
|
||||
return (int)getOwner().applyModifiers(fee, getGame().getTurn(),
|
||||
return (int)getOwner().apply(fee, getGame().getTurn(),
|
||||
Modifier.TREASURE_TRANSPORT_FEE, this.type);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -190,7 +190,7 @@ public final class UnitType extends BuildableType implements Consumer {
|
|||
* @return The offence value.
|
||||
*/
|
||||
public double getOffence() {
|
||||
return applyModifiers(this.baseOffence, null, Modifier.OFFENCE);
|
||||
return apply(this.baseOffence, null, Modifier.OFFENCE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -217,7 +217,7 @@ public final class UnitType extends BuildableType implements Consumer {
|
|||
* @return The defence value.
|
||||
*/
|
||||
public double getDefence() {
|
||||
return applyModifiers(this.baseDefence, null, Modifier.DEFENCE);
|
||||
return apply(this.baseDefence, null, Modifier.DEFENCE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -568,10 +568,9 @@ public abstract class WorkLocation extends UnitLocation
|
|||
final UnitType unitType = unit.getType();
|
||||
final Turn turn = getGame().getTurn();
|
||||
return Math.max(0,
|
||||
(int)applyModifiers(getBaseProduction(getProductionType(),
|
||||
goodsType, unitType),
|
||||
turn,
|
||||
getProductionModifiers(goodsType, unitType)));
|
||||
(int)applyModifiers(getBaseProduction(getProductionType(), goodsType, unitType),
|
||||
turn,
|
||||
getProductionModifiers(goodsType, unitType)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -634,7 +633,7 @@ public abstract class WorkLocation extends UnitLocation
|
|||
|
||||
int amount = getBaseProduction(null, goodsType, unitType);
|
||||
amount = (int)applyModifiers(amount, getGame().getTurn(),
|
||||
getProductionModifiers(goodsType, unitType));
|
||||
getProductionModifiers(goodsType, unitType));
|
||||
return (amount < 0) ? 0 : amount;
|
||||
}
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ public class ClaimLandMessage extends AttributeMessage {
|
|||
}
|
||||
|
||||
Class<? extends FreeColObject> c = FreeColObject
|
||||
.getFreeColObjectClass(FreeColObject.getIdType(claimantId));
|
||||
.getFreeColObjectClassByName(FreeColObject.getIdTypeByName(claimantId));
|
||||
Unit unit = null;
|
||||
Settlement settlement = null;
|
||||
if (Unit.class.isAssignableFrom(c)) {
|
||||
|
|
|
@ -1527,7 +1527,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer {
|
|||
int n = turn.getNumber() - peaceTurn;
|
||||
float prob = (float)Math.pow(peaceProb, n);
|
||||
// Apply Franklin's modifier
|
||||
prob = p.applyModifiers(prob, turn, Modifier.PEACE_TREATY);
|
||||
prob = p.apply(prob, turn, Modifier.PEACE_TREATY);
|
||||
return prob > 0.0f
|
||||
&& (randomInt(logger, "Peace holds?", getAIRandom(), 100)
|
||||
< (int)(100.0f * prob));
|
||||
|
|
|
@ -157,11 +157,11 @@ public class ServerIndianSettlement extends IndianSettlement
|
|||
|
||||
// Check for braves converted by missionaries
|
||||
float convert = getConvertProgress();
|
||||
float cMiss = missionary.applyModifiers(missionary.getType().getSkill(),
|
||||
turn, Modifier.CONVERSION_SKILL);
|
||||
float cMiss = missionary.apply(missionary.getType().getSkill(),
|
||||
turn, Modifier.CONVERSION_SKILL);
|
||||
// The convert rate increases by a percentage of the current alarm.
|
||||
int alarm = Math.min(getAlarm(other).getValue(), Tension.TENSION_MAX);
|
||||
float cAlarm = missionary.applyModifiers(alarm, turn,
|
||||
float cAlarm = missionary.apply(alarm, turn,
|
||||
Modifier.CONVERSION_ALARM_RATE);
|
||||
convert += cMiss + (cAlarm - alarm);
|
||||
logger.finest("Conversion at " + getName() + " alarm=" + alarm
|
||||
|
|
|
@ -364,7 +364,7 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
|
||||
// Set initial immigration target
|
||||
int i0 = spec.getInteger(GameOptions.INITIAL_IMMIGRATION);
|
||||
immigrationRequired = (int)applyModifiers((float)i0, null,
|
||||
immigrationRequired = (int)apply((float)i0, null,
|
||||
Modifier.RELIGIOUS_UNREST_BONUS);
|
||||
|
||||
// Add initial gold
|
||||
|
@ -1211,8 +1211,8 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
if (container != null) container.addGoods(type, a);
|
||||
market.modifyIncomeBeforeTaxes(type, -price);
|
||||
market.modifyIncomeAfterTaxes(type, -price);
|
||||
int ma = (int)applyModifiers((float)a, getGame().getTurn(),
|
||||
Modifier.TRADE_BONUS, type);
|
||||
int ma = (int)apply((float)a, getGame().getTurn(),
|
||||
Modifier.TRADE_BONUS, type);
|
||||
market.addGoodsToMarket(type, -ma);
|
||||
marketAmount += ma;
|
||||
propagateToEuropeanMarkets(type, -a, random);
|
||||
|
@ -1249,8 +1249,8 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
if (container != null) container.addGoods(type, -a);
|
||||
market.modifyIncomeBeforeTaxes(type, incomeBeforeTaxes);
|
||||
market.modifyIncomeAfterTaxes(type, incomeAfterTaxes);
|
||||
int ma = (int)applyModifiers((float)a, getGame().getTurn(),
|
||||
Modifier.TRADE_BONUS, type);
|
||||
int ma = (int)apply((float)a, getGame().getTurn(),
|
||||
Modifier.TRADE_BONUS, type);
|
||||
market.addGoodsToMarket(type, ma);
|
||||
marketAmount += ma;
|
||||
propagateToEuropeanMarkets(type, a, random);
|
||||
|
@ -1836,7 +1836,7 @@ outer: for (Effect effect : effects) {
|
|||
// Apply modifiers, and commit the total change.
|
||||
forEachMapEntry(extra, e -> e.getValue() != 0, e -> {
|
||||
final Player player = e.getKey();
|
||||
int change = (int)player.applyModifiers((float)e.getValue(),
|
||||
int change = (int)player.apply((float)e.getValue(),
|
||||
game.getTurn(), Modifier.NATIVE_ALARM_MODIFIER);
|
||||
((ServerIndianSettlement)is)
|
||||
.csModifyAlarm(player, change, true, cs);//+til
|
||||
|
@ -2022,8 +2022,8 @@ outer: for (Effect effect : effects) {
|
|||
}
|
||||
// Revealed tiles in 11x11 block in Col1
|
||||
final int fullRadius = (int)father
|
||||
.applyModifiers((float)colony.getLineOfSight(),
|
||||
turn, Modifier.EXPOSED_TILES_RADIUS);
|
||||
.apply((float)colony.getLineOfSight(),
|
||||
turn, Modifier.EXPOSED_TILES_RADIUS);
|
||||
tiles.addAll(exploreTiles(t.getSurroundingTiles(1,
|
||||
fullRadius)));
|
||||
cs.add(See.only(this), tiles);
|
||||
|
|
|
@ -229,11 +229,11 @@ public class ServerUnit extends Unit implements TurnTaker {
|
|||
if (deliver != null) { // Deliver goods if any
|
||||
final Turn turn = getGame().getTurn();
|
||||
int amount = deliver.getAmount();
|
||||
amount = (int)this.applyModifiers(amount, turn,
|
||||
amount = (int)this.apply(amount, turn,
|
||||
Modifier.TILE_TYPE_CHANGE_PRODUCTION, deliver.getType());
|
||||
Settlement settlement = tile.getOwningSettlement();
|
||||
if (settlement != null && owner.owns(settlement)) {
|
||||
amount = (int)settlement.applyModifiers(amount, turn,
|
||||
amount = (int)settlement.apply(amount, turn,
|
||||
Modifier.TILE_TYPE_CHANGE_PRODUCTION, deliver.getType());
|
||||
settlement.addGoods(deliver.getType(), amount);
|
||||
}
|
||||
|
|
|
@ -170,8 +170,8 @@ public class MessagesTest extends FreeColTestCase {
|
|||
StringTemplate s2 = StringTemplate.key("model.tile.plains.name");
|
||||
assertEquals("Plains", Messages.message(s2));
|
||||
|
||||
StringTemplate t1 = AbstractGoods
|
||||
.getLabel(game.getSpecification().getPrimaryFoodType(), 100);
|
||||
StringTemplate t1 = new AbstractGoods(spec().getPrimaryFoodType(),
|
||||
100).getLabel();
|
||||
assertEquals(2, t1.entryList().size());
|
||||
List<SimpleEntry<String,StringTemplate>> e = t1.entryList();
|
||||
assertEquals(StringTemplate.TemplateType.KEY,
|
||||
|
|
|
@ -700,24 +700,21 @@ public class BuildingTest extends FreeColTestCase {
|
|||
modifier = first(modifiers);
|
||||
assertEquals(100f, modifier.getValue());
|
||||
assertEquals(ModifierType.PERCENTAGE, modifier.getType());
|
||||
assertEquals(0f, stockadeType.applyModifiers(0f, turn,
|
||||
Modifier.MINIMUM_COLONY_SIZE));
|
||||
assertEquals(0f, stockadeType.apply(0f, turn, Modifier.MINIMUM_COLONY_SIZE));
|
||||
|
||||
modifiers = toList(fortType.getModifiers(Modifier.DEFENCE));
|
||||
assertEquals(1, modifiers.size());
|
||||
modifier = first(modifiers);
|
||||
assertEquals(150f, modifier.getValue());
|
||||
assertEquals(ModifierType.PERCENTAGE, modifier.getType());
|
||||
assertEquals(0f, stockadeType.applyModifiers(0f, turn,
|
||||
Modifier.MINIMUM_COLONY_SIZE));
|
||||
assertEquals(0f, stockadeType.apply(0f, turn, Modifier.MINIMUM_COLONY_SIZE));
|
||||
|
||||
modifiers = toList(fortressType.getModifiers(Modifier.DEFENCE));
|
||||
assertEquals(1, modifiers.size());
|
||||
modifier = first(modifiers);
|
||||
assertEquals(200f, modifier.getValue());
|
||||
assertEquals(ModifierType.PERCENTAGE, modifier.getType());
|
||||
assertEquals(0f, stockadeType.applyModifiers(0f, turn,
|
||||
Modifier.MINIMUM_COLONY_SIZE));
|
||||
assertEquals(0f, stockadeType.apply(0f, turn, Modifier.MINIMUM_COLONY_SIZE));
|
||||
}
|
||||
|
||||
public void testCottonClothProduction() {
|
||||
|
|
|
@ -81,7 +81,7 @@ public class FoundingFatherTest extends FreeColTestCase {
|
|||
dutch.addFather(father3);
|
||||
|
||||
assertTrue(any(dutch.getModifiers("some.new.modifier")));
|
||||
assertEquals(6f, dutch.applyModifiers(2, null, "some.new.modifier"));
|
||||
assertEquals(6f, dutch.apply(2, null, "some.new.modifier"));
|
||||
|
||||
FoundingFather father4 = new FoundingFather("father4", spec());
|
||||
father4.setType(FoundingFatherType.TRADE);
|
||||
|
|
|
@ -236,18 +236,23 @@ public class ModifierTest extends FreeColTestCase {
|
|||
Turn turn;
|
||||
|
||||
// only modifier2
|
||||
assertEquals(3f, featureContainer.applyModifiers(1, new Turn(9),
|
||||
"test", frigate));
|
||||
turn = new Turn(9);
|
||||
assertEquals(3f, FeatureContainer.applyModifiers(1, turn,
|
||||
featureContainer.getModifiers("test", frigate, turn)));
|
||||
// both modifiers
|
||||
assertEquals(4f, featureContainer.applyModifiers(1, new Turn(10),
|
||||
"test", frigate));
|
||||
assertEquals(5f, featureContainer.applyModifiers(1, new Turn(11),
|
||||
"test", frigate));
|
||||
assertEquals(9f, featureContainer.applyModifiers(1, new Turn(15),
|
||||
"test", frigate));
|
||||
turn = new Turn(10);
|
||||
assertEquals(4f, FeatureContainer.applyModifiers(1, turn,
|
||||
featureContainer.getModifiers("test", frigate, turn)));
|
||||
turn = new Turn(11);
|
||||
assertEquals(5f, FeatureContainer.applyModifiers(1, new Turn(11),
|
||||
featureContainer.getModifiers("test", frigate, turn)));
|
||||
turn = new Turn(15);
|
||||
assertEquals(9f, FeatureContainer.applyModifiers(1, turn,
|
||||
featureContainer.getModifiers("test", frigate, turn)));
|
||||
// only modifier2
|
||||
assertEquals(3f, featureContainer.applyModifiers(1, new Turn(16),
|
||||
"test", frigate));
|
||||
turn = new Turn(16);
|
||||
assertEquals(3f, FeatureContainer.applyModifiers(1, turn,
|
||||
featureContainer.getModifiers("test", frigate, turn)));
|
||||
}
|
||||
|
||||
public void testHashEquals() {
|
||||
|
@ -340,7 +345,8 @@ public class ModifierTest extends FreeColTestCase {
|
|||
featureContainer.addModifier(modifier2);
|
||||
featureContainer.addModifier(modifier3);
|
||||
|
||||
assertEquals(Modifier.UNKNOWN,
|
||||
featureContainer.applyModifiers(1, new Turn(15), "test", null));
|
||||
Turn turn = new Turn(15);
|
||||
assertEquals(Modifier.UNKNOWN, FeatureContainer.applyModifiers(1, turn,
|
||||
featureContainer.getModifiers("test", null, turn)));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue