Package megamek.common

Examples of megamek.common.IHex


    /**
     * Burning woods, with chance to be burnt down already
     */
    protected static void postProcessForestFire(IHex[] hexSet, int modifier) {
        int n;
        IHex field;
        int level, newlevel;
        int severity;
        ITerrainFactory f = Terrains.getTerrainFactory();
        for (n = 0; n < hexSet.length; n++) {
            field = hexSet[n];
            level = field.terrainLevel(Terrains.WOODS);
            if (level != ITerrain.LEVEL_NONE) {
                severity = Compute.randomInt(5) - 2 + modifier;
                newlevel = level - severity;

                if (newlevel <= level) {
                    field.removeTerrain(Terrains.WOODS);
                    if (newlevel <= 0) {
                        field.addTerrain(f.createTerrain(Terrains.ROUGH, 1));
                    } else {
                        field.addTerrain(f.createTerrain(Terrains.WOODS,
                                newlevel));
                        field.addTerrain(f.createTerrain(Terrains.FIRE, 1));
                    }
                }
            }
        }
    }
View Full Code Here


     * Dries up all bodies of water by 1-3 levels. dried up water becomes swamp
     * then rough
     */
    protected static void postProcessDrought(IHex[] hexSet, int modifier) {
        int n;
        IHex field;
        int level, newlevel;
        int severity = 1 + Compute.randomInt(3) + modifier;
        if (severity < 0)
            return;
        ITerrainFactory f = Terrains.getTerrainFactory();
        for (n = 0; n < hexSet.length; n++) {
            field = hexSet[n];
            if (field.containsTerrain(Terrains.SWAMP)) {
                field.removeTerrain(Terrains.SWAMP); // any swamps are dried
                                                        // up to hardened mud
                if (field.terrainsPresent() == 0 && Compute.randomInt(100) < 30) {
                    // if no other terrains present, 30% chance to change to
                    // rough
                    field.addTerrain(f.createTerrain(Terrains.ROUGH, 1));
                }
            }
            level = field.terrainLevel(Terrains.WATER);
            if (level != ITerrain.LEVEL_NONE) {
                newlevel = level - severity;
                field.removeTerrain(Terrains.WATER);
                if (newlevel == 0) {
                    field.addTerrain(f.createTerrain(Terrains.SWAMP, 1));
                } else if (newlevel < 0) {
                    field.addTerrain(f.createTerrain(Terrains.ROUGH, 1));
                } else {
                    field.addTerrain(f.createTerrain(Terrains.WATER, newlevel));
                }
                if (level > severity)
                    newlevel = severity;
                else
                    newlevel = level;

                field.setElevation(field.getElevation() - newlevel);
            }
        }
    }
View Full Code Here

        boolean lower = false;
        int count = 0;
        for (int dir = 0; dir < 6; dir++) {
            Coords t = c.translated(dir);
            if (board.contains(t)) {
                IHex hex = board.getHex(t);
                int el = hex.getElevation();
                if (el > elevation) {
                    lower = true;
                } else if (el < elevation) {
                    higher = true;
                } else {
View Full Code Here

        int elevation = board.getHex(c).getElevation();
        for (int dir = 0; dir < 6; dir++) {
            Coords t = c.translated(dir);
            if (board.contains(t) && !ignore.contains(t)) {
                if (hexCouldBeCliff(board, t)) {
                    IHex hex = board.getHex(t);
                    int el = hex.getElevation();
                    if (el == elevation) {
                        findCliffNeighbours(board, t, candidate, ignore);
                    }
                } else
                    ignore.add(t);
View Full Code Here

                        elevation--;
                    else
                        elevation++;
                    for (Iterator<Coords> e = candidate.iterator(); e.hasNext();) {
                        c = e.next();
                        IHex hex = board.getHex(c);
                        hex.setElevation(elevation);
                    }
                }
                candidate.clear();
            }
        }
View Full Code Here

        ITerrainFactory tf = Terrains.getTerrainFactory();
       
        for (int x = 0; x < board.getWidth(); x++) {
            for (int y = 0; y < board.getHeight(); y++) {
                Coords c = new Coords(x, y);
                IHex hex = board.getHex(c);
               
                //moderate rain - mud in clear hexes, depth 0 water, and dirt roads (not implemented yet)
                if(weatherCond == PlanetaryConditions.WE_MOD_RAIN) {
                    if(hex.terrainsPresent() == 0 || (hex.containsTerrain(Terrains.WATER) && hex.depth() == 0)) {
                        hex.addTerrain(tf.createTerrain(Terrains.MUD, 1));
                        if(hex.containsTerrain(Terrains.WATER)) {
                            hex.removeTerrain(Terrains.WATER);
                        }
                    }
                }  
               
                //heavy rain - mud in all hexes except buildings, depth 1+ water, and non-dirt roads
                //rapids in all depth 1+ water
                if(weatherCond == PlanetaryConditions.WE_HEAVY_RAIN) {
                    if(hex.containsTerrain(Terrains.WATER) && !hex.containsTerrain(Terrains.RAPIDS) && hex.depth() > 0) {
                        hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 1));
                    }
                    else if(!hex.containsTerrain(Terrains.BUILDING) && !hex.containsTerrain(Terrains.ROAD)) {
                        hex.addTerrain(tf.createTerrain(Terrains.MUD, 1));
                        if(hex.containsTerrain(Terrains.WATER)) {
                            hex.removeTerrain(Terrains.WATER);
                        }
                    }
                }
               
                //torrential downpour - mud in all hexes except buildings, depth 1+ water, and non-dirt roads
                //torrent in all depth 1+ water, swamps in all depth 0 water hexes
                if(weatherCond == PlanetaryConditions.WE_DOWNPOUR) {
                    if(hex.containsTerrain(Terrains.WATER) && !(hex.terrainLevel(Terrains.RAPIDS) > 1) && hex.depth() > 0) {
                        hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 2));
                    }
                    else if(hex.containsTerrain(Terrains.WATER)) {
                        hex.addTerrain(tf.createTerrain(Terrains.SWAMP, 1));
                        hex.removeTerrain(Terrains.WATER);
                    }
                    else if(!hex.containsTerrain(Terrains.BUILDING) && !hex.containsTerrain(Terrains.ROAD)) {
                        hex.addTerrain(tf.createTerrain(Terrains.MUD, 1));
                    }
                }
               
                //check for rapids/torrents created by wind
                if(windCond > PlanetaryConditions.WI_MOD_GALE
                        && hex.containsTerrain(Terrains.WATER) && hex.depth() > 0) {
                   
                    if(windCond > PlanetaryConditions.WI_STORM) {
                        if(!(hex.terrainLevel(Terrains.RAPIDS) > 1)) {
                            hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 2));
                        }
                    } else {
                        if(!hex.containsTerrain(Terrains.RAPIDS)) {
                            hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 1));
                        }
                    }                  
                }
            }
        }
