本文整理汇总了Java中net.sf.freecol.common.model.Tile.getTileImprovement方法的典型用法代码示例。如果您正苦于以下问题:Java Tile.getTileImprovement方法的具体用法?Java Tile.getTileImprovement怎么用?Java Tile.getTileImprovement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.sf.freecol.common.model.Tile
的用法示例。
在下文中一共展示了Tile.getTileImprovement方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getBestTileImprovementType
import net.sf.freecol.common.model.Tile; //导入方法依赖的package包/类
/**
* Gets the 'most effective' TileImprovementType allowed for a
* given tile and goods type. Useful for AI in deciding the
* improvements to prioritize.
*
* @param tile The {@code Tile} that will be improved.
* @param goodsType The {@code GoodsType} to be prioritized.
* @return The best {@code TileImprovementType} available to be done.
*/
public static TileImprovementType getBestTileImprovementType(Tile tile,
GoodsType goodsType) {
final Specification spec = tile.getSpecification();
final Predicate<TileImprovementType> goodTIPred = it ->
!it.isNatural()
&& it.isTileTypeAllowed(tile.getType())
// FIXME: For now, disable any exotic non-Col1
// improvement types that expend more than one parcel
// of tools (e.g. plantForest), because
// PioneeringMission assumes this does not happen.
&& it.getExpendedAmount() <= 1
&& tile.getTileImprovement(it) == null;
final Comparator<TileImprovementType> bestTIComp
= cachingIntComparator(it ->
it.getImprovementValue(tile, goodsType));
TileImprovementType best = maximize(spec.getTileImprovementTypeList(),
goodTIPred, bestTIComp);
return (best == null || best.getImprovementValue(tile, goodsType) <= 0)
? null
: best;
}
示例2: serverHandler
import net.sf.freecol.common.model.Tile; //导入方法依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
public ChangeSet serverHandler(FreeColServer freeColServer,
ServerPlayer serverPlayer) {
final String unitId = getStringAttribute(UNIT_TAG);
final String improvementId = getStringAttribute(IMPROVEMENT_TYPE_TAG);
Unit unit;
try {
unit = serverPlayer.getOurFreeColGameObject(unitId, Unit.class);
} catch (Exception e) {
return serverPlayer.clientError(e.getMessage());
}
Tile tile = unit.getTile();
if (tile == null) {
return serverPlayer.clientError("Unit is not on the map: "
+ unitId);
} else if (!unit.hasAbility(Ability.IMPROVE_TERRAIN)) {
return serverPlayer.clientError("Unit can not improve tiles: "
+ unitId);
}
TileImprovementType type = freeColServer.getSpecification()
.getTileImprovementType(improvementId);
TileImprovement improvement;
if (type == null) {
return serverPlayer.clientError("Not a tile improvement type: "
+ improvementId);
} else if (type.isNatural()) {
return serverPlayer.clientError("ImprovementType must not be natural: "
+ improvementId);
} else if (!type.isTileTypeAllowed(tile.getType())) {
return serverPlayer.clientError("ImprovementType not allowed on tile: "
+ improvementId);
} else if ((improvement = tile.getTileImprovement(type)) == null) {
if (!type.isWorkerAllowed(unit)) {
return serverPlayer.clientError("Unit can not create improvement: "
+ improvementId);
}
} else { // Has improvement, check if worker can contribute to it
if (!improvement.isWorkerAllowed(unit)) {
return serverPlayer.clientError("Unit can not work on improvement: "
+ improvementId);
}
}
// Proceed to change.
return igc(freeColServer)
.changeWorkImprovementType(serverPlayer, unit, type);
}