public void update(boolean full) {
        owner = tile.getOwner();
        owningSettlement = tile.getOwningSettlement();

        tileItems.clear();
        TileItemContainer tic = tile.getTileItemContainer();
        if (tic != null) {
            tileItems.addAll(tic.getImprovements());
            if (tic.getResource() != null) {
                tileItems.add(tic.getResource());
            }
            if (tic.getLostCityRumour() != null) {
                tileItems.add(tic.getLostCityRumour());
            }
        }

        Colony colony = tile.getColony();
        if (colony == null) {
            colonyUnitCount = -1;
            colonyStockadeKey = null;
        } else {
            colonyUnitCount = colony.getUnitCount();
            colonyStockadeKey = colony.getTrueStockadeKey();
        }
        IndianSettlement is = tile.getIndianSettlement();
        if (is == null) {
            missionary = null;
            skill = null;
            wantedGoods = new GoodsType[] { null, null, null };
        } else {
            missionary = is.getMissionary();
            if (full) {
                skill = is.getLearnableSkill();
            }
            // Do not hide.  Has to be visible for the pre-speak-to-chief
            // dialog message.  Yes this is odd.
            wantedGoods = is.getWantedGoods();
        }
    }