View Full Code Here

            return new ToHitData(TargetRoll.IMPOSSIBLE,
                    "Target not at same elevation");
        }

        // Check terrain.
        IHex hex = game.getBoard().getHex(ae.getPosition());
        if (hex.containsTerrain(Terrains.WOODS)
                || hex.containsTerrain(Terrains.JUNGLE)
                || hex.containsTerrain(Terrains.ROUGH)
                || hex.containsTerrain(Terrains.RUBBLE)
                || hex.containsTerrain(Terrains.FUEL_TANK)
                || hex.containsTerrain(Terrains.BUILDING)) {
            return new ToHitData(TargetRoll.IMPOSSIBLE,
                    "Not a clear or pavement hex.");
        }

        // Can't target woods or a building with a thrash attack.
View Full Code Here

                                    && ae.getOwner().getTeam() != Player.TEAM_NONE
                                    && ae.getOwner().getTeam() == ((Entity)target).getOwner().getTeam())))
                return new ToHitData(TargetRoll.IMPOSSIBLE, "A friendly unit can never be the target of a direct attack.");
        }

        IHex attHex = game.getBoard().getHex(ae.getPosition());
        IHex targHex = game.getBoard().getHex(target.getPosition());
        final int attackerElevation = ae.getElevation() + attHex.getElevation();
        // final int attackerHeight = attackerElevation + ae.getHeight();
        final int targetElevation = target.getElevation() + targHex.getElevation();
        // final int targetHeight = targetElevation + target.getHeight();
        ToHitData toHit;

        // non-mechs can't grapple or be grappled
        if ((!(ae instanceof BipedMech) && !(ae instanceof Protomech)) || (!(target instanceof Mech) && !(target instanceof Protomech))) {
View Full Code Here

        if (!minimized) {
            roadHexIndexes.removeAllElements();
            Graphics gg = terrainBuffer.getGraphics();
            for (int j = 0; j < m_game.getBoard().getWidth(); j++) {
                for (int k = 0; k < m_game.getBoard().getHeight(); k++) {
                    IHex h = m_game.getBoard().getHex(j, k);
                    if (dirtyMap || dirty[j / 10][k / 10]) {
                        gg.setColor(terrainColor(h, j, k));
                        paintCoord(gg, j, k, true);
                    }
                    addRoadElements(h, j, k);
                }
            }
            // draw backbuffer
            g.drawImage(terrainBuffer, 0, 0, this);

            if (firstLOS != null)
                paintSingleCoordBorder(g, firstLOS.x, firstLOS.y, Color.red);
            if (secondLOS != null)
                paintSingleCoordBorder(g, secondLOS.x, secondLOS.y, Color.red);

            if (!roadHexIndexes.isEmpty())
                paintRoads(g);

            if (SHOW_NO_HEIGHT != heightDisplayMode) {
                for (int j = 0; j < m_game.getBoard().getWidth(); j++) {
                    for (int k = 0; k < m_game.getBoard().getHeight(); k++) {
                        IHex h = m_game.getBoard().getHex(j, k);
                        paintHeight(g, h, j, k);
                    }
                }
            }
View Full Code Here

        g.setColor(oldColor);
        if (!minimized) {
            roadHexIndexes.removeAllElements();
            for (int j = 0; j < m_game.getBoard().getWidth(); j++) {
                for (int k = 0; k < m_game.getBoard().getHeight(); k++) {
                    IHex h = m_game.getBoard().getHex(j, k);
                    g.setColor(terrainColor(h, j, k));
                    paintCoord(g, j, k, true);
                }
            }

            if (firstLOS != null)
                paintSingleCoordBorder(g, firstLOS.x, firstLOS.y, Color.red);
            if (secondLOS != null)
                paintSingleCoordBorder(g, secondLOS.x, secondLOS.y, Color.red);

            if (!roadHexIndexes.isEmpty())
                paintRoads(g);

            if (SHOW_NO_HEIGHT != heightDisplayMode) {
                for (int j = 0; j < m_game.getBoard().getWidth(); j++) {
                    for (int k = 0; k < m_game.getBoard().getHeight(); k++) {
                        IHex h = m_game.getBoard().getHex(j, k);
                        paintHeight(g, h, j, k);
                    }
                }
            }
View Full Code Here

TOP

Related Classes of megamek.common.IHex

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.