Package net.sf.freecol.common.model
Class Resource
- java.lang.Object
-
- net.sf.freecol.common.model.FreeColObject
-
- net.sf.freecol.common.model.FreeColGameObject
-
- net.sf.freecol.common.model.TileItem
-
- net.sf.freecol.common.model.Resource
-
- All Implemented Interfaces:
java.lang.Comparable<FreeColObject>,Locatable,Named,ObjectWithId
public class Resource extends TileItem
Represents a production resource, such as prime tobacco, or an ore vein, located on a Tile. A resource may be exhausted. In the original game, only resources that produced silver were exhausted.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.logging.Loggerloggerprivate intquantityThe amount of the resource present.private static java.lang.StringQUANTITY_TAGstatic java.lang.StringTAGprivate static java.lang.StringTILE_TAGprivate ResourceTypetypeThe type of resource.private static java.lang.StringTYPE_TAGprivate static intUNLIMITEDSome resources are unlimited.-
Fields inherited from class net.sf.freecol.common.model.FreeColGameObject
initialized
-
Fields inherited from class net.sf.freecol.common.model.FreeColObject
ARRAY_SIZE_TAG, DEFAULT_CLASS_INDEX, fcoComparator, ID_ATTRIBUTE_TAG, PARTIAL_ATTRIBUTE_TAG, VALUE_TAG
-
-
Constructor Summary
Constructors Constructor Description Resource(Game game, java.lang.String id)Creates newResource.Resource(Game game, Tile tile, ResourceType type)Creates a standardResource-instance.Resource(Game game, Tile tile, ResourceType type, int quantity)Creates a standardResource-instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intapplyBonus(GoodsType goodsType, UnitType unitType, int potential)Applies the production bonus for the given goods type and unit type to the given potential production.booleancanProduce(GoodsType goodsType, UnitType unitType)Does this tile item allow its enclosing tile to produce a given goods type?Constants.IntegrityTypecheckIntegrity(boolean fix, LogBuilder lb)Checks the integrity of this game object.<T extends FreeColObject>
booleancopyIn(T other)Copy another FreeColObject into this one if it is compatible.GoodsTypegetBestGoodsType()Get the best goods type to produce here.Map.LayergetLayer()Get the layer associated with this tile item.java.lang.StringgetNameKey()Gets the name of this named object.java.util.stream.Stream<Modifier>getProductionModifiers(GoodsType goodsType, UnitType unitType)Gets the production modifiers for the given type of goods and unit.intgetQuantity()Get the resource quantity.ResourceTypegetType()Get the type of this resource.java.lang.StringgetXMLTagName()Get the serialization tag for this object.intgetZIndex()Get theZIndexvalue.booleanisComplete()Is this improvement complete?booleanisNatural()Is this a natural TileItem?booleanisTileTypeAllowed(TileType tileType)Is a tile type compatible with this tile item?booleanisUnlimited()Is this an unlimited resource?protected voidreadAttributes(FreeColXMLReader xr)Reads the attributes of this object from an XML stream.voidsetQuantity(int newQuantity)Set the resource quantity.java.lang.StringtoString()private intuseQuantity(int usedQuantity)Reduces the available quantity.intuseQuantity(GoodsType goodsType, UnitType unitType, int potential)Reduce the available quantity by the bonus output ofGoodsType.protected voidwriteAttributes(FreeColXMLWriter xw)Write the attributes of this object to a stream.-
Methods inherited from class net.sf.freecol.common.model.TileItem
getLocation, getSpaceTaken, getTile, isInEurope, setLocation
-
Methods inherited from class net.sf.freecol.common.model.FreeColGameObject
dispose, disposeResources, equals, fundamentalDispose, getClassIndex, getDisposables, getGame, getLinkTarget, getSpecification, hashCode, intern, internId, isDisposed, isInitialized, isInternable, readFromXML, setGame, setSpecification
-
Methods inherited from class net.sf.freecol.common.model.FreeColObject
addAbility, addFeatures, addModifier, addPropertyChangeListener, addPropertyChangeListener, apply, apply, applyModifiers, applyModifiers, arrayKey, compareIds, compareTo, containsAbilityKey, containsModifierKey, copy, copy, copy, copy, copyInCast, dumpObject, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAbilities, getAbilities, getAbilities, getAbilities, getDefenceModifiers, getDisplayObject, getFeatureContainer, getFreeColObjectClass, getFreeColObjectClassByName, getId, getIdNumber, getIdType, getIdTypeByName, getModifiers, getModifiers, getModifiers, getModifiers, getObjectClassIndex, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeSupport, getSortedAbilities, getSortedModifiers, getSuffix, getSuffix, hasAbility, hasAbility, hasAbility, hasListeners, hasModifier, hasModifier, hasModifier, idEquals, invokeMethod, logFreeColObjects, readChild, readChildren, readFromXMLPartial, removeAbilities, removeAbility, removeFeatures, removeModifier, removeModifiers, removePropertyChangeListener, removePropertyChangeListener, save, save, save, save, serialize, serialize, serialize, serialize, setId, toXML, toXML, toXMLPartial, toXMLPartial, writeChildren
-
-
-
-
Field Detail
-
logger
private static final java.util.logging.Logger logger
-
TAG
public static final java.lang.String TAG
- See Also:
- Constant Field Values
-
UNLIMITED
private static final int UNLIMITED
Some resources are unlimited.- See Also:
- Constant Field Values
-
type
private ResourceType type
The type of resource.
-
quantity
private int quantity
The amount of the resource present.
-
QUANTITY_TAG
private static final java.lang.String QUANTITY_TAG
- See Also:
- Constant Field Values
-
TILE_TAG
private static final java.lang.String TILE_TAG
- See Also:
- Constant Field Values
-
TYPE_TAG
private static final java.lang.String TYPE_TAG
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Resource
public Resource(Game game, Tile tile, ResourceType type, int quantity)
Creates a standardResource-instance. This constructor asserts that the game, tile and type are valid.- Parameters:
game- The enclosingGame.tile- TheTileon which this object sits.type- TheResourceTypeof this Resource.quantity- The quantity of resource.
-
Resource
public Resource(Game game, Tile tile, ResourceType type)
Creates a standardResource-instance. This constructor asserts that the game, tile and type are valid.- Parameters:
game- The enclosingGame.tile- TheTileon which this object sits.type- TheResourceTypeof this Resource.
-
Resource
public Resource(Game game, java.lang.String id)
Creates newResource.- Parameters:
game- The enclosingGame.id- The object identifier.
-
-
Method Detail
-
getType
public ResourceType getType()
Get the type of this resource.- Returns:
- The resource type.
-
isUnlimited
public boolean isUnlimited()
Is this an unlimited resource?- Returns:
- True if this is an unlimited resource.
-
getQuantity
public int getQuantity()
Get the resource quantity.- Returns:
- The resource quantity.
-
setQuantity
public void setQuantity(int newQuantity)
Set the resource quantity.- Parameters:
newQuantity- The new resource quantity.
-
getBestGoodsType
public GoodsType getBestGoodsType()
Get the best goods type to produce here.- Returns:
- The best goods type.
-
useQuantity
public int useQuantity(GoodsType goodsType, UnitType unitType, int potential)
Reduce the available quantity by the bonus output ofGoodsType.- Parameters:
goodsType- TheGoodsTypeto check.unitType- The producingUnitType.potential- The base potential of the tile.- Returns:
- The new quantity of resource.
-
useQuantity
private int useQuantity(int usedQuantity)
Reduces the available quantity.- Parameters:
usedQuantity- The quantity that was used up.- Returns:
- The final value of quantity.
-
getNameKey
public java.lang.String getNameKey()
Gets the name of this named object. Try to avoid using this directly except in i18n-related routines or to implement itself in more complext objects.- Specified by:
getNameKeyin interfaceNamed- Specified by:
getNameKeyin classTileItem- Returns:
- The name of the
Named.
-
getZIndex
public final int getZIndex()
Get theZIndexvalue.
-
isTileTypeAllowed
public boolean isTileTypeAllowed(TileType tileType)
Is a tile type compatible with this tile item?- Specified by:
isTileTypeAllowedin classTileItem- Parameters:
tileType- TheTileTypeto check.- Returns:
- True if the tile type is compatible.
-
applyBonus
public int applyBonus(GoodsType goodsType, UnitType unitType, int potential)
Applies the production bonus for the given goods type and unit type to the given potential production.- Specified by:
applyBonusin classTileItem- Parameters:
goodsType- TheGoodsTypeto produce.unitType- TheUnitTypethat is to work.potential- The base potential production.- Returns:
- The production with resource bonuses.
-
canProduce
public boolean canProduce(GoodsType goodsType, UnitType unitType)
Does this tile item allow its enclosing tile to produce a given goods type?- Specified by:
canProducein classTileItem- Parameters:
goodsType- TheGoodsTypeto produce.unitType- The optionalunitTypeto produce with.- Returns:
- True if this tile item produces the goods.
-
getProductionModifiers
public java.util.stream.Stream<Modifier> getProductionModifiers(GoodsType goodsType, UnitType unitType)
Gets the production modifiers for the given type of goods and unit.- Specified by:
getProductionModifiersin classTileItem- Parameters:
goodsType- TheGoodsTypeto produce.unitType- The optionalunitTypeto produce them.- Returns:
- A stream of the applicable modifiers.
-
isNatural
public boolean isNatural()
Is this a natural TileItem?
-
isComplete
public boolean isComplete()
Is this improvement complete?- Specified by:
isCompletein classTileItem- Returns:
- True if complete.
-
getLayer
public Map.Layer getLayer()
Get the layer associated with this tile item.
-
checkIntegrity
public Constants.IntegrityType checkIntegrity(boolean fix, LogBuilder lb)
Checks the integrity of this game object.- Overrides:
checkIntegrityin classTileItem- Parameters:
fix- If true, fix problems if possible.lb- ALogBuilderto log to.- Returns:
- A suitable
IntegrityType.
-
copyIn
public <T extends FreeColObject> boolean copyIn(T other)
Copy another FreeColObject into this one if it is compatible.
-
writeAttributes
protected void writeAttributes(FreeColXMLWriter xw) throws javax.xml.stream.XMLStreamException
Write the attributes of this object to a stream. To be overridden if required by any object that has attributes and uses the toXML(FreeColXMLWriter, String) call.- Overrides:
writeAttributesin classFreeColObject- Parameters:
xw- TheFreeColXMLWriterto write to.- Throws:
javax.xml.stream.XMLStreamException- if there are any problems writing to the stream.
-
readAttributes
protected void readAttributes(FreeColXMLReader xr) throws javax.xml.stream.XMLStreamException
Reads the attributes of this object from an XML stream.- Overrides:
readAttributesin classFreeColGameObject- Parameters:
xr- TheFreeColXMLReaderto read from.- Throws:
javax.xml.stream.XMLStreamException- if there is a problem reading the stream.
-
getXMLTagName
public java.lang.String getXMLTagName()
Get the serialization tag for this object.- Specified by:
getXMLTagNamein classFreeColObject- Returns:
- The tag.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classFreeColObject
-
-