Examples of ITerrainFactory


Examples of megamek.common.ITerrainFactory

    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

Examples of megamek.common.ITerrainFactory

        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;
View Full Code Here

Examples of megamek.common.ITerrainFactory

   
    /*
     * adjust the board based on weather conditions
     */
    public static void addWeatherConditions(IBoard board, int weatherCond, int windCond) {
        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

Examples of megamek.common.ITerrainFactory

    public static void generateMountain(IBoard board, int width, Coords centre,
            int height, int capStyle) {
        final int mapW = board.getWidth();
        final int mapH = board.getHeight();

        ITerrainFactory tf = Terrains.getTerrainFactory();

        for (int x = 0; x < mapW; x++) {
            for (int y = 0; y < mapH; y++) {
                Coords c = new Coords(x, y);
                int distance = c.distance(centre);
                int elev = (100 * height * (width - distance)) / width;
                elev = (elev / 100)
                        + (Compute.randomInt(100) < (elev % 100) ? 1 : 0);

                IHex hex = board.getHex(c);

                if (elev >= height - 2) {
                    switch (capStyle) {
                        case MapSettings.MOUNTAIN_SNOWCAPPED:
                            hex.setTheme("snow");
                            break;
                        case MapSettings.MOUNTAIN_VOLCANO_ACTIVE:
                        case MapSettings.MOUNTAIN_VOLCANO_DORMANT:
                            hex.setTheme("lunar");
                            break;
                        case MapSettings.MOUNTAIN_LAKE:
                            int lake = (width / 4);
                            int depth = ((lake - distance) + 1);
                            if (depth < 1) { // eliminates depth 0 water
                                depth = 1;
                            }
                            hex.addTerrain(tf.createTerrain(Terrains.WATER,
                                    (depth)));
                            elev -= (Math.abs(lake - elev) - 1);
                            break;
                    }
                }
                if (elev == height) {
                    // for volcanoes, invert the peak
                    switch (capStyle) {
                        case MapSettings.MOUNTAIN_VOLCANO_ACTIVE:
                            hex.removeAllTerrains();
                            hex.addTerrain(tf.createTerrain(Terrains.MAGMA, 2));
                            elev -= 2;
                            break;
                        case MapSettings.MOUNTAIN_VOLCANO_DORMANT:
                            hex.removeAllTerrains();
                            hex.addTerrain(tf.createTerrain(Terrains.MAGMA, 1));
                            elev -= 2;
                            break;
                        case MapSettings.MOUNTAIN_VOLCANO_EXTINCT:
                            hex.setTheme("lunar");
                            elev -= 2;
View Full Code Here

Examples of megamek.common.ITerrainFactory

            geysers = new Vector<GeyserInfo>();
            findGeysers();
        }

        Report r;
        ITerrainFactory tf = Terrains.getTerrainFactory();
        for (Iterator<GeyserInfo> gs = geysers.iterator(); gs.hasNext();) {
            GeyserInfo g = gs.next();
            if (g.turnsToGo > 0) {
                g.turnsToGo--;
            } else {
                IHex hex = server.getGame().getBoard().getHex(g.position);
                if (hex.terrainLevel(Terrains.GEYSER) == 2) {
                    r = new Report(5275);
                    r.add(g.position.getBoardNum());
                    vPhaseReport.add(r);
                    hex.removeTerrain(Terrains.GEYSER);
                    hex.addTerrain(tf.createTerrain(Terrains.GEYSER, 1));
                    server.sendChangedHex(g.position);
                } else if (Compute.d6() == 1) {
                    if (hex.terrainLevel(Terrains.GEYSER) == 3) {
                        r = new Report(5285);
                        r.add(g.position.getBoardNum());
                        vPhaseReport.add(r);
                        hex.removeAllTerrains();
                        hex.addTerrain(tf.createTerrain(Terrains.MAGMA, 2));
                        server.sendChangedHex(g.position);
                        gs.remove();
                        for (Enumeration<Entity> e = server.getGame()
                                .getEntities(g.position); e.hasMoreElements();) {
                            server.doMagmaDamage(e.nextElement(), true);
                        }
                    } else {
                        r = new Report(5280);
                        r.add(g.position.getBoardNum());
                        vPhaseReport.add(r);
                        hex.removeTerrain(Terrains.GEYSER);
                        hex.addTerrain(tf.createTerrain(Terrains.GEYSER, 2));
                        server.sendChangedHex(g.position);
                        g.turnsToGo = Compute.d6() - 1;
                    }
                }
            }
View Full Code Here

Examples of megamek.common.ITerrainFactory

            // Load the test board.
            board.load(TestBoardEncoder.getTestInputStream());

            // Add some infernos and fires.
            ITerrainFactory f = Terrains.getTerrainFactory();
            coords = new Coords(5, 3);
            board.addInfernoTo(coords, InfernoTracker.STANDARD_ROUND, 1);
            board.getHex(coords).addTerrain(f.createTerrain(Terrains.FIRE, 1));
            coords = new Coords(8, 6);
            board.addInfernoTo(coords, InfernoTracker.STANDARD_ROUND, 1);
            board.getHex(coords).addTerrain(f.createTerrain(Terrains.FIRE, 2));
            coords = new Coords(4, 10);
            board.getHex(coords).addTerrain(f.createTerrain(Terrains.FIRE, 2));
            coords = new Coords(7, 13);
            board.addInfernoTo(coords, InfernoTracker.STANDARD_ROUND, 2);
            board.getHex(coords).addTerrain(f.createTerrain(Terrains.FIRE, 2));
            coords = new Coords(11, 14);
            board.getHex(coords).addTerrain(f.createTerrain(Terrains.FIRE, 2));

            // Save a copy of the board before XML encoding.
            boos.writeObject(board);
            boos.close();
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.