net.sf.freecol.common.model
Class Europe

java.lang.Object
  extended by net.sf.freecol.common.model.FreeColObject
      extended by net.sf.freecol.common.model.FreeColGameObject
          extended by net.sf.freecol.common.model.Europe
All Implemented Interfaces:
Location, Named, Ownable

public final class Europe
extends FreeColGameObject
implements Location, Ownable, Named

Represents Europe in the game. Each Player has it's own Europe.



Europe is the place where you can recruit(int, net.sf.freecol.common.model.Unit, net.sf.freecol.common.model.UnitType) and train(net.sf.freecol.common.model.Unit) new units. You may also sell/buy goods.


Field Summary
static int RECRUIT_COUNT
           
static java.lang.String UNIT_CHANGE
           
static java.lang.String UNITS_TAG_NAME
           
 
Fields inherited from class net.sf.freecol.common.model.FreeColObject
ID_ATTRIBUTE_TAG
 
Constructor Summary
Europe(Game game, org.w3c.dom.Element e)
          Initializes this object from an XML-representation of this object.
Europe(Game game, Player owner)
          Creates a new Europe.
Europe(Game game, java.lang.String id)
          Initiates a new Europe with the given ID.
Europe(Game game, javax.xml.stream.XMLStreamReader in)
          Initializes this object from an XML-representation of this object.
 
Method Summary
 void add(Locatable locatable)
          Adds a Locatable to this Location.
 boolean canAdd(Locatable locatable)
          Checks whether or not the specified locatable may be added to this Location.
 boolean canBuildEquipment(EquipmentType equipmentType)
          Return true if this Europe could build at least one item of the given EquipmentType.
 boolean contains(Locatable locatable)
          Checks if the specified Locatable is at this Location.
 void disposeUnitList()
          Dispose of all units in this Europe.
 Colony getColony()
          Europe does not belong to a colony.
 Unit getFirstUnit()
          Gets the first Unit in this Europe.
 GoodsContainer getGoodsContainer()
          Gets the GoodsContainer this Location use for storing it's goods.
 Unit getLastUnit()
          Gets the last Unit in this Europe.
 java.lang.String getName()
          Returns the name of the owner's home port.
 Player getOwner()
          Gets the Player using this Europe.
 UnitType getRecruitable(int slot)
          Gets the type of the recruitable in Europe at the given slot.
 int getRecruitPrice()
          Gets the current price for a recruit.
 Tile getTile()
          Returns null.
 int getUnitCount()
          Gets the amount of Units at this Location.
 java.util.Iterator<Unit> getUnitIterator()
          Gets an Iterator of every Unit directly located in this Europe.
 java.util.List<Unit> getUnitList()
          Gets a List of every Unit directly located in this Europe.
 int getUnitPrice(UnitType unitType)
          Returns the price of a unit in Europe.
static java.lang.String getXMLElementTagName()
          Gets the tag name of the root element representing this object.
 void newTurn()
          Prepares this object for a new turn.
 void recruit(int slot, Unit unit, UnitType newRecruitable)
          Recruits a unit from Europe.
 boolean recruitablesDiffer()
          Returns true if not all recruitables are of the same type.
 void remove(Locatable locatable)
          Removes a Locatable from this Location.
 void setOwner(Player p)
          Sets the owner of this Ownable.
 void setRecruitable(int slot, UnitType type)
          Sets the type of the recruitable in Europe at the given slot to the given type.
 java.lang.String toString()
          Returns a suitable name.
 void train(Unit unit)
          Train or purchase a unit in Europe.
 
Methods inherited from class net.sf.freecol.common.model.FreeColGameObject
addToRemoveElement, dispose, equals, equals, getFreeColGameObject, getFreeColGameObject, getGame, getGameOptions, getIntegerID, hashCode, hasID, isDisposed, isUninitialized, readFromXML, setGame, setId, toSavedXML, toXML, updateFreeColGameObject, updateID
 
Methods inherited from class net.sf.freecol.common.model.FreeColObject
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAttribute, getAttribute, getAttribute, getAttribute, getId, getPropertyChangeListeners, getPropertyChangeListeners, hasAbility, hasAttribute, hasListeners, readFromXMLElement, removePropertyChangeListener, removePropertyChangeListener, toXML, toXML, toXMLElement, toXMLElement, toXMLElement, toXMLElement, toXMLElementPartial, writeAttribute, writeFreeColGameObject
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.freecol.common.model.Location
getId
 

Field Detail

UNITS_TAG_NAME

public static final java.lang.String UNITS_TAG_NAME
See Also:
Constant Field Values

UNIT_CHANGE

public static final java.lang.String UNIT_CHANGE
See Also:
Constant Field Values

RECRUIT_COUNT

public static final int RECRUIT_COUNT
See Also:
Constant Field Values
Constructor Detail

Europe

public Europe(Game game,
              Player owner)
Creates a new Europe.

Parameters:
game - The Game in which this object belong.
owner - The Player that will be using this object of Europe.

Europe

public Europe(Game game,
              javax.xml.stream.XMLStreamReader in)
       throws javax.xml.stream.XMLStreamException
Initializes this object from an XML-representation of this object.

Parameters:
game - The Game in which this object belong.
in - The input stream containing the XML.
Throws:
javax.xml.stream.XMLStreamException - if an error occurred during parsing.

Europe

public Europe(Game game,
              org.w3c.dom.Element e)
Initializes this object from an XML-representation of this object.

Parameters:
game - The Game in which this object belong.
e - An XML-element that will be used to initialize this object.

Europe

public Europe(Game game,
              java.lang.String id)
Initiates a new Europe with the given ID. The object should later be initialized by calling either FreeColGameObject.readFromXML(XMLStreamReader) or FreeColObject.readFromXMLElement(Element).

