/**
* Copyright (C) 2002-2012 The FreeCol Team
*
* This file is part of FreeCol.
*
* FreeCol is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* FreeCol is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with FreeCol. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.freecol.server.model;
import org.freecolandroid.repackaged.java.awt.Rectangle;
import net.sf.freecol.common.model.Game;
import net.sf.freecol.common.model.Map.Position;
import net.sf.freecol.common.model.Region;
import net.sf.freecol.common.model.Tile;
public class ServerRegion extends Region {
/**
* The size of this Region (number of Tiles).
*/
private int size = 0;
/**
* A Rectangle that contains all points of the Region.
*/
private Rectangle bounds = new Rectangle();
public ServerRegion(Game game, String nameKey, RegionType type) {
this(game, nameKey, type, null);
}
public ServerRegion(Game game, String nameKey, RegionType type, Region parent) {
super(game);
setNameKey(nameKey);
setType(type);
setParent(parent);
}
/**
* Get the <code>Size</code> value.
*
* @return an <code>int</code> value
*/
public final int getSize() {
return size;
}
/**
* Set the <code>Size</code> value.
*
* @param newSize The new Size value.
*/
public final void setSize(final int newSize) {
this.size = newSize;
}
/**
* Get the <code>Bounds</code> value.
*
* @return a <code>Rectangle</code> value
*/
public final Rectangle getBounds() {
return bounds;
}
/**
* Set the <code>Bounds</code> value.
*
* @param newBounds The new Bounds value.
*/
public final void setBounds(final Rectangle newBounds) {
this.bounds = newBounds;
}
/**
* Add the given Tile to this Region.
*
* @param tile a <code>Tile</code> value
*/
public void addTile(Tile tile) {
tile.setRegion(this);
size++;
if (bounds.x == 0 && bounds.width == 0 ||
bounds.y == 0 && bounds.height == 0) {
bounds.setBounds(tile.getX(), tile.getY(), 0, 0);
} else {
bounds.add(tile.getX(), tile.getY());
}
}
/**
* Return the center of the Region's bounding box.
*
* @return a <code>Position</code> value
*/
public Position getCenter() {
return new Position(bounds.x + bounds.width/2, bounds.y + bounds.height/2);
}
}