当前位置: 首页>>代码示例>>Java>>正文


Java Tile.getTileImprovement方法代码示例

本文整理汇总了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;
}
 
开发者ID:FreeCol,项目名称:freecol,代码行数:31,代码来源:TileImprovementPlan.java

示例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);
}
 
开发者ID:FreeCol,项目名称:freecol,代码行数:54,代码来源:ChangeWorkImprovementTypeMessage.java


注:本文中的net.sf.freecol.common.model.Tile.getTileImprovement方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。