Parameters:
game - The Game in which this object belong.
id - The unique identifier for this object.
Method Detail

canBuildEquipment

public boolean canBuildEquipment(EquipmentType equipmentType)
Return true if this Europe could build at least one item of the given EquipmentType.

Parameters:
equipmentType - an EquipmentType value
Returns:
a boolean value

recruitablesDiffer

public boolean recruitablesDiffer()
Returns true if not all recruitables are of the same type.

Returns:
a boolean value

getRecruitable

public UnitType getRecruitable(int slot)
Gets the type of the recruitable in Europe at the given slot.

Parameters:
slot - The slot of the recruitable whose type needs to be returned. Should be 0, 1 or 2. NOTE - used to be 1, 2 or 3 and was called with 1-3 by some classes and 0-2 by others, the method itself expected 0-2.
Returns:
The type of the recruitable in Europe at the given slot.
Throws:
java.lang.IllegalArgumentException - if the given slot does not exist.

setRecruitable

public void setRecruitable(int slot,
                           UnitType type)
Sets the type of the recruitable in Europe at the given slot to the given type.

Parameters:
slot - The slot of the recruitable whose type needs to be set. Should be 0, 1 or 2. NOTE - changed in order to match getRecruitable above!
type - The new type for the unit at the given slot in Europe. Should be a valid unit type.

recruit

public void recruit(int slot,
                    Unit unit,
                    UnitType newRecruitable)
Recruits a unit from Europe.

Parameters:
slot - The slot the recruited unit(type) came from. This is needed for setting a new recruitable to this slot.
unit - The recruited unit.
newRecruitable - The recruitable that will fill the now empty slot.
Throws:
java.lang.IllegalArgumentException - if unit == null.
java.lang.IllegalStateException - if the player recruiting the unit cannot afford the price.

getTile

public Tile getTile()
Returns null.

Specified by:
getTile in interface Location
Returns:
null.

getColony

public Colony getColony()
Europe does not belong to a colony.

Specified by:
getColony in interface Location
Returns:
Always returns null.

add

public void add(Locatable locatable)
Adds a Locatable to this Location.

Specified by:
add in interface Location
Parameters:
locatable - The Locatable to add to this Location.

remove

public void remove(Locatable locatable)
Removes a Locatable from this Location.

Specified by:
remove in interface Location
Parameters:
locatable - The Locatable to remove from this Location.

contains

public boolean contains(Locatable locatable)
Checks if the specified Locatable is at this Location.

Specified by:
contains in interface Location
Parameters:
locatable - The Locatable to test the presence of.
Returns:
The result.

getGoodsContainer

public GoodsContainer getGoodsContainer()
Description copied from interface: Location
Gets the GoodsContainer this Location use for storing it's goods.

Specified by:
getGoodsContainer in interface Location
Returns:
The GoodsContainer or null if the Location cannot store any goods.

canAdd

public boolean canAdd(Locatable locatable)
Checks whether or not the specified locatable may be added to this Location.

Specified by:
canAdd in interface Location
Parameters:
locatable - The Locatable to test the addabillity of.
Returns:
true.

getUnitCount

public int getUnitCount()
Gets the amount of Units at this Location.

Specified by:
getUnitCount in interface Location
Returns:
The amount of Units at this Location.

getUnitList

public java.util.List<Unit> getUnitList()
Gets a List of every Unit directly located in this Europe. This does not include Units on ships.

Specified by:
getUnitList in interface Location
Returns:
The List.

disposeUnitList

public void disposeUnitList()
Dispose of all units in this Europe.


getUnitIterator

public java.util.Iterator<Unit> getUnitIterator()
Gets an Iterator of every Unit directly located in this Europe. This does not include Units on ships.

Specified by:
getUnitIterator in interface Location
Returns:
The Iterator.

getFirstUnit

public Unit getFirstUnit()
Gets the first Unit in this Europe.

Returns:
The first Unit in this Europe.

getLastUnit

public Unit getLastUnit()
Gets the last Unit in this Europe.

Returns:
The last Unit in this Europe.

getUnitPrice

public int getUnitPrice(UnitType unitType)
Returns the price of a unit in Europe.

Parameters:
unitType - The type of unit of which you need the price.
Returns:
The price of this unit when trained in Europe. 'UnitType.UNDEFINED' is returned in case the unit cannot be bought.

train

public void train(Unit unit)
Train or purchase a unit in Europe.

Parameters:
unit - The trained unit.
Throws:
java.lang.IllegalArgumentException - if unit == null.
java.lang.IllegalArgumentException - if the unit to be trained doesn't have price
java.lang.IllegalStateException - if the player recruiting the unit cannot afford the price.

getRecruitPrice

public int getRecruitPrice()
Gets the current price for a recruit.

Returns:
The current price of the recruit in this Europe.

getOwner

public Player getOwner()
Gets the Player using this Europe.

Specified by:
getOwner in interface Ownable
Returns:
The Player controlling this Ownable.

setOwner

public void setOwner(Player p)
Sets the owner of this Ownable.

Specified by:
setOwner in interface Ownable
Parameters:
p - The Player that should take ownership of this Ownable.
Throws:
java.lang.UnsupportedOperationException - is always thrown by this method.

newTurn

public void newTurn()
Prepares this object for a new turn. TODO: give Europe a shipyard and remove this


getName

public java.lang.String getName()
Returns the name of the owner's home port.

Specified by:
getName in interface Named
Returns:
The name of this location.

toString

public java.lang.String toString()
Returns a suitable name.

Overrides:
toString in class FreeColGameObject
Returns:
The String

getXMLElementTagName

public static java.lang.String getXMLElementTagName()
Gets the tag name of the root element representing this object.

Returns:
"europe".