private void addBridge(IHex hex, int exits, int altitude, int cf) { ITerrainFactory tf = Terrains.getTerrainFactory(); int bridgeElevation = altitude - hex.getLevel(); hex.addTerrain(tf.createTerrain(Terrains.BRIDGE, getBuildingTypeByCF(cf), true, (exits & 63))); hex.addTerrain(tf.createTerrain(Terrains.BRIDGE_ELEV, bridgeElevation)); hex.addTerrain(tf.createTerrain(Terrains.BRIDGE_CF, cf)); }
private void addRoad(IHex hex, int exitDirection, int type) { ITerrainFactory tf = Terrains.getTerrainFactory(); if (hex.containsTerrain(Terrains.WATER)) { hex.removeTerrain(Terrains.WATER); hex.addTerrain(tf.createTerrain(Terrains.WATER, 0)); type = 1; } hex.addTerrain(tf.createTerrain(Terrains.ROAD, type, true, (1 << exitDirection) & 63)); }
public void collapseBasement(Coords coords, IBoard board, Vector<Report> vPhaseReport) { if ((basement.get(coords) == BasementType.NONE) || (basement.get(coords) == BasementType.ONE_DEEP_NORMALINFONLY)) { System.err.println("hex has no basement to collapse"); return; } if (basementCollapsed.get(coords)) { System.err.println("hex has basement that already collapsed"); return; } Report r = new Report(2112, Report.PUBLIC); r.add(getName()); r.add(coords.getBoardNum()); vPhaseReport.add(r); System.err.println("basement " + basement + "is collapsing, hex:" + coords.toString() + " set terrain!"); board.getHex(coords).addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASE_COLLAPSED, 1)); basementCollapsed.put(coords, true); }
/** * 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)); } } } } }
hex.addTerrain(tf.createTerrain(Terrains.PAVEMENT, 1)); hex.addTerrain(tf.createTerrain(Terrains.BUILDING, type, true, exits)); hex.addTerrain(tf.createTerrain(Terrains.BLDG_CF, cf)); hex.addTerrain(tf.createTerrain(Terrains.BLDG_ELEV, height));
/** * Extends a river hex to left and right sides. * * @param hexloc The location of the river hex, from which it should get * started. * @param width The width to wich the river should extend in the direction. * So the actual width of the river is 2*width+1. * @param direction Direction too which the riverhexes should be extended. * @return Hashset with the hexes from the side. */ private static HashSet<IHex> extendRiverToSide(IBoard board, Point hexloc, int width, int direction, HashMap<IHex, Point> reverseHex) { Point current = new Point(hexloc); HashSet<IHex> result = new HashSet<IHex>(); IHex hex; hex = board.getHexInDir(current.x, current.y, direction); while ((hex != null) && (width-- > 0)) { hex.removeAllTerrains(); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.WATER, 1)); result.add(hex); current = reverseHex.get(hex); hex = board.getHexInDir(current.x, current.y, direction); } return result; }
field.removeTerrain(Terrains.WATER); if (level > 0) { field.addTerrain(f.createTerrain(Terrains.WATER, level)); field.addTerrain(f.createTerrain(Terrains.ICE, 1)); } else if (field.containsTerrain(Terrains.SWAMP)) { field.removeTerrain(Terrains.SWAMP); field.addTerrain(f.createTerrain(Terrains.ROUGH, 1)); } else { field.addTerrain(f.createTerrain(Terrains.ICE, 1));
if (basementRoll == 2) { basement.put(coords, BasementType.TWO_DEEP_FEET); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue())); } else if (basementRoll == 3) { basement.put(coords, BasementType.ONE_DEEP_FEET); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue())); } else if (basementRoll == 4) { basement.put(coords, BasementType.ONE_DEEP_NORMAL); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue())); } else if (basementRoll == 10) { basement.put(coords, BasementType.ONE_DEEP_NORMAL); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue())); } else if (basementRoll == 11) { basement.put(coords, BasementType.ONE_DEEP_HEAD); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue())); } else if (basementRoll == 12) { basement.put(coords, BasementType.TWO_DEEP_HEAD); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue())); } else { basement.put(coords, BasementType.NONE); hex.addTerrain(Terrains.getTerrainFactory().createTerrain( Terrains.BLDG_BASEMENT_TYPE, basement.get(coords).getValue()));
/** * Flood negative hex levels Shoreline / salt marshes effect Works best with * more elevation */ protected static void postProcessFlood(IHex[] hexSet, int modifier) { int n; IHex field; ITerrainFactory f = Terrains.getTerrainFactory(); for (n = 0; n < hexSet.length; n++) { field = hexSet[n]; int elev = field.getLevel() - modifier; if ((elev == 0) && !(field.containsTerrain(Terrains.WATER)) && !(field.containsTerrain(Terrains.PAVEMENT))) { field.addTerrain(f.createTerrain(Terrains.SWAMP, 1)); } else if (elev < 0) { if (elev < -4) { elev = -4; } field.removeAllTerrains(); field.addTerrain(f.createTerrain(Terrains.WATER, -elev)); field.setLevel(modifier); } } }
field.addTerrain(f.createTerrain(Terrains.ROUGH, 1)); 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));
/** * Add or set the terrain to the list based on the fields. */ private void addSetTerrain() { ITerrain toAdd = enteredTerrain(); if (((toAdd.getType() == Terrains.BLDG_ELEV) || (toAdd.getType() == Terrains.BRIDGE_ELEV)) && toAdd.getLevel() < 0) { JOptionPane.showMessageDialog(frame, Messages.getString("BoardEditor.BridgeBuildingElevError"), //$NON-NLS-1$ Messages.getString("BoardEditor.invalidTerrainTitle"), //$NON-NLS-1$ JOptionPane.ERROR_MESSAGE); return; } curHex.addTerrain(toAdd); refreshTerrainList(); repaintWorkingHex(); }
/** * Creates the Smoke Terrain Markers. * @param cloud */ public void createSmokeTerrain(SmokeCloud cloud){ for( Coords coords : cloud.getCoordsList() ){ IHex smokeHex = game.getBoard().getHex(coords); if (smokeHex != null ){ if (smokeHex.containsTerrain(Terrains.SMOKE)) { if (smokeHex.terrainLevel(Terrains.SMOKE) == SmokeCloud.SMOKE_LIGHT) { smokeHex.removeTerrain(Terrains.SMOKE); smokeHex.addTerrain(Terrains.getTerrainFactory() .createTerrain(Terrains.SMOKE, SmokeCloud.SMOKE_HEAVY)); server.getHexUpdateSet().add(coords); } } else if (cloud.getSmokeLevel() > SmokeCloud.SMOKE_NONE) { smokeHex.addTerrain(Terrains.getTerrainFactory() .createTerrain(Terrains.SMOKE, cloud.getSmokeLevel())); server.getHexUpdateSet().add(coords); } } } }
vPhaseReport.add(r); hex.removeTerrain(Terrains.GEYSER); hex.addTerrain(tf.createTerrain(Terrains.GEYSER, 1)); server.getHexUpdateSet().add(g.position); } else if (Compute.d6() == 1) { vPhaseReport.add(r); hex.removeAllTerrains(); hex.addTerrain(tf.createTerrain(Terrains.MAGMA, 2)); server.getHexUpdateSet().add(g.position); gs.remove(); vPhaseReport.add(r); hex.removeTerrain(Terrains.GEYSER); hex.addTerrain(tf.createTerrain(Terrains.GEYSER, 2)); server.getHexUpdateSet().add(g.position); g.turnsToGo = Compute.d6() - 1;
hex.setLevel(terr.getLevel()); hex.removeTerrain(Terrains.ELEVATOR); hex.addTerrain(tf.createTerrain(Terrains.ELEVATOR, elevation, true, terr.getExits())); server.getHexUpdateSet().add(c);
hex.addTerrain(tf.createTerrain(Terrains.MUD, 1)); if(hex.containsTerrain(Terrains.WATER)) { hex.removeTerrain(Terrains.WATER); || (weatherCond == PlanetaryConditions.WE_GUSTING_RAIN)) { if(hex.containsTerrain(Terrains.WATER) && !hex.containsTerrain(Terrains.RAPIDS) && (hex.depth() > 0)) { hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 1)); hex.addTerrain(tf.createTerrain(Terrains.MUD, 1)); if(hex.containsTerrain(Terrains.WATER)) { hex.removeTerrain(Terrains.WATER); hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 2)); hex.addTerrain(tf.createTerrain(Terrains.SWAMP, 1)); hex.removeTerrain(Terrains.WATER); && !hex.containsTerrain(Terrains.PAVEMENT) && !hex.containsTerrain(Terrains.ROAD)) { hex.addTerrain(tf.createTerrain(Terrains.MUD, 1)); hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 2)); hex.addTerrain(tf.createTerrain(Terrains.RAPIDS, 1));
depth = 1; hex.addTerrain(tf.createTerrain(Terrains.WATER, (depth))); elev -= (Math.abs(lake - elev) - 1); 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;
curHex.addTerrain(Terrains.getTerrainFactory().createTerrain(Terrains.RUBBLE, rubbleLevel));
/** * Apply the current Hex to the Board at the specified location. */ public void addToHex(Coords c) { if (board.contains(c)) { IHex newHex = curHex.duplicate(); IHex oldHex = board.getHex(c); newHex.setLevel(oldHex.getLevel()); int terrainTypes[] = oldHex.getTerrainTypes(); for (int i = 0; i < terrainTypes.length; i++) { int terrainID = terrainTypes[i]; if (!newHex.containsTerrain(terrainID) && oldHex.containsTerrain(terrainID)) { newHex.addTerrain(oldHex.getTerrain(terrainID)); } } board.resetStoredElevation(); board.setHex(c, newHex); } }
currentHex.addTerrain(Terrains.getTerrainFactory().createTerrain(Terrains.SWAMP, 3)); server.getHexUpdateSet().add(currentCoords);
public IBoard implantOldBoard(IGame game, int west, int north, int east, int south) { IBoard oldBoard = game.getBoard(); for (int x = 0; x < oldBoard.getWidth(); x++) { for (int y = 0; y < oldBoard.getHeight(); y++) { int newX = x+west; int newY = y+north; if (oldBoard.contains(x, y) && board.contains(newX, newY)) { IHex oldHex = oldBoard.getHex(x, y); IHex hex = board.getHex(newX, newY); hex.removeAllTerrains(); hex.setLevel(oldHex.getLevel()); int terrainTypes[] = oldHex.getTerrainTypes(); for (int i = 0; i < terrainTypes.length; i++) { int terrainID = terrainTypes[i]; if (!hex.containsTerrain(terrainID) && oldHex.containsTerrain(terrainID)) { hex.addTerrain(oldHex.getTerrain(terrainID)); } } hex.setTheme(oldHex.getTheme()); board.setHex(newX, newY, hex); board.resetStoredElevation(); } } } return board; }