case (Minefield.TYPE_THUNDER_ACTIVE) : strings[stringsIndex] = "Thunder-Active minefield(" + mf.getDamage() + ")" + owner; break; case (Minefield.TYPE_THUNDER_INFERNO) : strings[stringsIndex] = "Thunder-Inferno minefield(" + mf.getDamage() + ")" + owner; break;
    private String[] getTipText(Point point) {        int stringsSize = 0;        Hex mhex = null;        // first, we have to determine how much text we are going to have        // are we on a hex?        final Coords mcoords = getCoordsAt(point);        if (Settings.showMapHexPopup && game.board.contains(mcoords)) {            mhex = game.board.getHex(mcoords);            stringsSize += 1;        }        // check if it's on any entities        for (Iterator i = entitySprites.iterator(); i.hasNext();) {            final EntitySprite eSprite = (EntitySprite)i.next();            if (eSprite.isInside(point)) {                stringsSize += 3;            }        }        // check if it's on any attacks        for (Iterator i = attackSprites.iterator(); i.hasNext();) {            final AttackSprite aSprite = (AttackSprite)i.next();            if (aSprite.isInside(point)) {                stringsSize += 1 + aSprite.weaponDescs.size();            }        }        // If the hex contains a building or rubble, make more space.        if ( mhex != null &&             (mhex.contains(Terrain.RUBBLE) ||              mhex.contains(Terrain.BUILDING)) ) {            stringsSize += 1;        }        stringsSize += game.getNbrMinefields(mcoords);        // if the size is zip, you must a'quit        if (stringsSize == 0) {            return null;        }        // now we can allocate an array of strings        String[] strings = new String[stringsSize];        int stringsIndex = 0;        // are we on a hex?        if (mhex != null) {            strings[stringsIndex] = "Hex " + mcoords.getBoardNum()                + "; level " + mhex.getElevation();            stringsIndex += 1;            // Do we have rubble?            if ( mhex.contains(Terrain.RUBBLE) ) {                strings[stringsIndex] = "Rubble";                stringsIndex += 1;            }            // Do we have a building?            else if ( mhex.contains(Terrain.BUILDING) ) {                // Get the building.                Building bldg = game.board.getBuildingAt( mcoords );                StringBuffer buf = new StringBuffer( "Height " );                // Each hex of a building has its own elevation.                buf.append( mhex.levelOf(Terrain.BLDG_ELEV) );                buf.append( " " );                buf.append( bldg.toString() );                buf.append( ", CF: " );                buf.append( bldg.getCurrentCF() );                strings[stringsIndex] = buf.toString();                stringsIndex += 1;            }            if (game.containsMinefield(mcoords)) {                java.util.Vector minefields = game.getMinefields(mcoords);                for (int i = 0; i < minefields.size(); i++){                    Minefield mf = (Minefield) minefields.elementAt(i);                    String owner =  " (" + game.getPlayer(mf.getPlayerId()).getName() + ")";                    switch (mf.getType()) {                    case (Minefield.TYPE_CONVENTIONAL) :                        strings[stringsIndex] = "Conventional minefield " + owner;                        break;                    case (Minefield.TYPE_THUNDER) :                        strings[stringsIndex] = "Thunder minefield(" + mf.getDamage() + ")" + owner;                        break;                    case (Minefield.TYPE_COMMAND_DETONATED) :                        strings[stringsIndex] = "Command-detonated minefield " + owner;                        break;                    case (Minefield.TYPE_VIBRABOMB) :                        if (mf.getPlayerId() == localPlayer.getId()) {                            strings[stringsIndex] = "Vibrabomb minefield(" + mf.getSetting() + ") " + owner;                        } else {                            strings[stringsIndex] = "Vibrabomb minefield" + owner;                        }                        break;                    }                    stringsIndex++;                }            }        }        // check if it's on any entities        for (Iterator i = entitySprites.iterator(); i.hasNext();) {            final EntitySprite eSprite = (EntitySprite)i.next();            if (eSprite.isInside(point)) {                final String[] entityStrings = eSprite.getTooltip();                java.lang.System.arraycopy(entityStrings, 0, strings, stringsIndex, entityStrings.length);                stringsIndex += entityStrings.length;            }        }        // check if it's on any attacks        for (Iterator i = attackSprites.iterator(); i.hasNext();) {            final AttackSprite aSprite = (AttackSprite)i.next();            if (aSprite.isInside(point)) {                final String[] attackStrings = aSprite.getTooltip();                java.lang.System.arraycopy(attackStrings, 0, strings, stringsIndex, attackStrings.length);                stringsIndex += 1 + aSprite.weaponDescs.size();            }        }        return strings;    }